forked from HPR/hpr_hub
1001 lines
3.3 MiB
MySQL
1001 lines
3.3 MiB
MySQL
|
(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\'s Giant Glass Balls<br />\r\n<a href=\"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\'s a triple whammy! 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\'m a bit down about working alone on <code>racket2nix</code>, you\'re interpreting me wrong! I didn\'t expect any feedback at all from the small to non-existent racket/nix intersection, but it turns out the intersection is larger than I thought, and I\'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\'s not about orgies...</li>\r\n<li>x1101: Liked it. A little slow.</li>\r\n<li>Thaj: It surprised me, I didn\'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\'s Midnight Moonshine</li>\r\n</ul>\r\n<h2 id=\"things-we-talked-about\">THINGS WE TALKED ABOUT</h2>\r\n<p>We discuss the upsides and downsides of affinity groups. Pokey wonders why terminology for simple things are changed in sci-fi stories. How exactly do population and economics work together?</p>\r\n<h2 id=\"our-next-audiobook\">OUR NEXT AUDIOBOOK</h2>\r\n<p>Blood Witness by David Hitt - <a href=\"https://scribl.com/books/PA513/blood-witness\" class=\"uri\">https://scribl.com/books/PA513/blood-witness</a></p>\r\n<h2 id=\"next-recording\">NEXT RECORDING</h2>\r\n<p>We are currently working through a backlog of pre-recorded episodes. Once this is completed we will restart the Audiobook Club again. If you want to be notified when this happens please let us know via the HPR Mailing List \'hpr at hackerpublicradio dot org\'.</p>\r\n<h2 id=\"further-recommendations\">FURTHER RECOMMENDATIONS</h2>\r\n<p>Nothing this time, well except for the typical Star Wars reference...and Star Trek, and comics.</p>\r\n<h2 id=\"feedback\">FEEDBACK</h2>\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. Please leave a few words in the episode\'s comment section. As always; remember to visit the HPR contribution page HPR could really use your help right now. <a href=\"https://hackerpublicradio.org/contribute.php\" class=\"uri\">https://hackerpublicradio.org/contribute.php</a></p>\r\n<p><em>Sincerely,</em><br />\r\n<em>The HPR_AudioBookClub</em></p>\r\n<p>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</p>\r\n<h2 id=\"our-audio\">OUR AUDIO</h2>\r\n<p>This episode was processed using Audacity <a href=\"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\'s not good at making everyone\'s voice the same volume. We\'re pretty happy with the way this month\'s show turned out, so we\'d like to share our editing process and settin
|
|||
|
(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\'t take care of your body, where will you live?" This is a very pertinent question that can open up a discussion of how to achieve a better level of health and age gracefully. This show will kick off a series that will explore various topics in how to get good medical information and improve your health.</p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.webmd.com/\" class=\"uri\">https://www.webmd.com/</a></li>\r\n<li><a href=\"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><a href=\"https://medlineplus.gov/evaluatinghealthinformation.html\" class=\"uri\">https://medlineplus.gov/evaluatinghealthinformation.html</a></li>\r\n<li><a href=\"https://medlineplus.gov/understandingmedicalresearch.html\" class=\"uri\">https://medlineplus.gov/understandingmedicalresearch.html</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://theincidentaleconomist.com/wordpress/about/about-aaron/\" class=\"uri\">https://theincidentaleconomist.com/wordpress/about/about-aaron/</a></li>\r\n<li><a href=\"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\'s show</a></li>\r\n<li><a href=\"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\'s cache of BAD Photos mostly of Hunt Dogs (some cute girls with dogs too) <a href=\"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 - <a href=\"https://en.wikipedia.org/wiki/Aperture\" class=\"uri\">https://en.wikipedia.org/wiki/Aperture</a></li>\r\n<li>ISO - <a href=\"https://en.wikipedia.org/wiki/Film_speed\" class=\"uri\">https://en.wikipedia.org/wiki/Film_speed</a></li>\r\n<li>Shutter Speed - <a href=\"https://en.wikipedia.org/wiki/Film_speed\" class=\"uri\">https://en.wikipedia.org/wiki/Film_speed</a></li>\r\n</ul>\r\n<p>Have some fun. Take some photos and do a HPR episode.</p>',209,0,0,'CC-BY-SA','Photography, Cameras, ISO, Aperture, Shutter Speed',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\'s just all the commands in the episode, listed one after another.\r\n</p>\r\n\r\n<p>\r\nGet changes from the remote repo:\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\'t work in either Wine or a virtual machine environment. Specifically Autodesk Fusion 360.</p>\r\n<h3 id=\"some-challenges\">Some Challenges</h3>\r\n<ul>\r\n<li><p>No longer have Windows install media. I was able to download a Lenovo recovery USB image.</p>\r\n<p><a href=\"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>I didn\'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\'t want to have to start all over on that. I hoped that restoring my home directory would take care of that.</p></li>\r\n</ul>\r\n<h3 id=\"the-procedure\">The Procedure</h3>\r\n<ol type=\"1\">\r\n<li><p>Backed up my home directory, just in case.</p></li>\r\n<li><p>Replaced the hard drive.</p></li>\r\n<li><p>Tried to boot from Lenovo Windows thumb drive.</p></li>\r\n<li><p>Found that the BIOS was set to legacy mode, so reset BIOS to factory.</p></li>\r\n<li><p>Told the installer to use the entire drive.</p></li>\r\n<li><p>Went through the entire Windows install and update process.</p></li>\r\n<li><p>Used the instructions provided by Mongo to resize Windows filesystem size.</p></li>\r\n<li><p>Used the instructions provided by Mongo to turn of fast boot.</p></li>\r\n<li><p>Used the instructions provided by Mongo to turn of Secure Boot in BIOS.</p></li>\r\n<li><p>Booted from Xubuntu 16.04 thumb drive.</p></li>\r\n<li><p>Did Xubuntu install as normal, choosing the install type of installing along side Windows Boot Manager.</p></li>\r\n<li><p>Installed all of the updates.</p></li>\r\n<li><p>Mounted the old hard drive with a USB drive enclosure, which was a bit of a challenge because that drive was encrypted. The drive has 2 partitions. A small boot partition and then a large LUKS encrypted partition.</p>\r\n<p>This is a procedure that can be used to mount such a partition.</p>\r\n<ul>\r\n<li><p>First you must decrypt the partition and map it to a device. This can be done with the following command (assuming the partition mount point is /dev/sdb2):</p>\r\n<pre><code>cryptsetup luksOpen /dev/sdb2 cryptdrive</code></pre>\r\n<p>This command will map the partition to the following device:</p>\r\n<pre><code>/dev/mapper/cryptdrive</code></pre></li>\r\n<li><p>Normally you could then mount the filesystem as follows:</p>\r\n<pre><code>mount /dev/mapper/cryptdrive /mnt</code></pre></li>\r\n<li><p>However, in this case the encrypted filesystem is actually an LVM volume that contains two volume groups that made up the partitions of the previous Linux install, so you can\'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\'t setup like 4 zones and expect to trouble shoot anything. I used my Android to do a lot of tweaking. I also want to sort out "night" mode config so after night mode kicks in a different config is automatically applied.</p>\r\n<p>Use low quality for motion detection and drop frame rate of cam to lower than max of ZM for little to no smearing and I also set "Alarm Frame Count to 2" and "overload ignore frame count to 4" but I think it\'s more about Alarm Frame Count..I can\'t be sure..</p>\r\n<p>Explanation of overload ignore frame count<br />\r\nReport this post Quote<br />\r\nPost by bb99 » Thu May 10, 2012 5:22 pm</p>\r\n<p>For sudden changes to the environment, no better tool then Overload Frame Ignore Count. Your fps determines these settings but at 10 fps with Overload Frame Ignore Count set to 4, it only ignores .4 seconds. In other words if a drastic change to the lighting (such as a car with headlights on in darkness) passes within the monitors view it will ignore the number of frames you specify before processing for motion detection.</p>\r\n<h3 id=\"alarm-frame-count\">Alarm Frame Count</h3>\r\n<p>This option allows you to specify how many consecutive alarm frames must occur before an alarm event is generated. The usual, and default, value is 1 which implies that any alarm frame will cause or participate in an event. You can enter any value up to 16 here to eliminate bogus events caused perhaps by screen flickers or other transients. Values over 3 or 4 are unlikely to be useful however. Please note that if you have statistics recording enabled then currently statistics are not recorded for the first ‘Alarm Frame Count’-1 frames of an event. So if you set this value to 5 then the first 4 frames will be missing statistics whereas the more usual value of 1 will ensure that all alarm frames have statistics recorded.</p>\r\n<p><a href=\"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>Windows software to get basic idea ( install face plugin )<br />\r\n<a href=\"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><a href=\"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>Robot vaccuum sweepers</li>\r\n<li>Children make amazing pets</li>\r\n<li><p>RoomBAAAS</p></li>\r\n<li>Joe Ress asks for Linux 2018 predictions</li>\r\n<li>Is the traditional PC market fading?</li>\r\n<li><p>Linux & mobile devices<br />\r\n<a href=\"https://ubports.com/\" class=\"uri\">https://ubports.com/</a></p></li>\r\n<li>What will it take for an opensource mobile device to gain market share?</li>\r\n<li><p>Librem5 - <a href=\"https://puri.sm/shop/librem-5/\" class=\"uri\">https://puri.sm/shop/librem-5/</a></p></li>\r\n<li><p>More opensource mobile device discussion</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR new year show 2017',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\'re in intermittent or high-latency mesh networks</p></li>\r\n<li><p>And in passing: <a href=\"https://twister.net.co/\" class=\"uri\">https://twister.net.co/</a></p></li>\r\n<li><p>BitTorrent + blockchain + DHT social networking, not entirely dissimilar to SSB<br />\r\n<a href=\"https://www.bitmessage.org/\" class=\"uri\">https://www.bitmessage.org/</a></p></li>\r\n<li><p>clacke was wrong, it doesn\'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\'s Shows</h2>\r\n<table id=\"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 <tr valign=\"top\">\r\n <td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2760\" target=\"_blank\">What is VNF</a></td>\r\n <td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\r\n </tr>\r\n <tr valign=\"top\">\r\n <td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2761\" target=\"_blank\">HPR Community News for February 2019</a></td>\r\n <td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\r\n </tr>\r\n <tr valign=\"top\">\r\n <td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2762\" target=\"_blank\">What You Really Are</a></td>\r\n <td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\r\n </tr>\r\n <tr valign=\"top\">\r\n <td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2763\" target=\"_blank\">Deepgeek explains SPF records</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=2764\" target=\"_blank\">2764</a></strong></td>\r\n <td>Thu</td>\r\n <td>2019-03-07</td>\r\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2764\" target=\"_blank\">Personal password algorithms</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=2765\" target=\"_blank\">2765</a></strong></td>\r\n <td>Fri</td>\r\n <td>2019-03-08</td>\r\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2765\" target=\"_blank\">My YouTube Subscriptions #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\'s Shows</h2>\n<small><table id=\"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<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2781\" target=\"_blank\">HPR Community News for March 2019</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2782\" target=\"_blank\">Never stop gaming</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2783\" target=\"_blank\">The Windows \"Shutdown.exe\" Command Explained</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2784\" target=\"_blank\">The Yamaha Disklavier</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2785\" target=\"_blank\">What is uCPE</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2786\" target=\"_blank\">My YouTube Channels</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=2787\" target=\"_blank\">2787</a></strong></td>\n<td>Tue</td>\n<td>2019-04-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2787\" target=\"_blank\">NodeJS Part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2788\" target=\"_blank\">Looping in Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr valign=\"top\">\n<td><strong><a href=\"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><a href=\"https://hackerpublicradio.org/eps.php?id=2789\" target=\"_blank\">Pacing In Storytelling</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=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\'s Journey, 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\'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</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2526/full_shownotes.epub\">ePub version of these notes</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2526/full_shownotes.pdf\">PDF version of these notes</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2526/awk10_ex1.awk\">awk10_ex1.awk</a></li>\r\n<li><a href=\"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','Awk utility,Awk language,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\'s in my podcatcher',592,'listing of podcasts I listen to ','<p>List of podcasts as read directly from my podcast player/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\'s mistake</h2>\r\n<p>A minor review of the 2017 event leaves a bitter taste in the mouth of the Big Jessie.</p>\r\n<h2 id=\"who-is-the-event-for\">Who is the event for?</h2>\r\n<p>Kevie lists various groups of people who might be interested in going. Dave adds a couple more. So does Andrew. The upshot is: anyone human. Oh, and guide dogs. But probably not children after 19: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\'s quieter.</p>\r\n<h2 id=\"tactical-chunder\">Tactical chunder</h2>\r\n<p>Dave is reminded - for a second time - about his mishap. Andrew decides to go into nauseating (pardon the pun) detail.</p>\r\n<h2 id=\"how-will-you-find-us\">How will you find us?</h2>\r\n<p>Some of us will be wearing Podcrawl t-shirts, although the company that originally produced the t-shirts sadly has gone out of business.</p>\r\n<p>Andrew keeps Ken Fallon happy by suggesting that listeners record a response to this show with any suggestions about recording at live events.</p>\r\n<p>Kevie tells us where the event will be (see the top of the notes)</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\'ll be at any time.</p>\r\n<p>Non-techy people are welcome. Cigars will be provided.</p>\r\n<p>If you\'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\'re coming into Glasgow <strong>before</strong> 18:00, we\'d love to meet up with you beforehand. We believe that all three of us (plus Dave\'s good lady) will be there from early/mid afternoon.</p>\r\n<h2 id=\"contact-us\">Contact Us</h2>\r\n<p>You can contact all three of us at the same time via tuxjam@otherside.network - let us know you\'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\'s Email platform to Office 365. As a cross platform slider with a foot in each major operating system I decided to give you my first impressions of the new platform (and upset the GNU-purists) with my review.</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\'s even two and a half years ago, back in late 2015.</p>\r\n<p>Updated recommendation! Back in #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\'ll put them up there!</p>\r\n<p>In this episode I\'m talking about how I\'ve set up <a href=\"https://www.sparkleshare.org/\">SparkleShare</a> (web site currently down, try the <a href=\"https://web.archive.org/web/20180320114552/https://www.sparkleshare.org/\">archived site</a> if it\'s still down when you\'re reading this) and <a href=\"https://about.gitlab.com/features/pages/\">GitLab Pages</a> to allow my dad to tinker with a static web site locally on his machine and automatically get the changes up on the official URL without having to bother with any manual steps (at least on the happy path).</p>\r\n<p>Errata: Oops, I said Jekyll uses Python. It uses Ruby.</p>\r\n<p>TL;DL: We have two directories, two git repos. He doesn\'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\'s happy he just copies the files over to the production directory and they go live. SparkleShare automatically pushes to <a href=\"https://gitlab.com/\">gitlab.com</a> (I didn\'t say it outright in the episode, but yeah, I\'m using the hosted service -- 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\'t worry. It\'s still relevant, and it won\'t eat your homework. I don\'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),
|
|||
|
(2539,'2018-04-26','Interview - Austin Lee',2739,'operat0r Interviews Austin Lee','<p><a href=\"https://www.youtube.com/watch?v=ktbiNmxFuZs\" class=\"uri\">https://www.youtube.com/watch?v=ktbiNmxFuZs</a></p>\r\n<p>RAW:<br />\r\n<a href=\"https://rmccurdy.com/stuff/Austen_Lee.zip\" class=\"uri\">https://rmccurdy.com/stuff/Austen_Lee.zip</a></p>\r\n',36,78,1,'CC-BY-SA','interview',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\'ll agree the difference with and without the screen is dramatic.</p>\r\n<p>The Movo is not perfect, and will not stop all wind noise on a very blustery day, but this kind of screen is essential for outdoor recording. The only editing I did on this track was a fade-in and out, and transcoding it from wav to flac (which was then transcoded at HPR into other formats).</p>\r\n<hr />\r\n<ul>\r\n<li><p>RECORDER: Tascam DR-40 Digital Recorder<br />\r\n<a href=\"https://tascam.com/product/dr-40/\" class=\"uri\">https://tascam.com/product/dr-40/</a></p></li>\r\n<li><p>WIND SCREEN: Movo WS9 Furry Outdoor Microphone Windscreen Muff (Portable Digital Recorders)<br />\r\n<a href=\"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,wind screen,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\'s a bit of how and why.','<p>I switched phones, and complained about the microphone. It probably made a greater difference that I was recording in 16 kHz Vorbis, because I was on a fresh install of Audio Recorder. Always double-check your settings, and apologies for the quality.</p>\r\n\r\n<hr/>\r\n<p>I am currently in the process of converting <a href=\"https://github.com/fractalide/fractalide-website-styx/\" target=\"_blank\">our website</a> from <a href=\"https://gohugo.io/\" target=\"_blank\">Hugo</a> to Styx.</p>\r\n\r\n<p><a href=\"https://styx-static.github.io/styx-site/\" target=\"_blank\">Styx</a> is s static site generator written entirely in the <a href=\"https://nixos.org/nix/\" target=\"_blank\">Nix</a> language. It is able to figure out exactly what pages need to be rebuilt depending on what you changed in your page source and data sources, and all intermediate results are stored in the Nix store.</p>\r\n\r\n<p>The parsing of <a href=\"https://www.methods.co.nz/asciidoc/\" target=\"_blank\">AsciiDoc</a> and <a href=\"https://fletcherpenney.net/multimarkdown/\">(multi)Markdown</a> is done by external tools, but the templating and layouts is all Nix.</p>\r\n\r\n<p>I thought I may have dreamed the bit about <a href=\"https://nest.pijul.com/pmeunier/nix-rust\" target=\"_blank\">carnix</a> or <a href=\"https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/rust/default.nix\" target=\"_blank\">buildRustPackage</a> parsing TOML within Nix, because I couldn’t find any evidence of them ever having done that. But then I discovered it was in <a href=\"https://github.com/mozilla/nixpkgs-mozilla/blob/master/lib/parseTOML.nix\" target=\"_blank\">nixpkgs-mozilla</a> I had seen it! That’s Mozilla’s overlay for nixpkgs, which makes Rust Nightly always available in Nix, so it’s kind of Nix’s <a href=\"https://www.rustup.rs/\" target=\"_blank\">rustup</a> equivalent. So yeah, I guess I had dreamed who did it, but not that <em>somebody</em> did it. :-)</p>\r\n',311,0,0,'CC-BY-SA','nix, styx, static site generator',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\'s how','<h1 id=\"how-i-prepared-episode-2493-youtube-subscriptions---update\">How I prepared episode 2493: YouTube Subscriptions - update</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>In show <a href=\"https://hackerpublicradio.org/eps.php?id=2493\" title=\"YouTube Subscriptions - update\">2493</a> I listed a number of the YouTube channels I watch. Some of what I did to prepare the notes was to cut and paste information from YouTube pages, but the basic list itself was generated programmatically. I thought the process I used might be of interest to somebody so I am describing it here.</p>\r\n<h2 id=\"components\">Components</h2>\r\n<p>I needed four components to achieve what I wanted:</p>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/subscription_manager\" title=\"YouTube Subscription Manager page\">YouTube subscription list</a> (only available in OPML format as far as I know)</li>\r\n<li>The <a href=\"https://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html\" title=\"xmlstarlet documentation\"><code>xmlstarlet</code></a> tool to parse the OPML</li>\r\n<li><a href=\"https://www.template-toolkit.org/\" title=\"Template Toolkit\">Template Toolkit</a> which I used to generate Markdown</li>\r\n<li>The <code>pandoc</code> document converter tool to generate HTML</li>\r\n</ul>\r\n<p>I will talk a little about the first three components in this episode in order to provide an overview.</p>\r\n<h2 id=\"full-length-notes\">Full-length notes</h2>\r\n<p>The full-length notes (available <a href=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">here</a>) contain details of the processes involved in building the list of channels.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>YouTube <a href=\"https://www.youtube.com/subscription_manager\"><em>Subscription Manager</em></a> page</li>\r\n<li>The <a href=\"https://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html\"><code>xmlstarlet</code></a> manual (HTML, single page)</li>\r\n<li><a href=\"https://www.template-toolkit.org/\"><em>Template Toolkit</em></a>\r\n<ul>\r\n<li><a href=\"https://www.template-toolkit.org/docs/manual/Plugins.html#section_Datafile\"><code>Template::Plugin::Datafile</code></a></li>\r\n<li><a href=\"https://www.template-toolkit.org/docs/manual/VMethods.html#method_replace\">Template Toolkit <code>replace</code> virtual method</a></li>\r\n</ul></li>\r\n<li>The <a href=\"https://pandoc.org/\"><code>pandoc</code></a> document converter</li>\r\n<li>Previous HPR shows referred to:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2202\"><em>hpr2202 :: Makers on YouTube</em></a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2493\"><em>hpr2493 :: YouTube Subscriptions - update</em></a></li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">Detailed notes</a></li>\r\n<li>Example template file: <a href=\"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,Template Toolkit',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\'t exactly fit anything you play, but reading it through might clarify how a typical game works (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\'s in my tool kit',342,'Listing of items I carry for daily use','<ul>\r\n<li>The bag is a <a href=\"https://www.ebay.com/itm/Dell-Laptop-Backpack/253469390106?hash=item3b03f3f51a:g:RL8AAOSw8GFanVvM\">Dell backpack laptop carrier</a>\r\n<ul>\r\n<li>has 5 pockets\r\n<ul>\r\n<li>2 small side pockets</li>\r\n<li>small front accessory pockets</li>\r\n<li>medium middle tool pockets</li>\r\n<li>large main pocket with interior zippered pocket the padded laptop section is well padded and roomy enough for 2 slim 15" laptops</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><a href=\"https://www.ebay.com/itm/Asus-Z45C-Laptop/142330164679?hash=item212389f5c7:g:5O4AAOSwCU1Y3AAz\">Asus Z54C (W/ 120Gb SSD/ 4Gb Ram ) laptop running Sabayon linux</a></li>\r\n<li><a href=\"https://www.ebay.com/itm/Dell-Latitude-E5570-Intel-Core-i5-2-4Ghz-8GB-Ram-500GB-HDD-Laptop/263560830328?hash=item3d5d731d78:g:jnkAAOSwC2JasSjw\">Dell 5570 laptop for work-sometimes running Win 10 enterprise/pro</a> chargers for both,</li>\r\n<li><p><a href=\"https://www.ebay.com/itm/Sony-MDR-ZX110NC-Noise-Cancelling-Headphones/252814825699?epid=17011373240&hash=item3adcf018e3:g:pgkAAOSw4shYAQgD\">Sony noise cancelling headphones</a></p></li>\r\n<li>Logitech wireless mouse</li>\r\n<li>maglite led flash light</li>\r\n<li><p><a href=\"https://www.tools-plus.com/lutz-2-in-1y.html?gclid=Cj0KCQjwqM3VBRCwARIsAKcekb0tCh30lJCOGwOzGFfqfckcc6QEk1PxKiPyuSnDs9iAQlIJC-e1Fn8aAgHpEALw_wcB\">multi tip screwdriver 1 philips, 1 flat head</a></p></li>\r\n<li><a href=\"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\">6 tip screwdriver 2x philips 2x flat head 2x nut drivers</a></li>\r\n<li><a href=\"https://www.ebay.com/itm/Impact-punch-down-tool-blade-110-66-network-wire-punch-down-cable-cat5e-cat6/121654946839?hash=item1c53332c17:g:7usAAOSwAYtWQI75\">punchdown tool</a></li>\r\n<li>shammy cloth</li>\r\n<li>folder for paperwork/ current tasks</li>\r\n<li>one subject notebook</li>\r\n<li>asstd pens & mechanical pencils</li>\r\n<li>wall wart phone charger</li>\r\n<li>micro USB cable</li>\r\n<li>Lightning USB cable</li>\r\n<li>2 6" velcro tie straps</li>\r\n<li>15\' ethernet patch cable,</li>\r\n<li>10\' ethernet patch cable</li>\r\n<li>7\' ethernet patch cable</li>\r\n<li>5\' ethernet patch cable</li>\r\n<li>2x 3\' 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\' HDMI cable</li>\r\n<li>Display port to DVI-D adapter</li>\r\n<li>digital voice recorder</li>\r\n<li>portable powerpack/charger (gimmie from Wired Mag)</li>\r\n<li>2x 16GB usb thumb drives\r\n<ul>\r\n<li>1 blank</li>\r\n<li>1 portable apps tools including libre office, and wireshark</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\' telephone cord</li>\r\n<li>analogue telephone (princes style) for testing</li>\r\n<li>3 spare usb keyboards 1 spare ps/2 keyboards</li>\r\n<li>2 usb mice</li>\r\n<li>2x 6\' 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\' cotton bond rope 1/2" diameter</li>\r\n<li>50\' nylon 1/2" rope</li>\r\n<li>7\'x 8\' 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\'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=2803\" target=\"_blank\">2803</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2803\" target=\"_blank\">Update on my Raspi 3 B OpenMedia Vault and Next Cloud instances</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2804\" target=\"_blank\">2804</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2804\" target=\"_blank\">Awk Part 13: Fix-Width Field Processing</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=2805\" target=\"_blank\">2805</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2805\" target=\"_blank\">My 50th Show</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2806\" target=\"_blank\">2806</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2806\" target=\"_blank\">HPR Community News for April 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=2807\" target=\"_blank\">2807</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-05-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2807\" target=\"_blank\">Are bash local variables local?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2808\" target=\"_blank\">2808</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-05-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2808\" target=\"_blank\">Haskell function types</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=2809\" target=\"_blank\">2809</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-05-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2809\" target=\"_blank\">The Blue Oak Model License and Its One Big Gotcha</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0376.html\" target=\"_blank\">Joel D</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2810\" target=\"_blank\">2810</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2810\" target=\"_blank\">Wi-Fi on Android</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=2811\" target=\"_blank\">2811</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-05-13</td>\n<td><a href=\"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\'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=2826\" target=\"_blank\">2826</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2826\" target=\"_blank\">HPR Community News for May 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=2827\" target=\"_blank\">2827</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2827\" target=\"_blank\">Unscripted ramblings from my garage about my first CTF event</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0241.html\" target=\"_blank\">Christopher M. Hobbs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2828\" target=\"_blank\">2828</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2828\" target=\"_blank\">Writing Web Game in Haskell - Science, part 2</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=2829\" target=\"_blank\">2829</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2829\" target=\"_blank\">Discussion around fair use clips on HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0109.html\" target=\"_blank\">Various Hosts</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2830\" target=\"_blank\">2830</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2830\" target=\"_blank\">HPR NYE Show 2018-2019 part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2831\" target=\"_blank\">2831</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2831\" target=\"_blank\">Interview with Robbie Ferguson</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0370.html\" target=\"_blank\">Yannick</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2832\" target=\"_blank\">2832</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-06-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2832\" target=\"_blank\">How I got started in Linux</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0378.html\" target=\"_blank\">Shannon Wright</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2833\" target=\"_blank\">2833</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-06-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2833\" target=\"_blank\">Jeroen chats with Joep Piscaer</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2834\" target=\"_blank\">2834</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-06-13</td>\n<td><a href=\"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\'s difficult to say what is <strong>correct</strong> in an absolute way.</p>\r\n<p>For example, when I was at school we were taught that "<em>nice</em>" should not be used in written material. At that time it was becoming common to see phrases like "<em>I had a nice time</em>" meaning <em>pleasant</em> (in a bland sort of way). In my "<em>Concise Oxford Dictionary</em>" from 1976 the 6th definition, "<em>agreeable</em>" is marked "<em>colloquialism</em>", whereas today this is a common usage.</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\'m not an authority on this stuff, but I have tried to teach myself not to make these mistakes over the years. I just wanted to share what I have learnt<a href=\"#fn1\" class=\"footnoteRef\" id=\"fnref1\"><sup>1</sup></a> with some links to higher authorities.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2558/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Then:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/then\">Definition of "then"</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/then\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Than:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/than\">Definition of "than"</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/than\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Then versus Than\r\n<ul>\r\n<li>Writing Explained: <a href=\"https://writingexplained.org/then-vs-than-difference\">Then vs. Than: What’s the Difference?</a></li>\r\n<li>Grammarist: <a href=\"https://grammarist.com/usage/than-then/\">Than vs. then</a></li>\r\n<li>Merriam-Webster: <a href=\"https://www.merriam-webster.com/words-at-play/when-to-use-then-and-than\">When To Use Then and Than</a></li>\r\n</ul></li>\r\n<li>There:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/there\">Definition of "there"</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/there\">Online Etymology Dictionary</a></li>\r\n</ul></li>\r\n<li>Their:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/their\">Definition of "their"</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/their\">Online Etymology Dictionary</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>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/tenet\">Definition of "tenet"</a></li>\r\n<li><a href=\"https://www.etymonline.com/word/tenet\">Online Etymology Diction
|
|||
|
(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\'m lazy and just seem to have fallen into using the chrome browser. The Add-on I\'m going to talk about unfortunately isn\'t available for the Android operating system.</p>\r\n<p>On the Linux desktop, I use Firefox</p>\r\n<p>In the past, I\'ve dabbled with various browser add-ons but until very recently I\'ve been using no browser add-ons on the desktop.</p>\r\n<p>A browser add-on I did use and did miss was Tab groups</p>\r\n<p>Tab Groups was originally a feature built into Mozilla Firefox</p>\r\n<p>The feature was removed but maintained as an add-on until it was broken by changes in Firefox 57</p>\r\n<ul>\r\n<li><a href=\"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>A colleague at work brought the One-Tab add-on to my attention https://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\'s why !</p>\r\n\r\n<h3>From Wikipedia</h3>\r\n<quote>\r\nThe <a href=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\">General Data Protection Regulation (GDPR) (EU) 2016/679</a> is a regulation in EU law on data protection and privacy for all individuals within the European Union. It also addresses the export of personal data outside the EU. The GDPR aims primarily to give control to citizens and residents over their personal data and to simplify the regulatory environment for international business by unifying the regulation within the EU. It was adopted on 14 April 2016, and after a two-year transition period, becomes enforceable on 25 May 2018.\r\n</quote>\r\n\r\n<p>The following information is taken from the <a href=\"https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/\">Guide to the General Data Protection\r\nRegulation (GDPR)</a> from the Information Commissioners Office in the UK, which is released under a <a href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\">Open Government Licence v3.0.</a></p>\r\n\r\n<h2>Principles of the GDPR</h2>\r\n<p>Under the GDPR, the data protection principles set out the main responsibilities for organisations.<br />\r\nArticle 5 of the GDPR requires that personal data shall be:</p>\r\n<dl>\r\n<dt>a) processed lawfully, fairly and in a transparent manner in relation to individuals;</dt>\r\n<dt>b) collected for specified, explicit and legitimate purposes and not further processed in a manner that is incompatible with those purposes; further processing for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes shall not be considered to be incompatible with the initial purposes;</dt>\r\n<dt>c) adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed;</dt>\r\n<dt>d) accurate and, where necessary, kept up to date; every reasonable step must be taken to ensure that personal data that are inaccurate, having regard to the purposes for which they are processed, are erased or rectified without delay;</dt>\r\n<dt>e) kept in a form which permits identification of data subjects for no longer than is necessary for the purposes for which the personal data are processed; personal data may be stored for longer periods insofar as the personal data will be processed solely for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes subject to implementation of the appropriate technical and organisational measures required by the GDPR in order to safeguard the rights and freedoms of individuals; and</dt>\r\n<dt>f) processed in a manner that ensures appropriate security of the personal data, including protection against unauthorised or unlawful processing and against accidental loss, destruction or damage, using appropriate technical or organisational measures.</dt>\r\n</dl>\r\nArticle 5(2) requires that:\r\n<dl>\r\n<dt>the controller shall be responsible for, and be able to demonstrate, compliance with the principles.</dt>\r\n</dl>\r\n\r\n<h2>What information does the GDPR apply to?</h2>\r\n\r\n<h3>Personal data</h3>\r\n<p>The GDPR applies to ‘personal data’ meaning any information relating to an identifiable person who can be directly or indirectly identified in particular by reference to an identifier.</p>\r\n\r\n<h3>Sensitive personal data</h3>\r\n<p>Special category data is personal data which the GDPR says is more sensitive, and so needs more protection.</p>\r\n<ul>\r\n <li>race</li>\r\n <li>ethnic origin</li>\r\n <li>politics</li>\r\n <li>religion</li>\r\n <li>trade union membership</li>\r\n <li>genetics</li>\r\n <li>biometrics (where used for ID purposes)</li>\r\n <li>health</li>\r\n <li>sex life</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\'t believe it took me so long to get organised and get out the door.</p>\r\n<p>With all the rhythmic clinking sounds it sounds more like I\'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\'re wondering yes the the scones mentioned near the end of the podcast made by Mrs X were wonderful.</p>\r\n<p>Oh and one final thing on listening back to the recording one more time I just realised that for some unknown reason just after the bus noise I started whistling very softly to myself, I don\'t remember doing that at all, I must have been doing it subconsciously. I could be wrong but it sounds to me like I\'m whistling the tune “The animals march in two by two” I guess it was just the right tempo to help me round my one hour walk.</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\'s no guarantee that will still be around when you retire, and it\'s entirely out of your hands. It maybe a good bonus, but possibly it isn\'t something to rely on.</p>\r\n<p>So how do we do it?</p>\r\n<h3 id=\"they-dont-teach-you-this-stuff-in-school\">They don\'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 \'begin rebase episode\'\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\'ve spent quite a bit of it away from the home front.</p>\r\n<p>As it happens on one of those trips away my laptop running Mint Mate 18.3 LTS, based on Ubuntu 16.04LTS decided that it wouldn\'t boot as it didn\'t recognise my account, and as I had not created a Root account I could not sign in and fix the issue, which was a corrupted configuration file in the users folder.</p>\r\n<p>As luck would have it I had just downloaded the latest Ubuntu Mate 18.04 .iso to try it as a live disc, so I had a boot disc that I could use to boot the laptop and access the data to rescue all my important information which was mainly all my emails and my browser settings and bookmarks, as this is one of my travelling laptops not much of importance is permanently stored on it, so it didn\'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\'m geeky enough to carry a spare SSD or 2 in the bag. So I dug it out and installed it into the PC, which by the way is a Dell Latitude E6540 with an i5 dual core mobile chip with hyper-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\'m more traditional in my use of a PC I quickly set up the lower panel with the Advanced Mate Menu and other notification apps such as network, clock and calendar and then deleted the other panel, but obviously this is a personal preference - go with what you find comfortable.</p>\r\n<p>The next step after connecting to the local WiFi was to install any updates, which despite this release only being a few days old there were a few, but this didn\'t take long and in less t
|
|||
|
(2576,'2018-06-18','My swedish and german podcasts part 1',335,'I\'m recommending 6 podcasts in swedish and german','<ul>\r\n<li><strong>P1 Språket</strong> <a href=\"https://api.sr.se/api/rss/pod/4012\" class=\"uri\">https://api.sr.se/api/rss/pod/4012</a></li>\r\n<li><strong>P1 Vetenskapsradion Historia</strong> <a href=\"https://api.sr.se/api/rss/pod/4020\" class=\"uri\">https://api.sr.se/api/rss/pod/4020</a></li>\r\n<li><strong>Medierna i P1</strong> <a href=\"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> <a href=\"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>Europa heute</strong> <a href=\"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>Computer und Kommunikation</strong> <a href=\"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\'t seem to be working ? With this AMAZING LIFE HACK you can see the unseen</p>\r\n<p>\r\n<small>\r\nOK all it is is looking at the remote using your camera - but still...\r\n</small>\r\n</p>\r\n',30,0,1,'CC-BY-SA','remote control, life hack',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\'s cheaper than the built form this printer is not cheap, and I doubted my ability to build it. I was also unsure whether there was a real need for the capabilities of a 3D printer in my life, and whether such a purchase was justified.</p>\r\n<p>I had noticed the Chinese <a href=\"https://www.creality3d.cn/creality-cr-10-3d-printer-p00096p1.html\" title=\"Creality CR10\">Creality CR10</a> printer in the recent past, and wondered about buying one of these at about half the price of the Prusa. This is a good-sized printer which comes fully-assembled as I understand, and it has had many good reviews.</p>\r\n<p>When the <a href=\"https://www.creality3d.cn/creality-ender-3-3d-printer-p00095p1.html\" title=\"Creality Ender 3\">Creality Ender 3</a> was released in April 2018 for around half the price of the CR10 it looked worth the risk to see if I really needed a 3D printer. So I bought one (from Amazon) in June.</p>\r\n<p>As I write this (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\'ve been running it for a couple of years since I bought it at the said auction. It is the best PC I\'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\'t have a switch connect the kettle end to the PC first to reduce the risk of a short like mine. Also never assume that 2nd hand PC’s are standard case/motherboard format as you may have a problem sourcing spares if anything goes wrong as in my case. It’s not the first PC disaster I\'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\'s the end of my tale of woe. I’ll do another episode on the recent trip to the auction and my new laptops shortly. This is Tony Hughes for Hacker Public Radio signing off for now.</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\'s and had planned to upgrade the storage but this is not possible with a 2.5 inch drive as it doesn\'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\'t want to go to the expense of upgrading the mSATA drive, however as luck would have it one of my other purchases had a 256Gig mSATA drive in a 2.5 inch caddy so that was quickly swapped out and both laptops got an upgrade. More of that in another show.</p>\r\n<p>So after doing the hardware upgrade I proceeded to install Ubuntu 18.04 MATE onto the PC. The install worked flawlessly and after completion and configuring the machine to my liking everything seems to be working just fine. The battery condition for a 4 year old laptop is excellent at over 90%, however a replacement can be had on Ebay for around £30 if needed and I always factor this into any second hand laptops I buy.</p>\r\n<p>Since I got it running I\'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\'t over tax the host machine, and for Linux users it does mean you have access to that occasional bit of light weight MS software that you may need without the need to lug around 2 PC\'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\'s the best way to include them? And when might it be a mistake to even try?</p>',107,105,0,'CC-0','storytelling,plot twists,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\'re left without a flexible option to listening to podcasts.\r\n</p>\r\n<p>\r\nOn the other hand the price of Android phones have fallen to sub €50 range, and <a href=\"https://www.hema.nl/winkel/vrije-tijd-kantoor/school-kantoor/media-computer/elektronica-accessoires/bluetooth-sport-oortelefoon-(39620015)?variant=39620015\">blue tooth headsets</a> can be had for €25, there is a possibility to have the portability while keeping the cost low.\r\n</p>\r\n<p>\r\nI set out to convert the bluetooth headset to a accept generic 3.5mm sockets.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/hema-earbud-before-and-during.jpg\" /><br />\r\nA new ear bud set with crappy in ear buds, and the hacked set.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-enabled-philips-shp2500.jpg\" /><br />\r\nPlays fine with large over ear headphones.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-with-patent-pending-earbuds.jpg\" /><br />\r\nAlso with small in ear buds, complete with <a href=\"https://hackerpublicradio.org/eps.php?id=1801\">Patent Pending</a> ear identifier\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2599/motherload.jpg\" /><br />\r\nSomething to read <a href=\"https://www.amazon.com/dp/1549676938?tag=viglink20248-20\">Motherload</a>\r\n</p>\r\n',30,0,1,'CC-BY-SA','life hack, earphone, bluetooth',0,0,1),
|
|||
|
(2589,'2018-07-05','Saving Money: a response to Klaatu\'s Personal Finance Series',867,'A response to Klaatu\'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>The new toy:</p>\r\n<p>AmScope SE400-Z<br />\r\n(The microscope has a nice working height underneath it so you can get your hands and tools in there.)</p>\r\n<p>The offending chip:</p>\r\n<p><a href=\"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>Pics for the episode:</p>\r\n<p><a href=\"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\'s email address: <a href=\"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\'s blog post - <a href=\"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>Definition of orbital elements in Wikipedia - <a href=\"https://en.wikipedia.org/wiki/Orbital_elements\" class=\"uri\">https://en.wikipedia.org/wiki/Orbital_elements</a></li>\r\n<li>Units of angle in Wikipedia - <a href=\"https://en.wikipedia.org/wiki/Degree_(angle)\" class=\"uri\">https://en.wikipedia.org/wiki/Degree_(angle)</a> and <a href=\"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\'s Makefest organisers','<p>Another interview from Liverpool Makefest 2018 this time with Dan Lynch of Linux Outlaws and Floss Weekly</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://makefest.podfactory.org/\" class=\"uri\">https://makefest.podfactory.org/</a></p></li>\r\n<li><p><a href=\"https://twit.tv/shows/floss-weekly\" class=\"uri\">https://twit.tv/shows/floss-weekly</a></p></li>\r\n<li><p><a href=\"https://sixgun.org/linuxoutlaws/\" class=\"uri\">https://sixgun.org/linuxoutlaws/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Dan Lynch, Linux Outlaws, Floss Weekly',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\'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=2846\" target=\"_blank\">2846</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2846\" target=\"_blank\">HPR Community News for June 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=2847\" target=\"_blank\">2847</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2847\" target=\"_blank\">earbuds</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=2848\" target=\"_blank\">2848</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2848\" target=\"_blank\">Random numbers in 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://hackerpublicradio.org/eps.php?id=2849\" target=\"_blank\">2849</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2849\" target=\"_blank\">HPR NYE Show 2018-2019 part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2850\" target=\"_blank\">2850</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2850\" target=\"_blank\">NIST Cybersecurity Framework</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=2851\" target=\"_blank\">2851</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2851\" target=\"_blank\">An introduction to the work of fire fighters</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2852\" target=\"_blank\">2852</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2852\" target=\"_blank\">Gnu Awk - Part 16</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://hackerpublicradio.org/eps.php?id=2853\" target=\"_blank\">2853</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2853\" target=\"_blank\">Feeding the beast</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0309.html\" target=\"_blank\">folky</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2854\" target=\"_blank\">2854</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2854\" target=\"_blank\">Telling myself something In The Morning</a></td>\n<td><a href=\"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\'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=2869\" target=\"_blank\">2869</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2869\" target=\"_blank\">building a bike, following in John Kulp\'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\'s Liverpool Makefest, this time with Josh who developed 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<li><p><a href=\"https://allaboutcode.co.uk/\" class=\"uri\">https://allaboutcode.co.uk/</a></p></li>\r\n<li><p><a href=\"https://github.com/AllAboutCode\" class=\"uri\">https://github.com/AllAboutCode</a></p></li>\r\n<li><p><a href=\"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','Liverpool Makefest 2018, EduBlocks, computing, young coders',0,0,1),
|
|||
|
(2621,'2018-08-20','Liverpool Makefest 2018 - Chan\'nel Thomas a.k.a little pink maker',293,'In this episode I talk to Chan\'nel Thomas aka little pink maker','<p>In this episode recorded at Liverpool Makefest 2018 I talk to Chan\'nel Thomas aka little pink maker. 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\'t do her work the justice it deserves.</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://www.littlepinkmaker.com/about\" class=\"uri\">https://www.littlepinkmaker.com/about</a></p></li>\r\n<li><p>Mail: <a href=\"mailto:makeit@littlepinkmaker.com\">makeit@littlepinkmaker.com</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018,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>\'s documentation can be found <a href=\"https://developer.gnome.org/NetworkManager/stable/nmtui.html\">here</a>.</p>\r\n<p>You can reach me on the freenode irc network at <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\'t go into detail.</p>\r\n<p>Reading the <em>Online Etymology Dictionary</em>, one interesting point in the <a href=\"https://www.etymonline.com/word/than\" title=\"Online Etymology Dictionary: \'than\'\">page about <b><em>than</em></b></a> is that it was:</p>\r\n<blockquote>\r\n<p>Developed from the adverb <em>then</em>, and not distinguished from it by spelling until c. 1700.</p>\r\n</blockquote>\r\n<p>So, it would seem that the two words are related and historically were the same! 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<h2 id=\"problems-with-apostrophes\">Problems with apostrophes</h2>\r\n<p>Let us now examine the apostrophe, which is a punctuation mark. It is used for:</p>\r\n<ul>\r\n<li><p>Indicating that letters have been omitted, such as in a contracted form of words. For example when the phrase <b><em>they are</em></b> is contracted to <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\'s paw</em></b></p></li>\r\n<li><p>When the plural of <u>a single letter</u> (or digit) is required such as in <b><em>dot your i\'s and cross your t\'s</em></b>.</p></li>\r\n</ul>\r\n<p>There are other uses but you can look at the <a href=\"https://en.wikipedia.org/wiki/Apostrophe\" title=\"Wikipedia article on the Apostrophe\">Wikipedia</a> article for them if you want to dig deeper. I may well revisit this topic in a later show in this series.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2596/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Apostrophe\r\n<ul>\r\n<li>Wikipedia page: <a href=\"https://en.wikipedia.org/wiki/Apostrophe\">Apostrophe</a></li>\r\n<li>Cambridge Dictionary: <a href=\"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>Grammar Girl\'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>Previous episode 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</ul></li>\r\n</ul>',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,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\'t Work',392,'A response to Ken Fallon\'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\'s Trios tribulations, fun with the phone, and more.\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/2600_hertz\">https://en.wikipedia.org/wiki/2600_hertz</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Blue_box\">https://en.wikipedia.org/wiki/Blue_box</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Phreaking\">https://en.wikipedia.org/wiki/Phreaking</a></li>\r\n<li><a href=\"https://oldskoolphreak.com/\">https://oldskoolphreak.com/</a></li>\r\n<li><a href=\"https://oldskoolphreak.com/radio.html\">https://oldskoolphreak.com/radio.html</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','2600, Blue Box, Phreaking, Radio FreeK America',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\'t have a <code>setup</code> function, your application still launches, but with basic Processing defaults. Try this to start with:</p>\r\n<pre><code>void setup() {\r\n size(480,720);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your [very simple] application: an empty window that is 480 pixels wide and 720 pixels tall.</p>\r\n<p>Draw a rectangle on your canvas by invoking Processing\'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 <a href=\"https://processing.org/reference\">documentation</a> is excellent. It has examples for all functions, <em>with pictures</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\'s available for Linux, Windows, and Mac; great for cross-platform collaboration.\r\n</p>\r\n\r\n<p>\r\nThe Linux installer uses <a href=\"https://flatpak.org\" target=\"_blank\">FlatPak</a>, so you do need to install that.\r\n</p>\r\n\r\n<p>\r\nOnce installed, launch SparkleShare in the usual way. If you have no usual way, you can use this command:</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\'d share it here to save others the trouble.\r\n</p>\r\n\r\n<p>\r\nWhen moving from simple awk commands to proper awk scripts, you put a shebang line at the top of your script. 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\'t work the way you expect.</p>\r\n\r\n<p>\r\nYou must provide the <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\'m bjb. 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\'s where quilt comes in.</p>\r\n<p>Sadly, I hadn\'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\'t have to be a coder. You could use this tool to keep track of any plain-text files - recipes, todo lists, html, hpr show notes, poetry, what-have-you.</p>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>First let\'s describe what a patch is. No, first let\'s describe what source code looks like. Source code is a plain text file full of computer instructions. It is a plain text file, as opposed to a word processing file. Plain text files do not have any formatting codes or styles in them (such as which font should be used, or what colour, and so on). They just contain the characters that make up words of the content.</p>\r\n<p>A key feature of these source code files is that a new section of the file starts on a new line. The source code is almost never "reflowed" like prose might be. It is sort of like poetry - the more formal poetry, not prose poetry. There are a lot of really small sections in source code files (called "statements" and "expressions"). Most of these sections fit on one line. This is useful for the tools we\'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\'s blink\r\nwith those 555\'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\'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=2891\" target=\"_blank\">2891</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2891\" target=\"_blank\">HPR Community News for August 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=2892\" target=\"_blank\">2892</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2892\" target=\"_blank\">Stardrifter RPG Playtest Part 02</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=2893\" target=\"_blank\">2893</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2893\" target=\"_blank\">Whats in the box! Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0235.html\" target=\"_blank\">NYbill</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2894\" target=\"_blank\">2894</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2894\" target=\"_blank\">Repairing a Musical Instrument Case</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=2895\" target=\"_blank\">2895</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2895\" target=\"_blank\">The work of fire fighters, part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2896\" target=\"_blank\">2896</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2896\" target=\"_blank\">Orange PI Zero LTS version</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2897\" target=\"_blank\">2897</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-09-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2897\" target=\"_blank\">Stardrifter RPG Playtest Part 03</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=2898\" target=\"_blank\">2898</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-09-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2898\" target=\"_blank\">Modeling people 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=2899\" target=\"_blank\">2899</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2899\" target=\"_blank\">Endeavour OS</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</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\'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=2912\" target=\"_blank\">2912</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2912\" target=\"_blank\">Stardrifter RPG Playtest Part 06</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=2913\" target=\"_blank\">2913</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2913\" target=\"_blank\">Windows, SDN, and Firewalls</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0231.html\" target=\"_blank\">Beto</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2914\" target=\"_blank\">2914</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2914\" target=\"_blank\">Describing how I listen to podcasts PART 4</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=2915\" target=\"_blank\">2915</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2915\" target=\"_blank\">Intro - My Recording Setup</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2916\" target=\"_blank\">2916</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2916\" target=\"_blank\">HPR Community News for September 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=2917\" target=\"_blank\">2917</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-10-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2917\" target=\"_blank\">Stardrifter RPG Playtest Part 07</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=2918\" target=\"_blank\">2918</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-10-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2918\" target=\"_blank\">Selecting random item from weighted list</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=2919\" target=\"_blank\">2919</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-10-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2919\" target=\"_blank\">hosting software in HPR show notes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2920\" target=\"_blank\">2920</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2920\" target=\"_blank\">Better Social Media 03 - 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\'s being presented. Bad audio is going to be what causes new podcasters the most damage in subscriber numbers. An example of good audio is the true crime podcast, <a href=\"https://oneeyeopen.podbean.com/\">One Eye Open</a>, which Dave started listening to a couple of weeks ago. He also picked up a couple of other true crime podcasts as a result of listening to One Eye Open where the audio quality is so bad, that they can\'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\'s levels</h2>\r\n<p>Concentrate on your own, get others to manage theirs. If you\'re recording multiple tracks, it <em>can</em> be managed in post-production, but once it\'s been merged into a single track it\'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\'re ready to publish your final file.</p>\r\n<h2>Monitoring</h2>\r\n<p>If you\'re recording yourself, and you don\'t want to hear yourself through headphones, take the headphones off.</p>\r\n<p>If you\'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
|
|||
|
(2661,'2018-10-15','My Music Production Setup',679,'ClaudioM shares his music production setup.','<h2 id=\"previous-music-production-setup\">Previous Music Production Setup</h2>\r\n<ul>\r\n<li>Master Tracks Pro: <a href=\"https://en.wikipedia.org/wiki/Master_Tracks_Pro\" class=\"uri\">https://en.wikipedia.org/wiki/Master_Tracks_Pro</a></li>\r\n<li>Kawai K4 synthesizer: <a href=\"https://www.polynominal.com/site/studio/gear/synth/kawai-k4/kawai-k4.html\" class=\"uri\">https://www.polynominal.com/site/studio/gear/synth/kawai-k4/kawai-k4.html</a></li>\r\n<li>Apple GarageBand: <a href=\"https://en.wikipedia.org/wiki/GarageBand\" class=\"uri\">https://en.wikipedia.org/wiki/GarageBand</a></li>\r\n</ul>\r\n<h2 id=\"current-music-production-setup\">Current Music Production Setup</h2>\r\n<ul>\r\n<li>Qtractor: <a href=\"https://en.wikipedia.org/wiki/Qtractor\" class=\"uri\">https://en.wikipedia.org/wiki/Qtractor</a></li>\r\n<li>JACK: <a href=\"https://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit\" class=\"uri\">https://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit</a></li>\r\n<li>QJackCtl: <a href=\"https://en.wikipedia.org/wiki/Qjackctl\" class=\"uri\">https://en.wikipedia.org/wiki/Qjackctl</a></li>\r\n<li>Hydrogen Drum Machine: <a href=\"https://en.wikipedia.org/wiki/Hydrogen_(software)\" class=\"uri\">https://en.wikipedia.org/wiki/Hydrogen_(software)</a></li>\r\n<li>Yoshimi: <a href=\"https://en.wikipedia.org/wiki/Yoshimi_(synthesizer)\" class=\"uri\">https://en.wikipedia.org/wiki/Yoshimi_(synthesizer)</a></li>\r\n<li>Amsynth: <a href=\"https://en.wikipedia.org/wiki/Amsynth\" class=\"uri\">https://en.wikipedia.org/wiki/Amsynth</a></li>\r\n<li>Fluidsynth: <a href=\"https://en.wikipedia.org/wiki/FluidSynth\" class=\"uri\">https://en.wikipedia.org/wiki/FluidSynth</a></li>\r\n<li>WhySynth: <a href=\"https://linuxsynths.com/WhySynthBanksDemos/whysynth.html\" class=\"uri\">https://linuxsynths.com/WhySynthBanksDemos/whysynth.html</a></li>\r\n<li>QMidiArp: <a href=\"https://qmidiarp.sourceforge.net/\" class=\"uri\">https://qmidiarp.sourceforge.net/</a></li>\r\n<li>Hexter: <a href=\"https://linuxsynths.com/HexterPatchesDemos/hexter.html\" class=\"uri\">https://linuxsynths.com/HexterPatchesDemos/hexter.html</a></li>\r\n<li>Calf Plugins: <a href=\"https://en.wikipedia.org/wiki/Calf_Studio_Gear\" class=\"uri\">https://en.wikipedia.org/wiki/Calf_Studio_Gear</a></li>\r\n<li>Audacity: <a href=\"https://en.wikipedia.org/wiki/Audacity_(audio_editor)\" class=\"uri\">https://en.wikipedia.org/wiki/Audacity_(audio_editor)</a></li>\r\n</ul>\r\n<h2 id=\"notable-mentions\">Notable Mentions</h2>\r\n<ul>\r\n<li>LMMS: <a href=\"https://en.wikipedia.org/wiki/LMMS\" class=\"uri\">https://en.wikipedia.org/wiki/LMMS</a></li>\r\n</ul>\r\n<h2 id=\"linux-oriented-links\">Linux-oriented Links</h2>\r\n<ul>\r\n<li>Debian Ports page: <a href=\"https://www.ports.debian.org\" class=\"uri\">https://www.ports.debian.org</a></li>\r\n<li>Debian Ports PowerPC64: <a href=\"https://wiki.debian.org/PPC64\" class=\"uri\">https://wiki.debian.org/PPC64</a></li>\r\n<li>Fedora: <a href=\"https://getfedora.org\" class=\"uri\">https://getfedora.org</a></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','music, multimedia, audio, linux, musicproduction, foss, floss',0,0,1),
|
|||
|
(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\'s installed.','<p>This episode started out as just some thoughts on why I decided to move back to Slackware after having been away from it for a few years, and wound up being a short set of notes on the post install configuration of Slackware 14.2</p>\r\n<p>This is by no means a definitive or exhaustive in its scope. It’s just a few thoughts and tips on the post-install process that might not be completely clear to a new user.</p>\r\n<ul>\r\n<li>Website - <a href=\"https://www.slackware.com/\" class=\"uri\">https://www.slackware.com/</a></li>\r\n<li>Slackware Install Guide - <a href=\"https://docs.slackware.com/slackware:install\" class=\"uri\">https://docs.slackware.com/slackware:install</a></li>\r\n<li>Slackware Post Install Beginner’s Guide - <a href=\"https://docs.slackware.com/slackware:beginners_guide\" class=\"uri\">https://docs.slackware.com/slackware:beginners_guide</a></li>\r\n<li>Wikipedia Slackware Page - <a href=\"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, Slackware post-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\'ve worked with Slax this way before, and it\'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\'re booting. Almost every Linux distro in existence has accurate docs on the changes you may or may not need to make to your BIOS or [U]EFI in order to boot to Linux, so you can find more detail on this if you need. 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\'ve installed and also read any changes you made since the previous boot.\r\n</p>\r\n<p>It can also boot to ephemeral modes: Copy to RAM and Always Fresh. These modes act as if you\'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\'s Note</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\'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=2935\" target=\"_blank\">2935</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2935\" target=\"_blank\">The work of fire fighters, part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2936\" target=\"_blank\">2936</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2936\" target=\"_blank\">HPR Community News for October 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=2937\" target=\"_blank\">2937</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2937\" target=\"_blank\">Lord D\'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\'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=2956\" target=\"_blank\">2956</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2956\" target=\"_blank\">HPR Community News for November 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=2957\" target=\"_blank\">2957</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2957\" target=\"_blank\">Lord D\'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\'s to a file called <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\'t be afraid to create an account to subscribe to the creators. Here is my current <a href=\"https://hackerpublicradio.org/eps/hpr2720/subscription_manager.opml\">subscription_manager.opml</a> to give you some ideas.</li>\r\n<li>Export:<br />Login to <a href=\"https://www.youtube.com/subscription_manager\">https://www.youtube.com/subscription_manager</a> and at the bottom you will see the option to <strong>Export subscriptions</strong>. Save the file and alter the script to point to it.</li>\r\n<li>Download: Run the script <a href=\"https://hackerpublicradio.org/eps/hpr2720/youtube-rss.bash\">youtube-rss.bash</a></li>\r\n</ol>\r\n\r\n<h3>How it works</h3>\r\n<p>\r\nThe first part allows you to define where you want to save your files. It also allows you to set what videos to skip based on length and strings in their titles.\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\'s true state of the universe used in simulation and there\'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\'s two sets of data: real and reported. Reports are tied to time and faction. Examples are given for planets. Thus, we have <em>Planet</em>, <em>PlanetReport</em> and <em>CollatedPlanetReport</em>. First is the real entity, second is report of that entity tied in time and faction. Third one is aggregated information a faction has of given entity. In database two first ones are:</p>\r\n\r\n<pre><code>\r\nPlanet json\r\n name Text\r\n position Int\r\n starSystemId StarSystemId\r\n ownerId FactionId Maybe\r\n gravity Double\r\n SystemPosition starSystemId position\r\n deriving Show\r\n\r\nPlanetReport json\r\n planetId PlanetId\r\n ownerId FactionId Maybe\r\n starSystemId StarSystemId\r\n name Text Maybe\r\n position Int Maybe\r\n gravity Double Maybe\r\n factionId FactionId\r\n date Int\r\n deriving Show\r\n</code></pre>\r\n<p>Third one is defined as a datatype:</p>\r\n\r\n<pre><code>\r\ndata CollatedPlanetReport = CollatedPlanetReport\r\n { cprPlanetId :: Key Planet\r\n , cprSystemId :: Key StarSystem\r\n , cprOwnerId :: Maybe (Key Faction)\r\n , cprName :: Maybe Text\r\n , cprPosition :: Maybe Int\r\n , cprGravity :: Maybe Double\r\n , cprDate :: Int\r\n } deriving Show\r\n</code></pre>\r\n\r\n<p>Data from database need to be transformed before working on it. Usually it\'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\'t be finished listening until Monday, February 5th, 2019.\r\n</p>\r\n<p>\r\nOf course by then there would be 39 additional shows released, so you still wouldn\'t be finished.\r\n</p>\r\n<p>\r\nDespite all this we still don\'t have a wikipedia page. If you can, please take the time to create one for us. There is plenty of supporting information in the \"In the Press\" section of our about page.\r\n</p>\r\n<p>\r\nSo to mark the 3000th episode we are going to do nothing more than list the shows, host and summary where available.\r\n</p>\r\n<p>\r\nJust doing that alone creates a whopping 7 and a half hour episode. \r\n</p>\r\n<p>\r\nAre you l33t enough to listen to it all ?\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\'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=2978\" target=\"_blank\">2978</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2978\" target=\"_blank\">GARAGE DOOR</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=2979\" target=\"_blank\">2979</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2979\" target=\"_blank\">Bicycle Freewheel Maintenance</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=2980\" target=\"_blank\">2980</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2980\" target=\"_blank\">FLOSS Weekly 553 - Hacker Public Radio</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=2981\" target=\"_blank\">2981</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2981\" target=\"_blank\">HPR Community News for December 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=2982\" target=\"_blank\">2982</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-01-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2982\" target=\"_blank\">World of Commodore 2019 Episode 4: Bare metal c64 Emulation on Raspberry Pi</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2983\" target=\"_blank\">2983</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-01-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2983\" target=\"_blank\">my phone</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2984\" target=\"_blank\">2984</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-01-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2984\" target=\"_blank\">RHEL 8 Workstation first looks </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2985\" target=\"_blank\">2985</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-01-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2985\" target=\"_blank\">Firefox Update</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=2986\" target=\"_blank\">2986</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-01-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2986\" target=\"_blank\">Onlykey Updated</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=\
|
|||
|
(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\'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=3001\" target=\"_blank\">3001</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3001\" target=\"_blank\">HPR Community News for January 2020</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=3002\" target=\"_blank\">3002</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3002\" target=\"_blank\">World of Commodore 2019 Episode 8: Vote of thanks</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3003\" target=\"_blank\">3003</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3003\" target=\"_blank\">Hacker Public Radio 2019 2020 New Year Show Episode 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3004\" target=\"_blank\">3004</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3004\" target=\"_blank\">Fixing simple audio problems with Audacity</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://hackerpublicradio.org/eps.php?id=3005\" target=\"_blank\">3005</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-02-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3005\" target=\"_blank\">Is ActivityPub Paving The Way to Web 3.0?</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=3006\" target=\"_blank\">3006</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3006\" target=\"_blank\">Hijack Auxiliary Input of your car!</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=3007\" target=\"_blank\">3007</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-02-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3007\" target=\"_blank\">Photography 101</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3008\" target=\"_blank\">3008</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-02-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3008\" target=\"_blank\">Hacker Public Radio 2019-20 New Year Show Episode 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0265.html\" target=\"_blank\">Kevin Wisher</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3009\" target=\"_blank\">3009</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-02-13</td>\n<td><a href=\"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\'re used to word processors or graphic applications, then Scribus will probably confuse you. In this episode, Klaatu talks about the workflow of page layout, and how to do some basic tasks in Scribus.\r\n</p>\r\n\r\n<p>The example files Klaatu produces in Scribus are available at <a href=\"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>Fair warning: this episode is actually \"about\" steganography. The key you need is <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\'d to 72 DPI. Other valid setting profiles are <strong>ebook</strong>, <strong>printer</strong>, and <strong>prepress</strong>.\r\n</p>\r\n\r\n<p>\r\nTo render a version of a PDF without any raster images in it, making it cheaper and faster to print:\r\n</p>\r\n\r\n<pre><code>\r\ngs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dBATCH -dFILTERIMAGE -sOutputFile=output.pdf example.pdf\r\n</code></pre>\r\n\r\n<p>\r\nThe FILTERIMAGE option drops raster images from the file. The <strong>FILTERVECTOR</strong> option filters vector images, and <strong>FILTERTEXT</strong> filters text.\r\n</p>\r\n\r\n<p>\r\nIf <a href=\"https://hackerpublicradio.org/eps.php?id=2667\" target=\"_blank\">pdftk</a> is not available for your OS, you can use <a href=\"https://github.com/hellerbarde/stapler\" target=\"_blank\">pdf-stapler</a> instead for cutting and concatenating PDF files. It doesn\'t deal with metadata as well as pdftk does, however.</p><p>It\'s worth noting that pdftk is available as a snap package <a href=\"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\'s previous two episodes?</p>\r\n<p>If not, Klaatu reveals how to find it in this one, how to duplicate it, and what makes good steganography.</p>',78,0,0,'CC-BY-SA','steganography,message,secret decoder ring',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 <a href=\"https://hackerpublicradio.org/eps.php?id=2697\" target=\"_blank\">episode 2697</a> and <a href=\"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\'t even use the shutdown command. I use <code>poweroff</code>, which does a shutdown and poweroff.</p>\r\n\r\n<p>\r\nBoth shutdown and poweroff require root permission. On OpenIndiana, you can either use <code>sudo bash</code> or <code>pfexec bash</code> to get a root prompt.\r\n</p>\r\n\r\n<p>Some links:</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\'re writing in Haskell and convoluted news system they made.','<h2 id=\"intro\">Intro</h2>\r\n<p>News and notifications are used in the game to let the players know something noteworthy has happened. It could be discovery of a new planet or construction project finally finishing.</p>\r\n<p>All relevant information in the news is hyperlinked. If news mentions a planet, player can click the link and view current information of that planet.</p>\r\n<h2 id=\"server-interface\">Server interface</h2>\r\n<p>Server has three resources for news, although we’re concentrating only one here:</p>\r\n<pre><code>/api/message ApiMessageR GET POST\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, and looking at the properties some that worked were larger than others that didn\'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\'s free and you can throw out your work if you don\'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\'s had enough of being {A} and want to be {Z=married}\r\n\r\n{A} Reunion with old school mate makes Jack question his resolve. He leaves Jill so he can be {A}\r\n\r\n{B...Y} Plot happens. Jack does stuff, Jill does stuff. Funny? Tragic? You decide!\r\n\r\n{Z} Jack realizes at last that he\'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\'s in trouble, so she helps him evade the police.\r\n\r\n{A} Jill, horrified at her own rebellion, conforms all the more. She is dedicated to the Empire, and works diligently to hunt down Jack and his rag tag band of rebels.\r\n\r\n{B...Y} Plot happens. Action, laser guns, laser swords, nationalism, motorcycle gangs.\r\n\r\n{Z} Jill, seeing the devastation her allegiance has caused, realises that the Empire is actually Evil. She joins the rebels to fight for freedom.\r\n</code></pre>\r\n\r\n<p>\r\nNow go practice this. Soon you will be telling stories, jokes, and anecdotes that have a clear beginning, a clear conflict, and a clear ending.\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\'ve had this Pioneer RT-707 reel-to-reel tape deck for something like 10 years, but only recently started using it with enthusiasm. In this episode I talk about the tape deck, about the technology, and about my memories of using this kind of audio tape as a kid. I demonstrate playback of one of my parents\' 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\'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=3021\" target=\"_blank\">3021</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-03-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3021\" target=\"_blank\">HPR Community News for February 2020</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=3022\" target=\"_blank\">3022</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-03-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3022\" target=\"_blank\">FOSDEM 2020 Stand Interviews</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=3023\" target=\"_blank\">3023</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-03-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3023\" target=\"_blank\">Critique My Script, Episode 1 - Qots-Crew-Gen</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3024\" target=\"_blank\">3024</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-03-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3024\" target=\"_blank\">A funny thing happened the other day</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=3025\" target=\"_blank\">3025</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-03-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3025\" target=\"_blank\">Keep unwanted messages off the Fediverse</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=3026\" target=\"_blank\">3026</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-03-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3026\" target=\"_blank\">Hex Bug and Battle Bots</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=3027\" target=\"_blank\">3027</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-03-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3027\" target=\"_blank\">What is quantum computing and why should we care?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3028\" target=\"_blank\">3028</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-03-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3028\" target=\"_blank\">Monads and Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0385.html\" target=\"_blank\">crvs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3029\" target=\"_blank\">3029</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-03-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3029\" target=\"_blank\">At Union Station with a train delay</a></td>\n<td><a href=
|
|||
|
(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\'s AIA instrument</a>.</p>\n<video controls width=\"800\">\n<source src=\"https://hackerpublicradio.org/eps/hpr3857/2023_01_19_10_01_17_2023_01_19_11_21_41_AIA_304-hq.mp4\" type=\"video/mp4\">\nYour browser does not support the video tag.\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\'ve actually gotten my old electric guitar and amplifier back out again after many years in the closet. The amp is a Peavey Bandit 65, which was a an affordable solid-state workhorse kind of amp back in the mid-80s and I\'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\'s happening when I turn the knobs. I also discover belatedly that the reason I was not getting any distortion when I turned the saturation up was that the amp was stuck on the clean channel — shows how long it\'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>The Open Goldberg Variations</em>: <a href=\"https://www.opengoldbergvariations.org/\">https://www.opengoldbergvariations.org/</a>, used by permission of their <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</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\'ve gotten a lot of great feedback on the Interface Zero play-through and the episode about getting started with RPGs I did with Lostnbronx.\r\nPeople have told me that one of the biggest blockers to getting started is knowing what to do as GM.</p><p>\r\nNow, I\'ve read lots of rulebooks and GM guides, and it seems to me that most of them assume you\'ve either played an RPG before, and so you\'ve seen an example of a Game Master at play, or you\'ve seen one on Youtube or Twitch. It\'s a safe assumption, but it\'s easy to forget all of those great examples under pressure.\r\nSo in this episode, Lostnbronx and I are going to provide you with some clear and direct instructions on what exactly a GM does.\r\n</p><p>\r\nThe short version is this:</p>\r\n<ol><li><p>\r\nTell the players where they are and what they see around them.\r\n</p></li><li><p>\r\nListen to the players when they tell you what they want to do.\r\n</p></li><li><p>\r\nTell the players the outcome, based on your privileged knowledge of the game world or on a roll of the dice, of their actions.\r\n</p></li></ol>\r\n<p>\r\nYou loop over that sequence, and you\'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\'s important to understand that every GM is different. No two styles of running a game match completely, nor should they. And while there\'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\'ll probably give you another. It\'s your job to make sure that time isn\'t wasted.\r\n</p><p>\r\nBy definition, games, even role-playing games, are a form of entertainment -- 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\'s Deepgeek\'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\'t game','<p>\r\nShownotes are on <a href=\"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,game master,dungeon master,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\'s update revision of the game materials here: <a href=\"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,Tabletop Game,Dead Earth',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\'re converting a basic, black-and-white document, then <code>cjb2</code> (part of the djvulibre distribution) works:\r\n</p>\r\n\r\n<pre><code>\r\n$ cjb2 -dpi 300 foo.tiff\r\n$ ls\r\nfoo.tiff\r\nfoo.djvu\r\n</code></pre>\r\n\r\n<p>\r\nIf you want to convert something more complex, then use <code>c44</code> (also a part of the djvulibre distribution):\r\n</p>\r\n\r\n<pre><code>\r\n$ c44 -dpi 300 bar.jpg bar.djvu\r\n$ ls\r\nbar.jpg\r\nbar.djvu\r\n</code></pre>\r\n\r\n<p>\r\nTo put both of these files in a single DjVu container:\r\n</p>\r\n\r\n<pre><code>\r\n$ djvm -c baz.djvu foo.djvu bar.djvu\r\n$ ls\r\nbar.djvu\r\nbaz.djvu\r\nfoo.djvu\r\n</code></pre>\r\n\r\n<p>\r\nYou can add bookmarks, too.\r\nOpen a text file called <code>book.marks</code> (or any name you prefer) and enter:\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\nAnd then apply it to your DjVu file:\r\n</p>\r\n\r\n<pre><code>\r\n$ djvused -e \'set-outline book.marks\' -s baz.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\'s Djvu mini series','<p>\r\nTo embed text into a Djvu file, you must create a <code>djvused</code> script detailing the page and bitmap location of one of: character, word, line, paragraph, or region.\r\n</p>\r\n\r\n<p>\r\nFor good measure, you should first list the contents of your Djvu bundle:\r\n</p>\r\n\r\n<pre><code>$ djvused -e \'select; ls\' test.djvu\r\n 1 P 177062 p0001.djvu\r\n 2 P 199144 p0002.djvu\r\n 3 P 12323 p0003.djvu\r\n 4 P 57059 p0004.djvu\r\n 5 P 96725 p0005.djvu\r\n 6 P 53868 p0006.djvu\r\n</code></pre>\r\n\r\n<p>\r\nThen define the location of text in a file called, for instance, <code>content.dsed</code>. Assume that my page is 1000 px by 1000 px:\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\'ve posted in the last 3 years','<p>Hallo this is again Tony Hughes for HPR. This is an auspicious show for me as it’s my 50th show that I have recorded and released on HPR in my own right. However prior to my 1st show in my own right I did guest on 2 shows.</p>\r\n<p>The first of these was:</p>\r\n<ul>\r\n<li>hpr0844 :: The Flying Handbag hosted by HPR Volunteers<br />\r\nReleased: 2011-10-26</li>\r\n</ul>\r\n<p>Which was a show that was recorded at Barcamp Blackpool in 2011, when a group of us got together to record a podcast, the hilarious thing was that the only place we could find to record was a stairwell which happened to be next to the toilets, definitely not family friendly but if you want a laugh have a listen.</p>\r\n<p>The next show I appeared on was an interview I did with Ken Fallon at my first OggCamp in the same year.</p>\r\n<ul>\r\n<li>hpr0863 :: Tony Hughes Free Cycle hosted by Ken Fallon<br />\r\nReleased: 2011-11-22.</li>\r\n</ul>\r\n<p>Ken was as usual trying to recruit new hosts and interviewed me with the hope that I would become one. Well I did but it took another 5 years before I finally recorded my first show in my own right.</p>\r\n<p>First just to say the idea for this show comes from hpr2700 in which Ken created a script to automate the bot voice reading a list of every show that has been released on HPR, so to celebrate my 50th Show I thought I would list my shows but with me running through them and do a brief summary of the show where appropriate.</p>\r\n<ol type=\"1\">\r\n<li><p>hpr2051 :: My Linux Journey<br />\r\nReleased on 2016-06-13<br />\r\nin this episode I talked about my journey in computing and starting to use Linux</p></li>\r\n<li><p>hpr2056 :: Interview with a young hacker<br />\r\nReleased on 2016-06-20<br />\r\nThis was my first of several interviews with <span class=\"citation\" data-cites=\"All_about_Code\">@All_about_Code</span> at my local Raspberry Jam</p></li>\r\n<li><p>hpr2065 :: Whats in My Bag<br />\r\nReleased on 2016-07-01<br />\r\nLooking at this show so tells me I have to redo this show as my bag is very different these days</p></li>\r\n<li><p>hpr2076 :: What Magazines I read Part 1<br />\r\nReleased on 2016-07-18<br />\r\njust what the title said, I talked about the magazines I was reading at that point in time.</p></li>\r\n<li><p>hpr2087 :: Magazines I read Part 2<br />\r\nReleased on 2016-08-02<br />\r\nThis was a follow up of the last show</p></li>\r\n<li><p>hpr2097 :: New Toys<br />\r\nReleased on 2016-08-16<br />\r\nI talked about my hardware journey over the last 30 odd years and talked about the i7 system I had just bought 2nd hand</p></li>\r\n<li><p>hpr2101 :: What’s on my podcatcher<br />\r\nReleased on 2016-08-22<br />\r\nA show about the podcasts I listen to.</p></li>\r\n<li><p>hpr2144 :: An Interview with All About Code at Manchester BarCamp<br />\r\nReleased on 2016-10-20<br />\r\na follow up interview with Josh</p></li>\r\n<li><p>hpr2151 :: BarCamp Manchester part 2<br />\r\nReleased on 2016-10-31<br />\r\nAn interview with Claire, the organiser of BarCamp Manchester.</p></li>\r\n<li><p>hpr2157 :: BarCamp Manchester part 3<br />\r\nReleased on 2016-11-08<br />\r\nThis was an interview with Alan O’Donohoe who had started the Raspberry Jam movement</p></li>\r\n<li><p>hpr2257 :: Watt OS<br />\r\nReleased on 2017-03-28<br />\r\nAcer Aspire One Netbook – Review</p></li>\r\n<li><p>hpr2265 :: WattOS on Lenovo X61s<br />\r\nReleased on 2017<br />\r\nLenovo X61s – Review</p></li>\r\n<li><p>hpr2271 :: Raspberry Pi Zero W<br />\r\nReleased on 2017-04-17<br />\r\nReview Episode on the then New Pi Zero W</p></li>\r\n<li><p>hpr2280 :: Lenovo X61s Part 2<br />\r\nReleased on 2017-04-28<br />\r\nFollow up review after a SSD upgrade and using Linux Lite</p></li>\r\n<li><p>hpr2286 :: Surviving a Stroke<br />\r\nReleased on 2017-05-08<br />\r\nA very personal episode about my surviving a Stroke in February 2017</p></li>\r\n<li><p>hpr2295 :: MX Linux<br />\r\nReleased on 2017-
|
|||
|
(2784,'2019-04-04','The Yamaha Disklavier',1440,'I talk about the Yamaha Disklavier DKC500RW that\'s in my office at work','<p>In this episode I talk about the <a href=\"https://en.wikipedia.org/wiki/Disklavier\" target=\"_blank\">Yamaha Disklavier</a> DKC500RW that\'s in my office at work. This is a very high-tech player piano and one of the coolest pieces of music gear I\'ve ever seen.</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/72157707383776874\" title=\"Yamaha Disklavier\" target=\"_blank\"><img src=\"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>Website showing how to determine which model disklavier you have: <a href=\"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><a href=\"https://www.kuhmann.com/Yamaha.htm\" target=\"_blank\">DisklavierTM World</a>: This is a privately operated, Public Service (non-profit) webpage. 10,781 piano-music files in \'FIL\' (e-SEQ) & MIDI format & Software for the Yamaha Disklavier. PUBLIC-DOMAIN / \'Live\' MIDI-Performances / FREE Sequences</li>\r\n<li>Video: Jonathan Kulp, <em>Three Easy Pieces for Piano Four-Hands</em>: <a href=\"https://www.youtube.com/watch?v=y4loSIApjPA\" target=\"_blank\">Video of premiere performance</a></li>\r\n<li>Video: <a href=\"https://youtu.be/_hNzz_DubCo\" target=\"_blank\">Disklavier in action</a></li>\r\n</ul>',238,0,1,'CC-BY-SA','Music, Piano, Keyboard, Musical Instruments, Player Pianos, Recording Devices',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\'re running a firewall on your work and home networks right, so of course you\'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\'s phone so that no application is allowed to use mobile data, and then only applications that need Internet get Internet Access. This works well as it\'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\'s not allowed out. One issue you may come across is that even though you know that there is a Connection your phone doesn\'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\'m not sure how this check is done but <a href=\"https://android.stackexchange.com/users/53535/abqnm\">abqnm</a> suggests at in the StackExchange question <a href=\"https://android.stackexchange.com/questions/63481/how-does-android-determine-if-it-has-an-internet-connection\">How does Android determine if it has an Internet connection?</a> that it may be related to Google Cloud Messaging.\r\n</p>\r\n\r\n<quote>\r\n... this means that the device is unable to receive a response from GCM (Google Cloud Messaging, the framework that handles push notifications). This traffic is sent through ports 5228, 5229, and 5230. If the AP is blocking or interfering with traffic on those ports, push notifications won\'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\'t ask again for this network NO YES\" 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\'t know Javascript do ?','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://github.com/crazy-max/nodejs-portable\" class=\"uri\">https://github.com/crazy-max/nodejs-portable</a></li>\r\n<li><a href=\"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\'t need it for anything now, you can close it:\r\n</p>\r\n<pre><code>$ sudo cryptsetup luksClose foo\r\n$ ls /dev/mapper\r\n$\r\n</code></pre>\r\n<p>Mount it as a usable filesystem:</p>\r\n<pre><code>$ sudo mkdir /crypt\r\n$ sudo mount /dev/mapper/foo /crypt\r\n</code></pre>\r\n<p>\r\nDepending on your system configuration, you may need to set up reasonable permissions:\r\n</p>\r\n<pre><code>$ sudo mkdir /crypt/mystuff\r\n$ sudo chown klaatu:users /crypt/mystuff\r\n$ sudo chmod 770 /crypt/mystuff\r\n$ echo \"hello world\" >> /crypt/mystuff/file.txt\r\n</code></pre>\r\n<p>\r\nWhen you\'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\'s coproc keyword and explains some toy examples','<p>If you want the full manuscript, that’s at <a href=\"https://gitlab.com/clacke/hpr/blob/master/hpr2793_bash_coproc_manuscript.adoc\">gitlab: hpr2793_bash_coproc_manuscript.adoc</a>. It’s almost a transcript, but I added spontaneous commentary while reading the examples, so that’s not in the manuscript.</p>\r\n<p>Episode errata:</p>\r\n<ul>\r\n<li><p>Command substitution with <code>$()</code> is perfectly valid according to POSIX, and is accepted both by <code>dash</code> and by <code>bash --posix</code>. It’s not to be considered a bashism.</p></li>\r\n<li><p>I fumbled the pronunciation of the <code>printf</code> format string in one place and said "parenthesis" instead of "percentage sign".</p></li>\r\n<li><p>I tried to say "space" every time there’s a space, but I know I forgot it in a few places. But you probably need to look at the show notes to really make sense of the commands anyway.</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
|
|||
|
INSERT INTO `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
|
|||
|
(2822,'2019-05-28','What\'s in the Box! Part 1',1265,'NYbill opens a mystery box he found in the mail box.','<p>NYbill opens a mystery box that arrived in the mail.</p>\r\n<p>No spoilers. But, it involves soldering…</p>\r\n<p>Pics for the episode:</p>\r\n<p><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/what-s-in-the-box/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/what-s-in-the-box/</a></p>',235,103,0,'CC-BY-SA','DIY, Soldering, Guitar, electronics',0,0,1),
|
|||
|
(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, Vetenskap och Folkbildning ("Science and Public Education") for "[their fearmongering propaganda and biased reporting on the health effects of mobile telephony use and wireless networks]".</p>\r\n<p><a href=\"https://www.vof.se/utmarkelser/tidigare-utmarkelser/aretas-forvillare-2013/\" class=\"uri\">https://www.vof.se/utmarkelser/tidigare-utmarkelser/aretas-forvillare-2013/</a> (in Swedish)</p>\r\n<p>These networks are part of a feedback loop where they get media attention, politicians pick up on their claims and use them to invoke the precautionary principle and get precautionary regulation in place, or judges rule based on the claims, which then gets quoted by these entities as evidence that they were right all along.</p>\r\n<p>They make it very hard to find factual information on whether millimeter-wavelength radiation actually has any different effect from the centimeter-wavelength radiation that we have been using for over two decades without any documented harmful effects, because wherever you look you just find these sites claiming that we have definitely had adverse health effects for the last two decades and the new frequency bands will definitely be far worse.</p>\r\n<p>When you dig deeper into the claims on these sites you find a handful of cherry-picked articles, leading back to the two men mentioned at the top, to studies with flawed methodology like self-reported surveys on mobile telephony use among cancer patients, or to the pseudoscience/media/politics/law feedback loop. And it’s all about centimeter waves, which simply have shown no conclusive sign of increasing brain cancers or any other adverse health effect related to the radiation. For every positive report made you can find one that reports brain cancer fell as we introduced mobile phones. There is a massive body of data, and if the signal were there, we would have seen it by now.</p>\r\n<p>I’m no cancer researcher, but neither is Rainer Nyberg, he’s a retired professor in pedagogy. He’s a concerned citizen. <a href=\"https://en.wikipedia.org/wiki/Lennart_Hardell\" class=\"uri\">https://en.wikipedia.org/wiki/Lennart_Hardell</a> is an actual oncologist and professor who has studied carcinogens, but his research results on the wireless/cancer connection have been dismissed as "non-informative", "post hoc", "barely statistically significant" and "flawed" by his peers. There is nothing there.</p>\r\n<p>We know that high-voltage 16.7 Hz fields increase the risk for leukemia in train drivers, but we don’t know why. I am open to the poss
|
|||
|
(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\'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=3043\" target=\"_blank\">3043</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-04-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3043\" target=\"_blank\">How I record for HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3044\" target=\"_blank\">3044</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-04-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3044\" target=\"_blank\">mocp snooze tip</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=3045\" target=\"_blank\">3045</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-04-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3045\" target=\"_blank\">OSS compliance with privacy by default and design</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=3046\" target=\"_blank\">3046</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-04-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3046\" target=\"_blank\">HPR Community News for March 2020</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=3047\" target=\"_blank\">3047</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-04-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3047\" target=\"_blank\">The COVID-19 Work From Home Stream - Day 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3048\" target=\"_blank\">3048</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-04-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3048\" target=\"_blank\">Alternatives to toilet paper</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=3049\" target=\"_blank\">3049</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-04-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3049\" target=\"_blank\">What computers taught me about reality</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=3050\" target=\"_blank\">3050</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-04-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3050\" target=\"_blank\">Linux Inlaws S01E04 What\'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\'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=3065\" target=\"_blank\">3065</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-05-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3065\" target=\"_blank\">The case for the unattributed message</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=3066\" target=\"_blank\">3066</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-05-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3066\" target=\"_blank\">HPR Community News for April 2020</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=3067\" target=\"_blank\">3067</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-05-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3067\" target=\"_blank\">Getting my Python3 code working in Python2</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=3068\" target=\"_blank\">3068</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3068\" target=\"_blank\">Keeping track of downloads in Elm</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=3069\" target=\"_blank\">3069</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-05-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3069\" target=\"_blank\">Linux Inlaws S01E05 Porn and Skynet</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=3070\" target=\"_blank\">3070</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-05-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3070\" target=\"_blank\">making vim xdg compatible</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0385.html\" target=\"_blank\">crvs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3071\" target=\"_blank\">3071</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-05-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3071\" target=\"_blank\">Bash snippet - quotes inside quoted strings</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://hackerpublicradio.org/eps.php?id=3072\" target=\"_blank\">3072</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-05-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3072\" target=\"_blank\">The joy of pip-tools and pyenv-virtualenv</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0311.html\" target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3073\" target=\"_blank\">3073</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-05-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3073\" target=\"_blank\">Matchbox and Diecast Restoration</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA
|
|||
|
(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\'s and our future with them, where are we going?','<p>I discuss the entire Spectre and Meltdown issues and where we might go post an Intel world. My objective is to encourage others to leave Speculative processing backed by management engine based chips. SCATTER HUMANS!!! WE MUST LEAVE!!!!</p>\r\n',377,0,0,'CC-BY-SA','SCATTER HUMANS!!!',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\'t limit you to just that.\r\nThe primary GUI environment of Linux (at the time of this recording) is X, and the <a href=\"https://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.html\">Inter-Client Communication Conventions Manual</a> defines three <strong>X Selection</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\'s question on why would someone want to use Haskell','<p>I got really good comment on episode <a href=\"https://hackerpublicradio.org/eps.php?id=2778\">2778 - Functor and applicative in Haskell</a> from Beeza that I’m including below:</p>\r\n<blockquote>\r\n<p>I’ve been writing software for over 30 years but I find the syntax of Haskell anything but intuitive - in fact less so than any other programming language I have looked at. Thanks to your excellent show notes I can make sense of it but I have to say I would not like to have to develop a project using this language.</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Obviously I am missing the point as nobody would design a language with the intention of its being difficult to use. Perhaps you could produce another episode addressing the question “Why Haskell?”</p>\r\n</blockquote>\r\n<p>In this episode, I’m trying to answer to that from my point of view.</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\'t Exist<br />\r\n<a href=\"https://www.youtube.com/watch?v=_7X6Yeydgyg\">https://www.youtube.com/watch?v=_7X6Yeydgyg</a><br />\r\n<a href=\"https://en.wikipedia.org/wiki/Polybius\">https://en.wikipedia.org/wiki/Polybius</a></li>\r\n<li>Cicada 3301<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Cicada_3301\">https://en.wikipedia.org/wiki/Cicada_3301</a></li>\r\n<li>Ahoy you channel<br />\r\n<a href=\"https://www.youtube.com/channel/UCE1jXbVAGJQEORz9nZqb5bQ\">https://www.youtube.com/channel/UCE1jXbVAGJQEORz9nZqb5bQ</a></li>\r\n<li>Resilo Sync<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Resilio_Sync\">https://en.wikipedia.org/wiki/Resilio_Sync</a></li>\r\n<li>Mintcast<br />\r\n<a href=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n<li>Zoom H2<br />\r\n<a href=\"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>LG Tone headsets<br />\r\n<a href=\"https://www.lg.com/us/bluetooth-headsets-headphones\">https://www.lg.com/us/bluetooth-headsets-headphones</a></li>\r\n<li>Urbanite XL<br />\r\n<a href=\"https://en-us.sennheiser.com/urbanite-xl\">https://en-us.sennheiser.com/urbanite-xl</a></li>\r\n<li>cmhobbs joins and asks for episode input. will record winter field day 2019 from northwest arkansas.</li>\r\n\r\n<li>Book & audiobook</li>\r\n<li>Recommendations for books:<br />\r\n<ol>\r\n<li>Daemon by Daniel Suarez, <a href=\"https://daniel-suarez.com/\">https://daniel-suarez.com/</a></li>\r\n<li>Skyward by Brandon Sanderson, <a href=\"https://brandonsanderson.com/books/skyward/skyward/\">https://brandonsanderson.com/books/skyward/skyward/</a></li>\r\n</ol>\r\n</li>\r\n<li>Audiobook reading tips:<br />\r\n<ol>\r\n<li>To get into audiobooks, try listening to a book you\'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\'s TTS engine\r\nURL : https://mimic.mycroft.ai/\r\nLicense : BSD\r\nDescription : Mimic is a fast, lightweight Text-to-speech engine developed by Mycroft A.I.\r\n : and VocalID, based on Carnegie Mellon University’s FLITE software. Mimic takes\r\n : in text and reads it out loud to create a high quality voice. 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\'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=3086\" target=\"_blank\">3086</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3086\" target=\"_blank\">HPR Community News for May 2020</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=3087\" target=\"_blank\">3087</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3087\" target=\"_blank\">Phonetic alphabet</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=3088\" target=\"_blank\">3088</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3088\" target=\"_blank\">Matchbox Restoration 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>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3089\" target=\"_blank\">3089</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-06-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3089\" target=\"_blank\">For my Entertainment</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3090\" target=\"_blank\">3090</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-06-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3090\" target=\"_blank\">Locating Computer on a Enterprise Network</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=3091\" target=\"_blank\">3091</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3091\" target=\"_blank\">fuguserv</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3092\" target=\"_blank\">3092</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3092\" target=\"_blank\">Pens, pencils, paper and ink - 2</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://hackerpublicradio.org/eps.php?id=3093\" target=\"_blank\">3093</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3093\" target=\"_blank\">Response to Linux Inlaws S01E06 (hpr 3079) on NeXT</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3094\" target=\"_blank\">3094</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-06-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3094\" target=\"_blank\">Holy crud! I have a kinesis advantage 2 keyboard!</a></td>\n<td><a href=\"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\'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=3108\" target=\"_blank\">3108</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3108\" target=\"_blank\">Fuguita as a Desktop</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3109\" target=\"_blank\">3109</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3109\" target=\"_blank\">Matchbox Restoration Part 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3110\" target=\"_blank\">3110</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3110\" target=\"_blank\">Finding an Android phone to run LineageOS</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=3111\" target=\"_blank\">3111</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3111\" target=\"_blank\">HPR Community News for June 2020</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=3112\" target=\"_blank\">3112</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3112\" target=\"_blank\">finishing the frame on the long wheelbase recumbent</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=3113\" target=\"_blank\">3113</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3113\" target=\"_blank\">OpenJDK 15 - Unsafe Garbage</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=3114\" target=\"_blank\">3114</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3114\" target=\"_blank\">Using the Akaso EK7000 Pro</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=3115\" target=\"_blank\">3115</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3115\" target=\"_blank\">Pest Control</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=3116\" target=\"_blank\">3116</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3116\" target=\"_blank\">Unscripted ramblings on a walk: Crisis at The Manor</a></td>\n<td><a href=\"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\'ve developed the standards to judge, so now let\'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),
|
|||
|
(2842,'2019-06-25','What\'s in my Bag an update to hpr2065',225,'This is a short update show on what I carry in my Geek Bag','<p>Hello HPR land, this is Tony Hughes again coming to you from Blackpool in the UK.</p>\r\n<p>During my last episode, which was my 50th for HPR, I realized that my ‘Bag’ has changed considerably since recording my episode hpr2065 about it back in July 2016. So this is an update on what I currently carry in my ‘Geek’ Bag when out and about.</p>\r\n<p>I have several laptops which are used for different things at different times so may or may not be in the bag/bags depending on what I am doing. This is the list:</p>\r\n<ul>\r\n<li>Lenovo X230i</li>\r\n<li>Toshiba z30</li>\r\n<li>Dells E6220 x 2, E7250, E7440 and E6540</li>\r\n</ul>\r\n<p>Recently I have moved more to Dell laptops and the Dell E7440 is a great compromise of portability and usability with its 14" 1080p screen, but if I want light and long battery life the Toshiba z30 is a fantastic little PC with all day battery life and a great 13.3" screen.</p>\r\n<p>But all the others have their place in the bag, for demonstrating Linux Distros at events or at my LUG.</p>\r\n<p>So the next thing that makes it into the bag is my ZoomH2 recorder that goes with me for recording interviews at events I attend, with the intention of producing HPR shows.</p>\r\n<p>I also have some tools, the first is a little set of a screwdriver and small driver bits made by Draper this is handy for laptop tear downs as it has all the necessary bit heads needed to work on electronics. I also carry a small set of pliers and a wire cutter in the bag.</p>\r\n<p>I also carry a 10000mA battery pack for charging my mobile phone if needed while out and about. In conjunction with this a I carry several micro USB charging cables and a USB C cable for the increasing number of USB C devices around these days.</p>\r\n<p>In the bag are also a couple of 128Gb SSD’s as spares for quick swap outs, if I don’t want to wipe a drive but wish to test a new OS, or for those times the only solution to helping someone rescue an older laptop is to stick an SSD into it.</p>\r\n<p>I generally carry my 1Tb portable USB3 HDD around with me as I store a large number of current Linux ISO files for burning to a flash drive to create boot discs. With that it goes without saying that I have a few spare flash drives in the bag for just this use. I also usually carry a few SD cards for creating Raspberry Pi images if needed.</p>\r\n<p>Other items include a USB WiFi card as a backup if I have a WiFi malfunction, or I’m working on a machine without its own WiFi card.</p>\r\n<p>Well that’s about it for what I’m currently carrying in my bag, but before I go a bit of sad news. Many of you have heard me talk of my latest bargains from the Computer Auction I have frequented since 2006. Well sadly NO MORE, Northern Realisations after 20 years of trading have closed their doors for the last time, so I need to find another source of cheap PC equipment. As they say: <em>All good things come to an end</em>.</p>\r\n<p>Well that’s it for this episode, this is Tony Hughes signing off for Hacker Public Radio.</p>\r\n<ul>\r\n<li><p><a href=\"https://www.keithstead.com/and_more/reviews/zoomh2.html\" class=\"uri\">https://www.keithstead.com/and_more/reviews/zoomh2.html</a></p></li>\r\n<li><p><a href=\"https://www.realnorth.co.uk/\" class=\"uri\">https://www.realnorth.co.uk/</a></p></li>\r\n</ul>\r\n',338,0,0,'CC-BY-SA','Linux, PC\'s, Laptops, Geek Bag',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\'s brought to us by Moss and our own <a href=\"https://hackerpublicradio.org/correspondents/0338.html\">Tony Hughes</a>. From the blurb:\r\n</p>\r\n\r\n<quote>\r\nWe are two Blokes who love Linux and trying out new stuff, we thought it would be interesting to share our experience of trying new Linux and BSD distributions and how we found it trying to live with them as our daily driver for up to a Month at a time, by recording a podcast about how we got on.\r\n</quote>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://distrohoppersdigest.blogspot.com/\">https://distrohoppersdigest.blogspot.com/</a></li>\r\n<li><a href=\"https://distrohoppersdigest.blogspot.com/feeds/posts/default\">https://distrohoppersdigest.blogspot.com/feeds/posts/default</a></li>\r\n<li><a href=\"https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss\">https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0338.html\">https://hackerpublicradio.org/correspondents/0338.html</a></li>\r\n<li><a href=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n</ul>',30,0,0,'CC-BY-NC-SA','Distrohoppers Digest, 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\'t get working is recording using the microphone.</p>\r\n\r\n<p>I spend about half of this episode talking about trying to make a super-long recording fit on a 5-inch reel and playing at 4.8 cm/second. I use Kimiko Ishizaka\'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>The Open Goldberg Variations</em>: <a href=\"https://www.opengoldbergvariations.org/\" target=\"_blank\">https://www.opengoldbergvariations.org/</a>, used by permission of their <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\" target=\"_blank\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n <li><a href=\"https://www.vintage-electronics.net/\" target=\"_blank\">Vintage Electronics</a>, my source for replacement belts, replacement lamps for my Marantz receiver, etc. </li>\r\n</ul>',238,0,0,'CC-BY-SA','Music,Recording,Audio,Tape,Reel-To-Reel,Open-Reel,Recording Devices,Tape Speeds,Bash Scripting',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><a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</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\'t have to use Twitter and Facebook. There are alternatives.','<p>While many people like to use social media, platforms like Twitter and Facebook are very unsatisfying, not to mention inimical to your security and privacy. Fortunately there are alternatives we can try, and in this series I want to explore a few of them. <a href=\"https://www.zwilnik.com/?page_id=1025\" class=\"uri\">https://www.zwilnik.com/?page_id=1025</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://elplatt.com/\" class=\"uri\">https://elplatt.com/</a></li>\r\n<li><a href=\"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><a href=\"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><a href=\"https://mewe.com/\" class=\"uri\">https://mewe.com/</a></li>\r\n<li><a href=\"https://ello.co/\" class=\"uri\">https://ello.co/</a></li>\r\n<li><a href=\"https://diasporafoundation.org/\" class=\"uri\">https://diasporafoundation.org/</a></li>\r\n<li><a href=\"https://pluspora.com/\" class=\"uri\">https://pluspora.com/</a></li>\r\n<li><a href=\"https://www.bitchute.com/\" class=\"uri\">https://www.bitchute.com/</a></li>\r\n<li><a href=\"https://joinmastodon.org/\" class=\"uri\">https://joinmastodon.org/</a></li>\r\n<li><a href=\"https://textile.photos/\" class=\"uri\">https://textile.photos/</a></li>\r\n<li><a href=\"https://pixelfed.org/\" class=\"uri\">https://pixelfed.org/</a></li>\r\n<li><a href=\"https://www.wire.com/\" class=\"uri\">https://www.wire.com/</a></li>\r\n<li><a href=\"https://www.signal.org/\" class=\"uri\">https://www.signal.org/</a></li>\r\n<li><a href=\"https://gnu.io/social/\" class=\"uri\">https://gnu.io/social/</a></li>\r\n<li><a href=\"https://www.scuttlebutt.nz/\" class=\"uri\">https://www.scuttlebutt.nz/</a></li>\r\n<li><a href=\"https://mediagoblin.org/\" class=\"uri\">https://mediagoblin.org/</a></li>\r\n<li><a href=\"https://freenetproject.org/author/freenet-project-inc.html\" class=\"uri\">https://freenetproject.org/author/freenet-project-inc.html</a></li>\r\n<li><a href=\"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, social media, 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\'s help message, which is not useful in this context.\r\n</p>\r\n\r\n<p>\r\nThe shell script wrapper method uses the shell to parse options, which are then passed to an embedded Awk script:\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\'s footsteps',694,'turning a couple of old bikes into a long wheel base recumbent','<ul>\r\n<li><p>recycled recumbent<br />\r\n<a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></p></li>\r\n<li><p>wisil recumbent<br />\r\n<a href=\"https://www.wisil.recumbents.com/home/\" class=\"uri\">https://www.wisil.recumbents.com/home/</a></p></li>\r\n<li><p>hpr 1282<br />\r\n<a href=\"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>cj hoyle<br />\r\n<a href=\"https://www.youtube.com/user/cjhoyle\" class=\"uri\">https://www.youtube.com/user/cjhoyle</a></p></li>\r\n<li><p>toledo bike<br />\r\n<a href=\"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\'s negative connections. The most interesting feature of the device is that it has a variable-speed knob for playback at higher speed. I demonstrate this in the podcast.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157709909168017\" title=\"G.E. Variable Speed Cassette Recorder Repair\" target=\"_blank\"><img src=\"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>Links to Stuff Mentioned in the Episode</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://www.flickr.com/photos/137675441@N05/albums/72157709909168017\" target=\"_blank\">Flickr Photo Album</a></li>\r\n <li><a href=\"https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=assorted+cassette+belts&_sacat=0\" target=\"_blank\">Assorted cassette deck belts on eBay</a></li>\r\n <li><a href=\"https://kahoot.com/\" target=\"_blank\">Kahoot!</a> Make Learning Awesome.</li>\r\n</ul>\r\n\r\n\r\n',238,0,0,'CC-BY-SA','Recording, Audio, Tape, Cassette, Recording Devices, Tape Speeds, Electronics, Repair',0,0,1),
|
|||
|
(2875,'2019-08-09','cutting up the frames',456,'you\'ve got to crack some eggs to make an omelette','<h2 id=\"drawings\">Drawings</h2>\r\n<p><a href=\"https://sites.google.com/site/recycledrecumbents/ez-clone-drawings\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/ez-clone-drawings</a></p>\r\n<h2 id=\"pictures\">Pictures</h2>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture01-one-of-the-donors.jpg\" alt=\"picture01-one-of-the-donors.jpg\" /><br />\r\nOne of the donors</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture02-dross.jpg\" alt=\"picture02-dross.jpg\" /><br />\r\nDross</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture03-the-gold.jpg\" alt=\"picture03-the-gold.jpg\" /><br />\r\nThe gold</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture04-first-cut.jpg\" alt=\"picture04-first-cut.jpg\" /><br />\r\nFirst cut</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture05-cutting-tubes.jpg\" alt=\"picture05-cutting-tubes.jpg\" /><br />\r\nCutting tubes</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture06-workmate.jpg\" alt=\"picture06-workmate.jpg\" /><br />\r\nWorkmate</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture07-frame2-parts.jpg\" alt=\"picture07-frame2-parts.jpg\" /><br />\r\nFrame 2 parts</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2875/picture08-frame1-parts.jpg\" alt=\"picture08-frame1-parts.jpg\" /><br />\r\nFrame 1 parts</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\'s due!</p>\r\n<p>Ingredients:</p>\r\n<ul>\r\n<li>1 lb (500g) Sausage (chicken or pork works)</li>\r\n<li>1 ½ cups (192g) Orzo</li>\r\n<li>2 tbsp (40g) Butter</li>\r\n<li>Olive oil</li>\r\n<li>Zucchini</li>\r\n<li>Shallot</li>\r\n<li>1 - 2 tbsp (20-40g) Italian Seasoning</li>\r\n<li>Pepper</li>\r\n<li>2 cups (475ml) water</li>\r\n<li>1 tsp (4g) stock concentrate</li>\r\n<li>16oz (450g?? One normal can, whatever that is) Crushed or diced tomatoes</li>\r\n<li>1 cup (226g) Mozzarella cheese (shredded)</li>\r\n<li>Panko Breadcrumbs</li>\r\n<li>Salt (Optional)</li>\r\n</ul>\r\n<ol>\r\n<li>Mince half the shallot (or all of it, 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\'ve got one) and cook the sausage, with half the Italian seasoning, over medium heat, breaking it into bite-sized pieces as you cook it. Transfer to the mixing bowl for later.</li>\r\n<li>Add another drizzle of olive oil, and shred the zucchini into the pan. Add shallot, and cook until the zucchini shrinks to ⅔ of its size (about 5 minutes). Transfer to the mixing bowl with the sausage.</li>\r\n<li>Wipe out the pan with a paper towel. Melt 1 tbsp of butter over medium heat, and add orzo, stirring pretty frequently for 2-3 minutes.</li>\r\n<li>Stir in the rest of the Italian seasoning, along with the water, tomatoes, and stock concentrate. Bring to a boil and stir until orzo is done - around 12 - 14 minutes.</li>\r\n<li>Drain excess liquid from the zucchini and sausage.</li>\r\n<li>Mix sausage & zucchini into orzo mixture, with 1 tbsp of butter. Season with salt & pepper, if you want.</li>\r\n<li>If you don\'t have an oven-proof pan, you\'re going to want to transfer everything over to a large baking dish of some kind. 13x9" works for me.</li>\r\n<li>Cover the mixture in mozzarella cheese and panko breadcrumbs - in that order!</li>\r\n<li>Place dish in the oven for 2-3 minutes, until the breadcrumbs are toasted.</li>\r\n</ol>\r\n<p>Note: If these metric measurements seem crazy, they probably are.</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\'s learning how to make multi-track recordings. I always wanted a 4-track when I was in high school but never had one. Now I do!</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157710065663101\" title=\"TSACAM Porta 02 4-Track Recording Demonstration\"><img src=\"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>Links to info about stuff I mentioned</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://flic.kr/s/aHsmFL2UUv\" target=\"_blank\">Flickr album with photos from this recording session</a></li>\r\n <li><a href=\"https://flic.kr/s/aHsmFyCT82\" target=\"_blank\">Flickr album with photos from the TASCAM machine restoration</a></li>\r\n <li>My earlier episode about the Marantz recorder: <a href=\"https://hackerpublicradio.org/eps.php?id=1844\">hpr1844 :: The Marantz PMD 660 Professional Solid State Recorder</a></li>\r\n <li>My video of the TASCAM testing, power supply hack, disassembly, and cleaning: <a href=\"https://youtu.be/HhM6UwBhykM\" target=\"_blank\">Watch on YouTube</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Multitrack_recording\" target=\"_blank\">Multitrack recording</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/G%C3%BCiro\" target=\"_blank\">Güiro</a> (mine is metal)</li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Claves\" target=\"_blank\">Clave</a> (instrument) and <a href=\"https://en.wikipedia.org/wiki/Clave_(rhythm)\" target=\"_blank\">clave rhythm</a> (you heard the 2-3 clave rhythm on this podcast)</li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Harmonica#Diatonic_harmonicas\" target=\"_blank\">Diatonic harmonica</a></li>\r\n <li> <a href=\"https://en.wikipedia.org/wiki/Chromatic_harmonica\" target=\"_blank\">Chromatic harmonica</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Microphone\" target=\"_blank\">Microphone types</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Phantom_power\" target=\"_blank\">Phantom power</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Clipping_(audio)\" target=\"_blank\">Clipping</a></li>\r\n <li>EQ: <a href=\"https://en.wikipedia.org/wiki/Equalization_(audio)\" target=\"_blank\">Equalization</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)\">Mixing</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Mastering_(audio)\">Mastering</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Demo_(music)\">Demo Recordings</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Portastudio\">The TASCAM PortaStudio</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/David_Mead_(musician)\" target=\"_blank\">David Mead</a> (his first two albums were with RCA, not Polygram</li>\r\n <li>My first test recording on the restored TASCAM Porta 02: <a href=\"https://soundcloud.com/jonkulp/tascam-4-track-cassette-recorder-test-1-vamos-a-bailar\" target=\"_blank\">Listen on Soundcloud</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Multi-Track Recording, Recording Devices, Home Recording Studios, Cassette Tapes, Vintage Recording ',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\'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=3131\" target=\"_blank\">3131</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3131\" target=\"_blank\">HPR Community News for July 2020</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=3132\" target=\"_blank\">3132</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3132\" target=\"_blank\">Keeping track of where I am</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=3133\" target=\"_blank\">3133</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3133\" target=\"_blank\">Quick tip - Using MPV with Youtube links</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3134\" target=\"_blank\">3134</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3134\" target=\"_blank\">Tomorrowland 2020</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=3135\" target=\"_blank\">3135</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-08-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3135\" target=\"_blank\">Quick Tips for May 20 20</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=3136\" target=\"_blank\">3136</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3136\" target=\"_blank\">Matchbox Restoration Part 6</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3137\" target=\"_blank\">3137</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3137\" target=\"_blank\">Coronavirus Update 2020-07-30</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=3138\" target=\"_blank\">3138</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3138\" target=\"_blank\">Linux Inlaws S01E12: Reminiscing in FLOSS Weekly</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=3139\" target=\"_blank\">3139</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-08-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3139\" target=\"_blank\">MIDI Sysex</a></td>\n<td><a href=\"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\'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=3152\" target=\"_blank\">3152</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3152\" target=\"_blank\">My Pocket Knives</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://hackerpublicradio.org/eps.php?id=3153\" target=\"_blank\">3153</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3153\" target=\"_blank\">Fixing eBooks with Calibre and pdfcrop</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=3154\" target=\"_blank\">3154</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-09-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3154\" target=\"_blank\">Make NextCloud your next cloud</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3155\" target=\"_blank\">3155</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-09-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3155\" target=\"_blank\">LastPass Security Dashboard</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=3156\" target=\"_blank\">3156</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3156\" target=\"_blank\">HPR Community News for August 2020</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=3157\" target=\"_blank\">3157</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3157\" target=\"_blank\">Compost</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=3158\" target=\"_blank\">3158</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3158\" target=\"_blank\">Fingerprint access control? LOL... </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0387.html\" target=\"_blank\">Cedric De Vroey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3159\" target=\"_blank\">3159</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-09-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3159\" target=\"_blank\">Vivaldi - The Four Seasons</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3160\" target=\"_blank\">3160</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-09-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3160\" target=\"_blank\">GIMP: Transform Tools</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://hackerp
|
|||
|
(2889,'2019-08-29','Describing how I listen to podcasts PART 2',1052,'In this episode I cover the hardware I\'ve used over the years to listen to podcasts.','<h3 id=\"short-summary\">Short Summary</h3>\r\n<p>In this series I cover how I listen to podcasts and how the process has change over the years. In this episode I cover the hardware I’ve used over the years to listen to podcasts.</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>Link to HPR 2106 (Hpodder) Episode mentioned in this podcast<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>The cordless headphones I use are analogue cordless headphones they operate in the UHF 860 MHz RF spectrum and use Frequency modulation</p></li>\r\n<li><p>(Picture 01) shows a pair of JVC cordless headphones, these were my first pair of cordless headphones, from memory they were reasonably comfortable and lasted a reasonably long time, they eventually gave way when the strap along the top completely split if you look carefully you can see evidence of this in the picture. <img src=\"https://hackerpublicradio.org/eps/hpr2889/Picture-01.JPG\" alt=\"Picture-01.JPG\" /></p></li>\r\n<li><p>I think my 2nd set pair of cordless headphones were made by Phillips, unfortunately I don’t have a picture of these. The headphones were too big and kept falling from my head.</p></li>\r\n<li><p>(Picture 02) shows a pair of Sony headphones that I can’t even remember owning! I’ve lost count of how many cordless headphones I’ve owned over the years, these were also too big and regularly fell off my head, there are probably other pairs which I have forgotten about. It took a lot of trial an error to find a pair that would fit properly. <img src=\"https://hackerpublicradio.org/eps/hpr2889/Picture-02.JPG\" alt=\"Picture-02.JPG\" /></p></li>\r\n<li><p>I think my 3rd set of cordless headphones were a cheap pair from Liddles, unfortunately I don’t have a picture of these again these were also too big.</p></li>\r\n<li><p>(Picture 03) Shows my current set of cordless headphones, unfortunately my camera refused to work while taking this picture so you’ll not be able to identify the manufacturer which is a great pity as they are absolutely great also the lighting in here is very bad so you won’t be able to make out the writing printed on them :) <img src=\"https://hackerpublicradio.org/eps/hpr2889/Picture-03.JPG\" alt=\"Picture-03.JPG\" /></p></li>\r\n<li><p>Compaq N610C laptop<br />\r\n<img src=\"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<a href=\"https://en.wikipedia.org/wiki/GNU_Screen\" class=\"uri\">https://en.wikipedia.org/wiki/GNU_Screen</a></p></li>\r\n<li><p>EEE PC Laptop<br />\r\n<a href=\"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 (04 and 05) are of my Nokia N810 <img src=\"https://hackerpublicradio.org/eps/hpr2889/Picture-04.JPG\" alt=\"Picture-04.JPG\" /><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2889/Picture-05.JPG\" alt=\"Picture-05.JPG\" /></p></li>\r\n<li><p>Below is a link from wikipedia covering the Nokia N810.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Nokia_N810\" class=\"uri\">https://en.wikipedia.org/wiki/Nokia_N810</a></p></li>\r\n<li><p>Links to shows where klaatu references the Nokia N770 which came out before the Nokia N810 but is very similar<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0228\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=0228</a><br />\r\n<a href=\"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\'s been about 6 years since I talked about my project ONICS in HPR 1350</li>\r\n<li>ONICS stands for Open Network Inpection Command Suite</li>\r\n<li>I created ONICS as because I thought it would be neat to have a suite of tools that could manipulate packets on the command line in a way similar to how tools lik sed, awk, grep, cut, and so forth manipulate text.</li>\r\n</ul>\r\n<p>Installing</p>\r\n<ul>\r\n<li>Not currently maintained in any package distributions</li>\r\n<li>Maintainers who are interested in doing so are welcome</li>\r\n<li>Install by source</li>\r\n</ul>\r\n<pre><code> $ git clone https://gitlab.com/catlib/catlib\r\n $ cd catlib\r\n $ make\r\n $ cd ..\r\n $ git clone https://gitlab.com/onics/onics\r\n $ cd onics\r\n $ ./configure\r\n $ make\r\n $ make test\r\n $ sudo make install\r\n $ make veryclean\r\n</code></pre>\r\n<ul>\r\n<li>Can always uninstall cleanly from the source directory</li>\r\n</ul>\r\n<pre><code> $ make uninstall\r\n</code></pre>\r\n<ul>\r\n<li>Alternate to installation is to stop at \'make test\' and then add to \'onics/bin\' and \'onics/scripts\' to your path.</li>\r\n</ul>\r\n<p>Documentation</p>\r\n<ul>\r\n<li><p>Manpages are available in onics/doc directory if you aren\'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\'s first capture in the traditional way</li>\r\n</ul>\r\n<pre><code> $ sudo tcpdump -i eth0 -c 5 -w file1.pcap\r\n</code></pre>\r\n<ul>\r\n<li>First program is to capture packets from the wire:</li>\r\n</ul>\r\n<pre><code> $ sudo pktin eth0 > file2.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>If not running as root</li>\r\n</ul>\r\n<pre><code> $ sudo chown myname file1.pcap file2.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\'t do w/ tcpdump</p>\r\n<ul>\r\n<li>Lets now merge them one after another</li>\r\n</ul>\r\n<pre><code> $ cat file1.xpkt file2.xpkt > merged.xpkt\r\n $ xpktdump merged.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Of course there\'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\'s convert file2 to PCAP</li>\r\n</ul>\r\n<pre><code> $ xpkt2pc file2.xpkt file2.pcap\r\n or\r\n $ xpkt2pc < file2.xpkt > file2.pcap\r\n or\r\n $ xpkt2pc file2.xpkt > file2.pcap\r\n or\r\n $ cat file2.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\'t want to actually store as a PCAP</li>\r\n</ul>\r\n<pre><code> $ xpkt2pc file2.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\'ll talk about filtering and dissecting packet traces and streams and introduce diffing. Remember that most tools have very flexible options for a variety of use cases. So check their manpages. Each man page also has multiple examples of how to use each tool.</p>\r\n<h3 id=\"counting-packets\">Counting Packets</h3>\r\n<ul>\r\n<li>Lets start with grabbing a trace from the unit tests:</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>Lets see what we have inside. First, lets see how many packets there are. 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\'t want to walk through all the packets.</li>\r\n</ul>\r\n<h3 id=\"scanning-packet-flows\">Scanning Packet Flows</h3>\r\n<ul>\r\n<li><p>Well, lets look at the connections or "flows" in the trace. 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\'ll run:</p></li>\r\n</ul>\r\n<pre><code> $ nftrk -dt sample.xpkt | grep END\r\n</code></pre>\r\n<p>and get:</p>\r\n<pre><code> |FLOW END|IP:ca=192.168.0.43,sa=224.0.0.251,proto=2|Start=1565446184.543,\r\n End=1565446184.544,Dur=0.001|SENT:1,60|\r\n ...\r\n |FLOW END|IP:ca=192.168.0.7,sa=192.168.0.255,proto=17,cpt=631,spt=631|\r\n Start=1565446184.543,End=1565446184.544,Dur=0.001|SENT:3,660|\r\n</code></pre>\r\n<ul>\r\n<li><p>\'nftrk\' tracks flows giving events like the start and end of each flow or connection. We just want a summary of all the connections so we just grep for \'END\' (all caps).</p></li>\r\n<li><p>We could just as easily have grepped for START, but this way we get the final number of packets sent and received on each connection. If we just want a count of the connections we can do:</p></li>\r\n</ul>\r\n<pre><code> $ nftrk -dt sample.xpkt | grep START | wc -l\r\n</code></pre>\r\n<p>and that tells us that there are 10 flows in the trace.</p>\r\n<h3 id=\"basic-filtering\">Basic Filtering</h3>\r\n<ul>\r\n<li>Ok, so 90 packets, in 10 flows totalling ~19000 bytes. Lets now see about filtering the connection so we just get the TCP packets.</li>\r\n</ul>\r\n<pre><code> $ pflt tcp sample.xpkt tcponly.xpkt\r\n\r\n $ pcount tcponly.xpkt\r\n 73 total packets and 17184 total bytes.\r\n\r\n $ nftrk -dt tcponly.xpkt | grep END | wc -l\r\n 2\r\n</code></pre>\r\n<ul>\r\n<li>We could have been super fancy and done:</li>\r\n</ul>\r\n<pre><code> $ pflt tcp sample.xpkt |\r\n pcount -p |\r\n nftrk -t 2>/tmp/flows > tcponly.xpkt &&\r\n echo -n "Number of flows " &&\r\n grep END /tmp/flows | wc -l &&\r\n rm -f /tmp/flows\r\n</code></pre>\r\n<ul>\r\n<li>Ok, enough of that. Anyway, now we have a trace file with only the TCP connections. Running</li>\r\n</ul>\r\n<pre><code> $ nftrk -dt /tmp/tcponly.xpkt | grep END\r\n |FLOW END|IP:ca=192.168.0.4,sa=192.168.0.7,proto=6,cpt=38859,spt=22|\r\n Start=1566073862.612,End=1566073862.613,Dur=0.000|C2S:25,4561|S2C:30,5124|\r\n |FLOW END|IP:ca=192.168.0.4,sa=64.233.169.147,proto=6,cpt=35071,spt=80|\r\n Start=1566073862.613,End=1566073862.613,Dur=0.000|C2S:9,704|S2C:9,6795|\r\n</code></pre>\r\n<p>Shows that the server ports are 22 and 80 for the two connections. 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\'ll discuss this is more detail in a future podcast. But if you want to see the kinds of fields you can match on go to</p></li>\r\n</ul>\r\n<pre><code> $ man onics_
|
|||
|
(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>The Open Goldberg Variations</em>: <a href=\"https://www.opengoldbergvariations.org/\">https://www.opengoldbergvariations.org/</a>, used by permission of their <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n</ul>',238,0,0,'CC-BY-SA','Music, Musical Instruments, Repairs, DIY, Vietnamese Stringed Instruments',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>In this series I cover how I listen to podcasts and how the process has changed over the years. In this episode I cover the 1st add-on board I purchased for one of my raspberry pi’s I then go on to explain what I do with it.</p>\r\n<ul>\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>Piface Digital IO, pictures and links<br />\r\n<a href=\"https://www.piface.org.uk/products/piface_digital/\" class=\"uri\">https://www.piface.org.uk/products/piface_digital/</a><br />\r\n<a href=\"https://www.piface.org.uk/products/piface_digital_2/\" class=\"uri\">https://www.piface.org.uk/products/piface_digital_2/</a><br />\r\nSoftware Documentation <a href=\"https://piface.github.io/pifacedigitalio/\" class=\"uri\">https://piface.github.io/pifacedigitalio/</a></p></li>\r\n<li>Command used to install the software & libraries to use the Piface Digital IO board, command from companies website:</li>\r\n</ul>\r\n<pre><code> sudo apt-get install python{,3}-pifacedigitalio</code></pre>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2901/Picture-01.JPG\" alt=\"Picture 1\" /><br />\r\nPicture 1, shows the Piface Digital IO board installed on top of my raspberry pi</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2901/Picture-02.JPG\" alt=\"Picture 2\" /><br />\r\nPicture 2, shows the extension board I built. The extension board increases the number of available LED’s and switches. The board is attached via a ribbon cable with the ends of the wire inserted into the green and orange screw down chocolate blocks attached to the Piface Digital IO board.</p>\r\n<ul>\r\n<li><p>Command to toggle between play and pause in moc is<br />\r\n<code>mocp -G</code> or <code>mocp –toggle-pause</code><br />\r\nmoc man page <a href=\"https://www.mankier.com/1/mocp\" class=\"uri\">https://www.mankier.com/1/mocp</a><br />\r\nmoc homepage <a href=\"https://moc.daper.net/\" class=\"uri\">https://moc.daper.net/</a></p></li>\r\n<li><p>Uptime man page <a href=\"https://linux.die.net/man/1/uptime\" class=\"uri\">https://linux.die.net/man/1/uptime</a></p></li>\r\n</ul>\r\n<h3 id=\"explanation-of-how-to-read-a-binary-display\">Explanation of how to read a binary display</h3>\r\n<p>The board I built which attaches to the Piface Digital board has a total of 8 LED’s. I use the 8 LED’s to display a number in binary format. In binary each LED has only two values either on or off, with 1 LED you can count to 1 with two LED’s you can count to 3. This may seem confusing if you’ve never dealt with binary before. Starting from the right each subsequent LED represents double the value of the previous one so the 1st LED has a value of 1 the 2nd LED has a value of 2, the third LED has a value of 4 and so on. See below</p>\r\n<pre><code>LED Number 8 7 6 5 4 3 2 1\r\nLED VALUES 128, 64, 32, 16, 8, 4, 2, 1</code></pre>\r\n<p>LED on represents 1, LED off represents 0</p>\r\n<p><code>[Example 1] 0 0 0 0 0 0 0 1 [Represented value 1]</code><br />\r\n1st LED on value = 1</p>\r\n<p><code>[Example 2] 0 0 0 0 0 0 1 1 [Represented value 3]</code><br />\r\n1st and 2nd LED on, LED VALUE 1 + 2 = 3</p>\r\n<p><code>[Examples 3] 0 0 0 0 1 0 1 0 [Represented value 10]</code><br />\r\n2nd and 4th LED on, LED VALUE 2 + 8 = 10</p>\r\n<p>With practice it gets easy to convert from binary to decimal, at my work we still have a very old computer which contains a front panel with LED’s and binary switches. To load the computer instructions must be loaded in binary using flip switches and LED’s with practice it becomes second nature.</p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><p>Further information on binary numbers <a href=\"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\'s interface in a network</p></li>\r\n<li><p>Packet - a blob of binary data sent as a unit over a network</p></li>\r\n<li><p>Route - a rule that specifies how to forward traffic to a given address</p></li>\r\n<li><p>Router / Gateway - a machine that uses the IP protocol and forwards traffic between multiple networks that it connects to</p></li>\r\n<li><p>Network Protocol - a set of rules and data formats for exchanging information over a network</p></li>\r\n</ul>\r\n<h1 id=\"standard-unix-commands\">Standard UNIX Commands</h1>\r\n<ul>\r\n<li>ifconfig (no arguments or \'-a\')\r\n<ul>\r\n<li>list interfaces on a machine</li>\r\n</ul></li>\r\n<li>ifconfig IFNAME\r\n<ul>\r\n<li>list properites about a given interface</li>\r\n</ul></li>\r\n<li>ping -c 1 IPADDRESS\r\n<ul>\r\n<li>send an echo request to machine IPADDRESS</li>\r\n</ul></li>\r\n<li>arp -na\r\n<ul>\r\n<li>Dump the Ethernet addresses of known nearby machines</li>\r\n</ul></li>\r\n<li>netstat -nr\r\n<ul>\r\n<li>Dump the routes in a system</li>\r\n</ul></li>\r\n<li>netstat -nr | grep "^0.0.0.0"\r\n<ul>\r\n<li>Find the route (and thus IP address) of the default gateway</li>\r\n</ul></li>\r\n</ul>\r\n<h1 id=\"onics-commands-in-this-episode\">ONICS Commands in this Episode</h1>\r\n<ul>\r\n<li><p>rawpkt - take a blob of data and wrap it in an XPKT format (so other ONICS tools can understand what it is)</p></li>\r\n<li><p>ethwrap - take an XPKT and prepend an Ethernet header to it</p></li>\r\n<li><p>ipwrap - take an XPKT and prepend an IP header to it</p></li>\r\n<li><p>pktin - read a stream of packets from a network interface</p></li>\r\n<li><p>pflt - filter a stream of packets so that only those matching a pattern get through</p></li>\r\n<li><p>pktout - send a stream of packets to a network interface</p></li>\r\n<li><p>x2hpkt - convert XPKTs into a hex dump</p></li>\r\n<li><p>xpktdump - like x2hpkt, but send the output to a pager like \'less\' for easy reading</p></li>\r\n</ul>\r\n<h1 id=\"sending-an-ethernet-packet-to-the-destination\">Sending an Ethernet Packet to the Destination</h1>\r\n<ul>\r\n<li>On the receiver:</li>\r\n</ul>\r\n<pre><code> $ sudo pktin wlo1 |\r\n pflt "not ip and eth.dst == 6c:88:14:7c:2e:14" |\r\n x2hpkt\r\n</code></pre>\r\n<ul>\r\n<li>On the se
|
|||
|
(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\'s Start The Show off in the wrong direction</p>\r\n<h2 id=\"windows\">Windows</h2>\r\n<ul>\r\n<li>Chocolatey\r\n<ul>\r\n<li>Great Tool for Downloading free software from the windows powershell command line</li>\r\n<li><a href=\"https://chocolatey.org/docs/installation\" class=\"uri\">https://chocolatey.org/docs/installation</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"sublime-text-3\">Sublime Text 3</h3>\r\n<ul>\r\n<li>Fantastic Text editor and very powerful. I use this to quickly parse data using regex searches and push this to spreadsheets or other tools that allow me to organize data quickly. Overall Great tool for anyone</li>\r\n</ul>\r\n<h3 id=\"summary\">Summary:</h3>\r\n<ul>\r\n<li>Overall: The importance of being an everyday Windows User has allowed me to focus on solving problems in different and unique ways. 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\'t do inside of Windows.</li>\r\n</ul>\r\n<h2 id=\"web-stuff\">Web Stuff</h2>\r\n<ul>\r\n<li>Regex\r\n<ul>\r\n<li>Test and debug your regex. It is a great tool that combines pastebin and regex debugging. This allows you to share your regex with other by simply using a link. There is a lot of useful information on the site about what each portion of your regex is doing.</li>\r\n<li><a href=\"https://regex101.com\" class=\"uri\">https://regex101.com</a></li>\r\n</ul></li>\r\n<li>Maps\r\n<ul>\r\n<li>USGS Maps\r\n<ul>\r\n<li>Very nice site that allows you to download PDFs of 1:24000 or 7.5 minute Maps. You can print these off and use a Map grid tool to navigate your journey. This is kind of an analog tool but you are downloading the maps to your computer or phone. Good to have maps saved offline while you hike, that way you don\'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\'re just starting with Software Defined Networking or are already working with it in a production environment, there is much to learn but very few places to find aggregated information. The GitHub Page called awesome-sdn has tons of links on NOS,Controllers, Libraries, and more. I have A couple of Northbound network and Aruba switches at home to use with my SDN projects. I highly recommend you start getting familiar with network automation using ansible or other automation best practices at the least. For the more technical stuff definitely start looking at SDN.</li>\r\n<li>Awesome-SDN\r\n<ul>\r\n<li><a href=\"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\'t been edited down much, so there are a lot of ambient pauses and heavy breathing to be enjoyed.</p>\r\n<p><em>Recorded in the field on my <a href=\"https://www.amazon.co.uk/Olympus-DM-3-Digital-Voice-Recorder/dp/B003UP6ALA\">Olympus DM-3</a> voice recorder.</em></p>\r\n<h2 id=\"caches-explored\">Caches explored</h2>\r\n<ul>\r\n<li>Cache 1 - <a href=\"https://coord.info/GC7F8ND\">GC7F8ND</a> - not found</li>\r\n<li>Cache 2 - <a href=\"https://coord.info/GC50TVW\">GC50TVW</a> - not found</li>\r\n<li>Cache 3 - <a href=\"https://coord.info/GC7KRHH\">GC7KRHH </a> - found!</li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://next.moobug.net/index.php/apps/gallery/s/iGwmZMtyaD52ecg\">Link to photos and screenshot</a></li>\r\n<li><a href=\"https://geocaching.com\">geocaching.com</a></li>\r\n<li>Official Geocaching App: <a href=\"https://play.google.com/store/apps/details?id=com.groundspeak.geocaching.intro\">Google Play</a> | <a href=\"https://itunes.apple.com/app/apple-store/id329541503\">App Store</a></li>\r\n<li>c:geo Geocaching app: <a href=\"https://play.google.com/store/apps/details?id=cgeo.geocaching\">Google Play</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\'t be so loud','<p>The alarm clock on my bedside table had a very loud alarm—so loud that it scared me and made my heart race when it went off. I know you\'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\'t be so loud when it goes off. 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),
|
|||
|
(2937,'2019-11-05','Lord D\'s Film Reviews: His Girl Friday',2937,'Lostnbronx reviews an old screwball comedy.','<p>Ignore the address for the film that I give in the review. Here’s a MUCH better copy than the one I watched. It’s another upload on Archive.org:</p>\r\n<p><a href=\"https://archive.org/details/HisGirlFriday-1940\" class=\"uri\">https://archive.org/details/HisGirlFriday-1940</a></p>\r\n<p>Boy, I wish I’d found this one first!</p>\r\n',107,109,0,'CC-0','review, film, lord d',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
|
|||
|
(2925,'2019-10-18','LinuxLugCast\'s Memorial for FiftyOneFifty ',7541,'We are here tonight to share memories of our friend Donald Grier aka FiftyOneFifty.','<p><a href=\"https://www.linuxlugcast.com/category/https-honkeymagoo-000webhostapp-com-home-podcast-2\">LinuxLugCast Memorial</a></p>\r\n\r\n<p>We are here tonight to share memories of our friend<strong> Donald Grier</strong> aka <strong>FiftyOneFifty</strong></p>\r\n<p>Fifty was involved with many podcast over the years</p>\r\n<ul class=\"bullet\">\r\n<li>Obviously LinuxLugCast <a href=\"https://www.linuxlugcast.com\">https://www.linuxlugcast.com</a></li>\r\n<li><a href=\"https://archive.org/search.php?query=linuxlugcast\">https://archive.org/search.php?query=linuxlugcast</a></li>\r\n<li>Hacker Public Radio <a href=\"https://hackerpublicradio.org/\">https://hackerpublicradio.org/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0131.html\">https://hackerpublicradio.org/correspondents/0131.html</a></li>\r\n<li>/dev/random <a href=\"https://devrandomshow.org/\">https://devrandomshow.org/</a></li>\r\n<li><a href=\"https://devrandomshow.org/shows/?f=all.html\">https://devrandomshow.org/shows/?f=all.html</a></li>\r\n<li>Kernal Panic Oggcast <a href=\"https://archive.org/search.php?query=KernelPanic+Oggcast&page=2\">https://archive.org/search.php?query=KernelPanic+Oggcast&page=2</a></li>\r\n</ul>\r\n<p><u>Shared thoughts and memories</u>:<br>\r\n<strong>Ken Fallon</strong></p>\r\n<p>I was in the back room pottering away when espeak notified me that 5150<br>\r\nhad passed away. I went back to the computer and read the announcement<br>\r\nin the IRC Logs and confirmed the news. Some dude I had never met, never<br>\r\nseen in my life, and didn’t even know his real name, was gone and I was<br>\r\nin the back room crying my eyes out.</p>\r\n<p>Crying for the loss of a friend.</p>\r\n<p>When had he become a friend ?</p>\r\n<p>People have been socializing since the dawn of humans, be it at the camp<br>\r\nfire, the forge, pub, hairdresser, sports club, church, or wherever.</p>\r\n<p>For us it was via Linux podcasting. You are there because you share a<br>\r\ncommon interest. If you were into Linux podcasting then you could not<br>\r\nhelp but get to know fiftyonefifty. The guy turned up everywhere if not<br>\r\non the podcasts themselves he was commenting on them. I have 619<br>\r\nmessages from him about HPR alone.</p>\r\n<p>He submitted his first show back in 2010 and has been a regular since<br>\r\nthen. At some point after that I knew that he was on my “special list”<br>\r\nof people who I could rely upon to fill the queue if needed.</p>\r\n<p>And as I sat there crying I realized that he had also sneaked onto my<br>\r\nlist of friends.</p>\r\n<p>I’ve not always been a fan of the New Year Show, but now I am glad for<br>\r\nit. While I may never get to share a beer with him any more, or take him<br>\r\nup on his promise to let me fire off some rounds on his farm, I did at<br>\r\nleast get to shoot the breeze with him for many a happy hour.</p>\r\n<p>Goodbye old friend you will be missed</p>\r\n<p><strong>Anonymous</strong><br>\r\nA Ramble for FiftyOneFifty: King of Ramblers</p>\r\n<p>I am writing a Ramble for a man I knew only as FiftyOneFifty. I never knew his real name,<br>\r\nnor do I know if he knew mine. In many things, Names do not matter, People, Actions, and<br>\r\nfeeling do. We podcasted together off and on, over several years. I don’t recall exactly<br>\r\nhow many. It doesn’t matter now, since they are all that there will ever be. We grew to be<br>\r\ngood friends. I never met him in person, online life is like that. I only know my life would be<br>\r\nmuch poorer, if I had not known him. Hearing he died, shattered me. This Ramble is my try<br>\r\nat putting most the pieces back in place. Of course, nothing can replace the largest piece,<br>\r\nthe Man Himself. My heart and prayers go out to those friends and family dealing with his loss.</p>\r\n<p>His death is a harsh, unchangeable, fact. I shall foc
|
|||
|
(2929,'2019-10-24','Recovering Files from a Dead MacBook Air',482,'I talk about recovering the files from my wife\'s dead MacBook Air using an Ubuntu Live CD.','<p>I talk about becoming a household hero by recovering my wife\'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\'t boot even with the repaired filesystem, but I was able to mount the drive and copy her files to a USB drive.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li>Blog post Howto: <a href=\"https://miteshshah.github.io/mac/repair-fix-mac-hfs-partition-using-ubuntu/\">Repair/Fix MAC HFS+ Partition Using Ubuntu</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Ubuntu,Mac OS X,File Recovery,Filesystem Repair',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\'s find functionality to search for the word "Calendar").<br />\r\n<small><em>Edit: Please use the ⇧Upload⇧ link in the menu bar</em></small>\r\n</li>\r\n<li>Choose a slot</li>\r\n<li>Submit your email address</li>\r\n<li>Click the link in the confirmation email</li>\r\n<li>Create your profile (if new), then fill in the form with title, summary and show notes</li>\r\n<li>Attach your episode and submit (wait for long upload process)</li>\r\n<li>Receive your confirmation email, and enjoy your episode!</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\'t have LXC installed, first install it:\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo dnf install lxc lxc-templates lxc-doc\r\n\r\n// on Ubuntu or Debian:\r\n\r\n$ apt install lxc\r\n</code>\r\n</pre>\r\n\r\n<p>\r\nYou also need to create a network bridge so that your container and your host system (that\'s the computer you\'re sitting in front of right now) can communicate.\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo ip link add br0 type bridge\r\n$ sudo ip addr show br0\r\n7: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc\r\n noop state DOWN group default qlen 1000\r\n link/ether 26:fa:21:5f:cf:99 brd ff:ff:ff:ff:ff:ff\r\n</code></pre>\r\n<p>\r\nNow give your bridge device an IP address that doesn\'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\'s supposed to be really small.\r\nI don\'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\'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=3174\" target=\"_blank\">3174</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-10-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3174\" target=\"_blank\">Linux Inlaws S01E14: The big programming language panel</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=3175\" target=\"_blank\">3175</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-10-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3175\" target=\"_blank\">International Keyboard</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=3176\" target=\"_blank\">3176</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-10-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3176\" target=\"_blank\">HPR Community News for September 2020</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=3177\" target=\"_blank\">3177</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-10-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3177\" target=\"_blank\">Zero cost VPN</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3178\" target=\"_blank\">3178</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3178\" target=\"_blank\">Finishing the Recumbent Bicycle</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=3179\" target=\"_blank\">3179</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-10-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3179\" target=\"_blank\">MakeMKV to back up media, and a Question</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3180\" target=\"_blank\">3180</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-10-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3180\" target=\"_blank\">GIMP: Miscellaneous Tools</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=3181\" target=\"_blank\">3181</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-10-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3181\" target=\"_blank\">RealVNC cloud offering</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3182\" target=\"_blank\">3182</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-10-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3182\" target=\"_blank\">Yo-ho-ho, and a bottle of Cholecalciferol</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morris
|
|||
|
(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\'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=3196\" target=\"_blank\">3196</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-11-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3196\" target=\"_blank\">HPR Community News for October 2020</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=3197\" target=\"_blank\">3197</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-11-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3197\" target=\"_blank\">Pens, pencils, paper and ink - 3</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://hackerpublicradio.org/eps.php?id=3198\" target=\"_blank\">3198</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3198\" target=\"_blank\">Income Life insurance and then Chopin</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3199\" target=\"_blank\">3199</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-11-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3199\" target=\"_blank\">Bad Audio Weed Eater Bugs Sprinkler and Bubbles !</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=3200\" target=\"_blank\">3200</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-11-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3200\" target=\"_blank\">Better Social Media 17 - OcapPub</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=3201\" target=\"_blank\">3201</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-11-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3201\" target=\"_blank\">A small intro to 3D printing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3202\" target=\"_blank\">3202</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-11-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3202\" target=\"_blank\">A big Question</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0388.html\" target=\"_blank\">Padraig Jeroen Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3203\" target=\"_blank\">3203</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3203\" target=\"_blank\">The Paul Quirk show: Retro Computing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3204\" target=\"_blank\">3204</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-11-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3204\" target=\"_blank\">Getting Starte
|
|||
|
(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\'s largest FLOSS event.','<p>\r\n<a href=\"https://www.oggcamp.org/\">OggCamp</a> is an unconference celebrating Free Culture, Free and Open Source Software, hardware hacking, digital rights, and all manner of collaborative cultural activities and is committed to creating a conference that is as inclusive as possible.<br />\r\nThis year a team of HPR volunteers hit the show.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191018_122746Z.jpg\"><img src=\"../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\'s script to turn an Android phone into a webcam. Two versions of the script to take a screenshot and post it to the web.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_091709Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_091709Z-small.jpg\"></a><br />\r\nSurveillance state ?\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_095727Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_095727Z-small.jpg\"></a><br />\r\nOur latest host <a href=\"https://hackerpublicradio.org/correspondents/0381.html\">Nihilazo</a> signs the booth.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_133636Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_133636Z-small.jpg\"></a><br />\r\nAn Interview with Ban Parsons from the <a href=\"https://matrix.org/\">Matrix</a> <em>An open network for secure, decentralized communication</em>\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_135427Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_135427Z-small.jpg\"></a><br />\r\nAn Interview with <a href=\"https://www.mystorm.uk/\">mystorm.uk</a> makers of the open FPGA. An FPGA chip is a re-programmable piece of silicon hardware, it can be reconfigured or programmed to a logic circuit of your own design.\r\n\r\n<br/>\r\n<em>In 2016 we decided to setup up the myStorm project in order to build OpenSource FPGA hardware. Several years later we are building the 5th generation of <a href=\"https://github.com/folknology/BlackIceMx/wiki\">BlackIce</a> Development boards. <a href=\"https://www.tindie.com/products/Folknology/blackice-mx/\">BlackIce Mx</a> the latest generation of our hardware has been built using BlackEdge open hardware standard which enable the \'Core\' Board <a href=\"https://github.com/folknology/IceCore/wiki/IceCore-Getting-Started\">IceCore</a> to be separated from its carrier board which provides MixMod and Pmod hardware add-ons. Please take a look at the <a href=\"https://forum.mystorm.uk\">myStorm forum</a> to ask questions and participate in our community. </em>\r\n\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_135429Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_135429Z-small.jpg\"></a><br />\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_141427Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_141427Z-small.jpg\"></a><br />\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_143611Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_143611Z-small.jpg\"></a><br />\r\nAn Interview with Erik Grun
|
|||
|
(2946,'2019-11-18','Sunday at OggCamp Manchester 2019',3378,'Interviews and chat from the UK\'s largest FLOSS event.','<p>\r\n<a href=\"../eps/hpr2946/434340905_92324.jpg\"><img src=\"../eps/hpr2946/434340905_92324-small.jpg\"></a><br />\r\n<a href=\"https://hackerpublicradio.org/correspondents/0288.html\">beni</a>, <a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway/mcnalu</a>, Timttmy, and <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave</a> at the HPR booth.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_100452Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_100452Z-small.jpg\"></a><br />\r\nMichael from <a href=\"https://www.electricflapjack.com/\">Electric Flap Jack</a> Custom Built Guitars, and author of <a href=\"https://efguitars.s3.amazonaws.com/fretboard-generator.html\">Fretboard Template Generator</a> available on <a href=\"https://github.com/mdales/Fretboard-generator\">GitHub</a>\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_132900Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_132900Z-small.jpg\"></a><br />\r\nPerspex template for carving the body and neck.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_132904Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_132904Z-small.jpg\"></a><br />\r\nA work in progress.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_132909Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_132909Z-small.jpg\"></a><br />\r\nTools for making guitar, including the tool to round the frets.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_132913Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_132913Z-small.jpg\"></a><br />\r\nAnd of course you need a guitar stand.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_132918Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_132918Z-small.jpg\"></a><br />\r\n<a href=\"https://efguitars.s3.amazonaws.com/fretboard-generator.html\">Fretboard Template Generator</a> available on <a href=\"https://github.com/mdales/Fretboard-generator\">GitHub</a>\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_101726Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_101726Z-small.jpg\"></a><br />\r\nTai Kedzierski hanging out with \"Grumpy\" Mike Cook.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_101754Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_101754Z-small.jpg\"></a><br />\r\nMike produces electronic musical instruments for people with accessibility issues.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103658Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103658Z-small.jpg\"></a><br />\r\nHe also has a book called <a href=\"https://www.apress.com/gp/book/9781484217207\">Arduino Music and Audio Projects</a> to help you do this yourself.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103704Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103704Z-small.jpg\"></a><br />\r\n<em>\r\nAt <a href=\"https://www.drakemusic.org/\">Drake Music</a> we are leaders in music, disability and technology.<br />\r\nWe are innovators, educators, curators and advocates. We believe everyone has the right to express themselves creatively through music. We use new technologies and ideas to open up access to music for all. Our vision is a world where disabled and non-disabled musicians work together as equals.</em>\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103728Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103728Z-small.jpg\"></a><br />\r\nThe <em>bat base</em>.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103744Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103744Z-small.jpg\"></a><br />\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103749Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103749Z-small.jpg\"></a><br />\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103821Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103821Z-small.jpg\"></a><br />\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2946/IMG_20191020_103722Z.jpg\"><img src=\"../eps/hpr2946/IMG_20191020_103722Z-small.jpg\"></a><br />\r\nThe <em>Cattle Caster</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),
|
|||
|
(2957,'2019-12-03','Lord D\'s Film Reviews: Ever',1025,'Lostnbronx reviews a recent drama/romance.','<p><b>Ever</b><br />\r\nWritten/Directed by Josh Beck<br />\r\nStarring Wendy McColm & Christina Elizabeth Smith<br />\r\nCinematography by Micah Van Hove<br />\r\nRunning Time: 1:37:42</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=5F-XfwIvmMg\" class=\"uri\">https://www.youtube.com/watch?v=5F-XfwIvmMg</a></p>\r\n<p>A young woman named Ever, while grieving over a devastating loss, meets Emily, who helps her to heal and find love again.</p>\r\n',107,109,0,'CC-0','review, film, lord d',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\'s show Ken interviews Josh Clements from the <a href=\"https://gpodder.net\">gpodder.net</a> project.\r\n</p>\r\n<p>\r\nJosh answered the <a href=\"https://github.com/gpodder/mygpo/blob/master/maintainer-needed.md\">call to arms</a> he heard on the <a href=\"https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/\">Ubuntu Podcast</a>. We discuss <em>the plan</em> and explain how you can also get involved.\r\n</p>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"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><a href=\"https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/\">https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/</a></li>\r\n<li><a href=\"https://github.com/gpodder/\">https://github.com/gpodder/</a></li>\r\n<li><a href=\"https://gpodder.github.io/docs/mailing-list.html\">https://gpodder.github.io/docs/mailing-list.html</a></li>\r\n<li><a href=\"https://feeds.gpodder.net/\">https://feeds.gpodder.net/</a></li>\r\n<li><a href=\"https://prgmr.com/xen/\">https://prgmr.com/xen/</a></li>\r\n<li><a href=\"mailto:support@gpodder.net\">support@gpodder.net</a></li>\r\n</ul>\r\n',30,78,0,'CC-BY-SA','gpodder.net, Josh Clements',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\'s probably because of a non-conformist streak in me, but I\'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\'ve built a collection of about a dozen of these and they always get positive comments, especially the ones made from recycled circuit boards. Recently I\'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\'m trying to make sure that this show doesn\'t come across as as advertisment placement on HPR I won\'t provide a link to our application (which wouldn\'t help a lot anyway as we don\'t really have much of a web site anyway.).</p>\r\n<p>However I\'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\'s written in common lisp.</p>\r\n<p>We have considered switching to <a href=\"https://www.sympy.org/\">SymPy</a> as a more modern alternative. SymPy doesn\'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\'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=3217\" target=\"_blank\">3217</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-12-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3217\" target=\"_blank\">Sump Minion</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=3218\" target=\"_blank\">3218</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3218\" target=\"_blank\">An introduction to Darktable</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3219\" target=\"_blank\">3219</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-12-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3219\" target=\"_blank\">Linux Inlaws S01E18: Voice Recognition and Text to Speech</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=3220\" target=\"_blank\">3220</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-12-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3220\" target=\"_blank\">PixelFed</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=3221\" target=\"_blank\">3221</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-12-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3221\" target=\"_blank\">HPR Community News for November 2020</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=3222\" target=\"_blank\">3222</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2020-12-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3222\" target=\"_blank\">Musings about writing a book about the Odoo software suite</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3223\" target=\"_blank\">3223</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2020-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3223\" target=\"_blank\">My COVID year summary</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=3224\" target=\"_blank\">3224</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2020-12-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3224\" target=\"_blank\">Adventures in Retrocomputing with the Mac Plus</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3225\" target=\"_blank\">3225</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2020-12-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3225\" target=\"_blank\">Grill r
|
|||
|
(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\'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=3240\" target=\"_blank\">3240</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-01-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3240\" target=\"_blank\">Linux Under Attack</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=3241\" target=\"_blank\">3241</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-01-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3241\" target=\"_blank\">HPR Community News for December 2020</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=3242\" target=\"_blank\">3242</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-01-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3242\" target=\"_blank\">The eternal battle over how to run your chromebook is about to begin</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3243\" target=\"_blank\">3243</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3243\" target=\"_blank\">Pictor - free and open radio astronomy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3244\" target=\"_blank\">3244</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-01-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3244\" target=\"_blank\">Interview with Anco Scholte ter Horst CEO of Freedom Internet</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=3245\" target=\"_blank\">3245</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-01-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3245\" target=\"_blank\">ELECTRICITY</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=3246\" target=\"_blank\">3246</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-01-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3246\" target=\"_blank\">LXCast: freeing the Fairphone 3 (and many other phones) </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0285.html\" target=\"_blank\">2BFrank</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3247\" target=\"_blank\">3247</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-01-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3247\" target=\"_blank\">Saturday Morning Automotive Routine</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0389.html\" target=\"_blank\">TrumpetJohn</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3248\" target=\"_blank\">3248</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-01-13</td>\n<td><a href=\"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\'s presentation of his Github project on bare metal emulation of the C64 on a Pi 3.','<p>Links of note:</p>\r\n<ul>\r\n<li><a href=\"https://github.com/randyrossi/bmc64\" class=\"uri\">https://github.com/randyrossi/bmc64</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>',383,103,0,'CC-BY-SA','Raspberry,Pi,emulation,Commodore,64,World of Commodore,TPUG,Toronto,Pet,Users,Group,Github,Open Sour',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\'m sick of this jank setup .. the software is wonky and works about 1/2 the time .. I have to ƒ@#$ 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),
|
|||
|
(2983,'2020-01-08','my phone',497,'gnu-linuxy in my pocket','<ul>\r\n<li><p>lineageOS<br />\r\n<a href=\"https://lineageos.org/\" class=\"uri\">https://lineageos.org/</a></p></li>\r\n<li><p>termux<br />\r\n<a href=\"https://termux.com/\" class=\"uri\">https://termux.com/</a></p></li>\r\n<li><p>fdroid<br />\r\n<a href=\"https://f-droid.org/\" class=\"uri\">https://f-droid.org/</a></p></li>\r\n<li><p>satstat<br />\r\n<a href=\"https://f-droid.org/en/packages/com.vonglasow.michael.satstat/\" class=\"uri\">https://f-droid.org/en/packages/com.vonglasow.michael.satstat/</a></p></li>\r\n<li><p>skymap<br />\r\n<a href=\"https://f-droid.org/en/packages/com.google.android.stardroid/\" class=\"uri\">https://f-droid.org/en/packages/com.google.android.stardroid/</a></p></li>\r\n<li><p>web utilities<br />\r\n<a href=\"https://radio.jezra.net\" class=\"uri\">https://radio.jezra.net</a><br />\r\n<a href=\"https://twilock.jezra.net\" class=\"uri\">https://twilock.jezra.net</a></p></li>\r\n</ul>\r\n',243,0,0,'CC-BY-SA','phone, linux',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\'s misbehaving. My pedals were turning around when I walked the bike, and they ought to be stationary. A quick dose of chain oil in the freewheel fixed the problem. Click the image to see photos showing how to do this.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157712277100862\" title=\"Bicycle Freewheel Lube\"><img src=\"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, bicycle maintenance, DIY, bicycle repair',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\'s daughter to be guests on LinuxLUGcast</li>\r\n<li>Raspberry Pi IV discussion</li>\r\n<li>Popey and TonyH chat about restoring model cars</li>\r\n<li>Popey and TonyH chat about: More model cars, 8-bit computing, ZX Spectrum, Commodore</li>\r\n<li><a href=\"https://8bitversus.com/\"> https://8bitversus.com/</a></li>\r\n<li>Sinclair calculator - <a href=\"https://en.wikipedia.org/wiki/List_of_Sinclair_calculators\">https://en.wikipedia.org/wiki/List_of_Sinclair_calculators</a></li>\r\n<li>Popey and TonyH speak about Lenovo laptops</li>\r\n<li>Mr Cholmondley Warner (<a href=\"https://www.youtube.com/watch?v=tQWPR9TM0Gk)\">https://www.youtube.com/watch?v=tQWPR9TM0Gk)</a></li>\r\n<li>DaveM and TonyH talk more about model cars, their restoration and history</li>\r\n<li>DaveM is working on a \"MagicMirror2\" system on a Pi 3A+ to show status information</li>\r\n<li>Dinky Toys - <a href=\"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-20 New Year Show, 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><a href=\"https://8bitversus.com/\">https://8bitversus.com/</a></li>\r\n<li>Timezone confusion??</li>\r\n<li>Ubuntu podcast</li>\r\n<li>TonyH: how he discovered Linux</li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','2019-20 New Year Show, 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\'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=3261\" target=\"_blank\">3261</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-02-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3261\" target=\"_blank\">HPR Community News for January 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=3262\" target=\"_blank\">3262</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-02-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3262\" target=\"_blank\">My thoughts on diversity in Linux and open source</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0297.html\" target=\"_blank\">swift110</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3263\" target=\"_blank\">3263</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3263\" target=\"_blank\">My Beginnings in Tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0390.html\" target=\"_blank\">o9l</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3264\" target=\"_blank\">3264</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-02-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3264\" target=\"_blank\">Intro to Nagios</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3265\" target=\"_blank\">3265</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-02-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3265\" target=\"_blank\">My Chromebook Experience</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=3266\" target=\"_blank\">3266</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-02-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3266\" target=\"_blank\">Upgrading Debian on my raspberry pi</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=3267\" target=\"_blank\">3267</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-02-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3267\" target=\"_blank\">Ripping Media 2021</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=3268\" target=\"_blank\">3268</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3268\" target=\"_blank\">Video Game Review - Ark Survival Evolved</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0039.html\" target=\"_blank\">Enigma</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3269\" target=\"_blank\">3269</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-02-11</td>\n<td><a href=\"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\'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=3281\" target=\"_blank\">3281</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-03-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3281\" target=\"_blank\">HPR Community News for February 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=3282\" target=\"_blank\">3282</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-03-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3282\" target=\"_blank\">HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics</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=3283\" target=\"_blank\">3283</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-03-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3283\" target=\"_blank\">HPR RPG Club reviews Dead Earth</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=3284\" target=\"_blank\">3284</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-03-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3284\" target=\"_blank\">Introduction to gdb</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=3285\" target=\"_blank\">3285</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-03-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3285\" target=\"_blank\">Upgrading Lubuntu on my Samsung N150 Plus netbook</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=3286\" target=\"_blank\">3286</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-03-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3286\" target=\"_blank\">Wireguard How To</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3287\" target=\"_blank\">3287</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-03-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3287\" target=\"_blank\">Quick tip</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3288\" target=\"_blank\">3288</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-03-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3288\" target=\"_blank\">Linux Inlaws S01E25: The Grumpy Old Coders</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=3289\" target=\"_blank\">3289</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-03-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3289\" target=\"_blank\">NextCloud the hard way</a></td>\n<td><a href=\"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\'t able to join us in person but was very much there in spirit.</p>\r\n\r\n',268,0,0,'CC-BY-SA','fosdem,conference,podcasts,creative commons',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>, set to the current working directory. The shell user can set, change, remove and view environment variables for their own purposes as we will see in this episode. The Bash shell itself creates and in some cases manages environment variables.</p>\r\n<p>The environment contains global data which is passed down to subprocesses (<em>child</em> processes) by copying. However, it is not possible for a subprocess to pass information <b>back</b> to the superior (<em>parent</em>) process.</p>\r\n<h4 id=\"viewing-the-environment\">Viewing the environment</h4>\r\n<p>You can view the environment in a number of ways.</p>\r\n<ul>\r\n<li><p>From the command line the command <code>printenv</code> can do this (this is usually but not always a stand-alone command: it’s <code>/usr/bin/printenv</code> on my Debian system). We will look at this command later.</p></li>\r\n<li><p>The command <code>env</code> without any arguments does the same thing as <code>printenv</code> without arguments. This is actually a tool to run a program in a modified environment which we will look at later. The environment printing capability can be regarded as more of a bonus feature.</p></li>\r\n<li><p>Scripting languages like <code>awk</code> (as well as Python and Perl, to name just a few) can view and manipulate the environment.</p></li>\r\n<li><p>Compiled languages such as <code>C</code> can do this too of course.</p></li>\r\n<li><p>There are other commands that will show the environment, and we will look at some of these briefly.</p></li>\r\n</ul>\r\n<h4 id=\"changing-variables-in-the-environment\">Changing variables in the environment</h4>\r\n<p>The variables in the environment are not significantly different from the <em>shell parameters</em> we have seen throughout this Bash Tips series. The only difference is that they are marked for <em>export</em> to commands and sub-shells. You will often see variables (or parameters) in the environment referred to as <em>environment variables</em>. The Bash manual makes a distinction between ordinary parameters (variables) and environment variables, but many other sources are less precise about this in my experience.</p>\r\n<p>The standard variables in the environment have upper-case names (<code>HOME</code>, <code>SHELL</code>, <code>PWD</code>, etc), but there is no reason why a variable you create should not be in lower or mixed case. In fact, the Bash manual suggests that you should avoid using all upper-case names so as not to clash with Bash’s variables.</p>\r\n<p>Variables can be created and changed a number of ways.</p>\r\n<ul>\r\n<li>They can be set up at login time (globally or locally) through various standard configuration files. It is intended to look at this subject in an upcoming episode so we will leave discussing the subject until then.</li>\r\n<li>By preceding the command or script invocation with <em>name=value</em> expressions which will temporarily place these variables into the environment for the command</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\'s also important to understand how it works, so let\'s see it in a simple example, using the <code>Maybe</code> monad. So let\'s start by refreshing the implementation of the monad instance:</p>\r\n<pre><code>instance Monad Maybe where\r\n\r\n (>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b\r\n (>>=) Nothing _ = Nothing\r\n (>>=) (Just x) f = f x\r\n\r\n return :: a -> Maybe a\r\n return = Just\r\n</code></pre>\r\n<p>So let\'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\'s look at a bit more of a complex example. 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\'s IRC server is built into Matrix.org. If you already have a registered Nick on Freenode it is a simple process to associate your Matrix and Freenode accounts.</p></li>\r\n<li><p>Steps to bridge to a Freenode IRC room</p>\r\n<ol>\r\n<li>Start a direct message with @freenode_NickServ:matrix.org and send the command <code>identify nick pass</code> (replacing nick and pass with your credentials).</li>\r\n<li>Direct message @appservice-irc:matrix.org with the command <code>!storepass nick:pass</code></li>\r\n<li>Join the room #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 <a href=\"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\">Programming Book</a></li>\r\n</ul></li>\r\n<li>Growing plants</li>\r\n<li>That Audiobook Club though...</li>\r\n<li>Video games</li>\r\n<li>Single Board Computers\r\n<ul>\r\n<li>OpenBSD on <a href=\"https://www.openbsd.org/arm64.html\">Raspberry Pi</a></li>\r\n</ul></li>\r\n<li>Why haven\'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\'s Note</b>: show notes amended 2020-06-13 from comment)</small></small></p>\r\n<pre><code>systemctl stop docker\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),
|
|||
|
(3050,'2020-04-10','Linux Inlaws S01E04 What\'s in a name',4396,'Season 1, Episode 4. The episode where the legacy is revealed','<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>In this show the lads Martin and Chris speak about the legacy, its name and also introduce Tech Support from the Dark Side, a new hotline helping politicians and other users in need of computer support to cope with reality.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Martin’s BBC podcast: <a href=\"https://www.bbc.co.uk/programmes/w13xttx2/episodes/downloads\" class=\"uri\">https://www.bbc.co.uk/programmes/w13xttx2/episodes/downloads</a></li>\r\n<li>Chris’ food for thought: <a href=\"https://en.wikipedia.org/wiki/Moon_landing_conspiracy_theories\" class=\"uri\">https://en.wikipedia.org/wiki/Moon_landing_conspiracy_theories</a></li>\r\n<li>Martin’s new laptop spec: <a href=\"https://www.asus.com/Laptops/ROG-Strix-SCAR-III/Tech-Specs\" class=\"uri\">https://www.asus.com/Laptops/ROG-Strix-SCAR-III/Tech-Specs</a></li>\r\n<li>Chris’ documentary: <a href=\"https://en.wikipedia.org/wiki/Terminator:_The_Sarah_Connor_Chronicles\" class=\"uri\">https://en.wikipedia.org/wiki/Terminator:_The_Sarah_Connor_Chronicles</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','linux inlaws,communism,free and open source software',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\'re lucky it may even be labeled <em>Raspberry Pi Foundation</em>.</p>\r\n\r\n<p>In my case I want to locate these devices automatically using a script. So below we will explore some ways that you can approach the problem of locating devices on your network. All of them rely on trying to find the mapping between an Ethernet MAC Address, and a IP Address. It will help to understand a little about how Ethernet works. This is a nice short overview, <a href=\"https://www.youtube.com/watch?v=5u52wbqBgEY\">How does Ethernet work? (animated)</a> by <a href=\"https://www.youtube.com/channel/UCXkx8hX8Xo4lb7T0_-yZzVg\">Janos Pasztor</a></p>\r\n\r\n<h2 id=\"arp\">ARP</h2>\r\n\r\n<p>I don\'t know the network device you will be using so I\'d like to share a few ways of doing this using the <a href=\"https://en.wikipedia.org/wiki/Address_Resolution_Protocol\">ARP</a> protocol. This provides a mapping between a device\'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\'s assume it wants to connect to the local printer <code>192.168.1.2</code> that is on the same network, and it knows its IP Address. If your computer has already heard the printer communicate on the network, it will have already added the printer\'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\'s video</a></li>\r\n<li><a href=\"https://lbry.com/\">LBRY</a></li>\r\n<li>Driving is not fun</li>\r\n<li>More ffmpeg talk</li>\r\n<li>Bidets come up again</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>Close approximation of my first transformer.<br />\r\n<img src=\"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>Power supplies I had in my teens.<br />\r\n<img src=\"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<img src=\"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>Places I worked.\r\n<ul>\r\n<li>Manu-tronics<br />\r\n<a href=\"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>Bought out by Sanmina Corporation<br />\r\n<a href=\"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>Baxter Healthcare<br />\r\n<a href=\"https://www.baxter.com/\" class=\"uri\">https://www.baxter.com/</a></li>\r\n<li>Colleague 3 pump picture<br />\r\n<a href=\"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>Illinois Instrument (Systech Illinois)<br />\r\n<a href=\"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\'s hard to translate things like starship combat into an audio drama.</li>\r\n<li>Background sounds really sell the structure of these episodes as Star Trek.</li>\r\n<li>This proves that an abundance of canon is not a reason to reboot things. This finds a niche in an unexplored part of the timeline and works.</li>\r\n<li>The warp sound effect for jumping to warp is weird.</li>\r\n<li>We think LostnBronx should write a StarDrfiter Audiodrama for us to produce.</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 something from Kroger that I think resembles chocolate ice cream.</li>\r\n<li><strong>x1101:</strong> Throwback style Mt. Dew made with real, diabetes inducing, sugar</li>\r\n<li><strong>pokey:</strong> Led Light Bulbs....wait what?!?!</li>\r\n<li><strong>FiftyOneFifty:</strong> Johnny Walker Black</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>Recasting the captain was a bad idea.</li>\r\n<li>Thaj hates Cthulhu episodes of scifi shows.</li>\r\n<li>Which Star Trek is the best (the correct answer is DS9)</li>\r\n<li>Star Trek as an allegory for the real world.</li>\r\n<li>Pokey doesn\'t like time travel in Star Trek.</li>\r\n<li>And...we\'re back on DS9</li>\r\n<li>We geek about the different types of ships in Trek.</li>\r\n<li>Since we didn\'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\'t mind a few cyborg modifications</li>\r\n<li><a href=\"https://www.panmacmillan.com/author/peterfhamilton\">Peter F. Hamilton</a></li>\r\n<li>Lock Picking</li>\r\n<li><a href=\"https://cs608829.vk.me/v608829353/ac55/QTzYhbf8oUc.jpg\">I Don\'t want to live on this planet anymore</a></li>\r\n<li>Cory Doctrow\'s <a href=\"https://craphound.com/makers/download/\">\"Makers\"</a></li>\r\n<li><a href=\"https://www.shapeways.com/product/T3ZY4LFDB/thorn-dice-set-with-decader\">3D printed metal dice</a></li>\r\n<li><a href=\"https://www.aliexpress.com/item/Practical-Portable-Casino-Spade-A-Poker-Card-Beer-Bottle-Opener-Stainless-Steel-Wine-Bottle-Opener-for/32243512631.html\">Ace of spaces credit card bottle opener</a></li>\r\n<li><a href=\"https://awesomestufftobuy.com/critical-hit-d20-ice-mold/\">Dice Ice</a></li>\r\n<li><a href=\"https://awesomestufftobuy.com/come-in-go-away-doormat/\">Doormat</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
|
|||
|
(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\'m amazed I didn\'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\'s high time I submitted a sample episode from <a href=\"https://escapepod.org/\">Escape Pod</a>, one of the many excellent Podcasts from the <a href=\"https://www.escapeartists.net/\">Escape Artists</a>. They are a serious platform for the best science fiction out there today.\r\n</p>\r\n<p>\r\nWith so much choice, I can pick a recommendation that I think will be right up HPR\'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\'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=3304\" target=\"_blank\">3304</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3304\" target=\"_blank\">Newsflash 21/01/04</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3305\" target=\"_blank\">3305</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3305\" target=\"_blank\">Nagios part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3306\" target=\"_blank\">3306</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3306\" target=\"_blank\">HPR Community News for March 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=3307\" target=\"_blank\">3307</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3307\" target=\"_blank\">Git worktree</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=3308\" target=\"_blank\">3308</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-04-07</td>\n<td><a href=\"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\'s article from 2019 on Richard M. Stallman</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3312\" target=\"_blank\">3312</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-04-13</td>\n<td><a href=\"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\'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=3326\" target=\"_blank\">3326</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3326\" target=\"_blank\">HPR Community News for April 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=3327\" target=\"_blank\">3327</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3327\" target=\"_blank\">Looking into Ceph storage solution</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=3328\" target=\"_blank\">3328</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3328\" target=\"_blank\">Pandas Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0039.html\" target=\"_blank\">Enigma</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3329\" target=\"_blank\">3329</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3329\" target=\"_blank\">Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel</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=3330\" target=\"_blank\">3330</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-05-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3330\" target=\"_blank\">A Layer Mask Project</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=3331\" target=\"_blank\">3331</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3331\" target=\"_blank\">Audio for Podcasting: Episode 1 - The Microphone</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0270.html\" target=\"_blank\">Thaj Sara</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3332\" target=\"_blank\">3332</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-05-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3332\" target=\"_blank\">My current Devices</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3333\" target=\"_blank\">3333</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-05-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3333\" target=\"_blank\">My TV Stand devices and Pine64.org</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3334\" target=\"_blank\">3334</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-05-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3334\" target=\"_blank\">Infosec Podcasts Part 2 - General Information Security</a></td>\n<td><a href=\"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>). The literal value of characters between the quotes is preserved. Single quotes are not allowed, even if preceded by backslash escape characters.</p></li>\r\n<li><p>Double quotes, also called <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=\"Bash Reference Manual: 3.1.2 Quoting\">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\'s show is about my recently started hobby of restoring Matchbox models. I talked about this on the New Year show and Ken said it deserved a show in its own right.\r\n</p>\r\n<p>\r\nSo today I briefly talk about how I got into the hobby through watching YouTube Videos of Marty\'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\'s ingrained in your memory banks. 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\'s connected via ethernet. One is on 192.168.2.5 with a gateway of<br />192.168.2.6, with the other on 192.168.2.6 with a gateway of 192.168.2.5.<br />Essentially just a crossover network. The reason for this is running Kodi on Pi4<br />has choppy video, but is better at running video encoding. So I linked it to a<br />Pi3 to run Kodi via a samba share from the Pi4.</p>\r\n<p>Used OSMC for the kodi interface.<br />It was the distribution that was stable on my Pi and booted right to the Kodi<br />interface.</p>\r\n<p><a title=\"OSMC - Open Source Media Center\" href=\"https://osmc.tv/download/\">https://osmc.tv/download/</a></p>\r\n<p><code>lsblk</code> - List block devices<br /><code>dd status=progress if=osmc.img of=/devsdX</code></p>\r\n<h3>Installing Slackware.</h3>\r\n<p>Get sources<br /><a title=\"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\'t like knowing what is going on until halfway through the book, then this book is for you.</li>\r\n<li>The book uses a very interesting type of speech that was all kinda dig.</li>\r\n<li>Some of us liked this book so much that we mainlined the <a href=\"https://scribl.com/books/PCA29/tincture-and-the-devil-pulls-six-guns\">sequel</a> immediately.</li>\r\n<li>This feels a lot like \"The Dark Tower\" series by Stephen King, and even references it.</li>\r\n<li>We talk about the use of Hebrew in the character names in the story.</li>\r\n<li>The music for the book is excellent, and matches the story very well.</li>\r\n<li>How do you make alcohol in the apocalypse?</li>\r\n<li>This also feels a lot like the Fallout games.</li>\r\n<li>The return of PLOT BULLETS!!!!</li>\r\n</ul>\r\n<h2 id=\"beverage-reviews\">Beverage Reviews</h2>\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> Made my own tincture of homemade iced tea and lemonade mixed. Tastes good. Thaj still can\'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\'s pretty good. I Like it, but I don\'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\'t messing around, they make beer with cactus. I really did not enjoy the first beer but by the end of the six it is growing on me. Though it would be refreshing on a hot day, I doubt I will be buying it again.</li>\r\n</ul>\r\n<h2 id=\"things-we-talked-about\">Things We talked about</h2>\r\n<hr />\r\n<ul>\r\n<li>We talk about the connections to \"The Dark Tower\"</li>\r\n<li><a href=\"https://i44.tinypic.com/2ptqn4o.jpg\">\"Blue\" Irons (Marcs/Afulan/Rolands guns)</a></li>\r\n<li><a href=\"https://www.gunblast.com/images/SHOT2003_Day1/DSC05601.jpg\">Another big gun</a></li>\r\n<li>Is this time travel, dimension travel, or something entirely different?</li>\r\n<li>The ties to Judeo-Christian mythology is interesting to Thaj.</li>\r\n<li>Is getting the answers about the setting what you really want?</li>\r\n<li>The book doesn\'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\'s open source website: <a href=\"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, Focal Fossa, Ubuntu',0,0,1);
|
|||
|
INSERT INTO `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\'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=3347\" target=\"_blank\">3347</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3347\" target=\"_blank\">Ethical Analysis of Renewable Energy and Conservation</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3348\" target=\"_blank\">3348</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3348\" target=\"_blank\">Feedback on the Article by hedorah about HPR</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=3349\" target=\"_blank\">3349</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3349\" target=\"_blank\">Linux Inlaws S01E31: Interview with Paul Ramsey FOSS aficionado and entrepreneur</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=3350\" target=\"_blank\">3350</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3350\" target=\"_blank\">Blending Layers</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=3351\" target=\"_blank\">3351</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3351\" target=\"_blank\">HPR Community News for May 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=3352\" target=\"_blank\">3352</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3352\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3353\" target=\"_blank\">3353</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3353\" target=\"_blank\">My terminal journey, part 01.</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=3354\" target=\"_blank\">3354</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3354\" target=\"_blank\">My Devices</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=3355\" target=\"_blank\">3355</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-06-11</td>\n<td><a hre
|
|||
|
(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\'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=3369\" target=\"_blank\">3369</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3369\" target=\"_blank\">Linux Inlaws S01E33: The Return of the Rust</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=3370\" target=\"_blank\">3370</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3370\" target=\"_blank\">More Free Images?</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=3371\" target=\"_blank\">3371</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3371\" target=\"_blank\">HPR Community News for June 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=3372\" target=\"_blank\">3372</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3372\" target=\"_blank\">HPR 2020 - 2021 New Years Eve Show Episode 8</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3373\" target=\"_blank\">3373</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3373\" target=\"_blank\">HPR RPG Club reviews Starfinder</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=3374\" target=\"_blank\">3374</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3374\" target=\"_blank\">Why I love the MacBook Mid 2010</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0297.html\" target=\"_blank\">swift110</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3375\" target=\"_blank\">3375</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3375\" target=\"_blank\">Car ODB2 Fun and Fail</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=3376\" target=\"_blank\">3376</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3376\" target=\"_blank\">Making books with Linux - part 2</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://hackerpublicradio.org/eps.php?id=3377\" target=\"_blank\">3377</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3377\" target=\"_blank\">Chromebook support and more</a></td>\n<td><a href=\"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, unless you are willing to loose the money you are paying.</p>\r\n<h2 id=\"requirements\">Requirements</h2>\r\n<ul>\r\n<li>Supported for 3-5 years.</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<h3 id=\"support\">Support</h3>\r\n<p>Getting a brand new phone means that Developers have not had time to release code.</p>\r\n<p>Older phones are no longer available for purchase, and actually become more expensive.</p>\r\n<p>Too old a version and apps are no longer supported.</p>\r\n<h2 id=\"finding-a-phone-that-can-be-unlocked\">Finding a phone that can be unlocked</h2>\r\n<p>I use a site called <a href=\"https://tweakers.net/smartphones/vergelijken/\">Tweakers.net</a> which allows you to do parameter search.</p>\r\n<p>Set the maximum price you are willing to pay.</p>\r\n<p>The current version of Android is 10 so select only those. You want your phone to be supported for as long as possible.</p>\r\n<p>Make any other selections that you think are critical, like memory, processor etc but be prepared to adjust this later.</p>\r\n<p>In my case I selected a minimum of 4G Ram and 64G Storage the first time.</p>\r\n<p>Sort by price low to high, and loop through, finding what support there is for <a href=\"https://twrp.me/Devices/\">TWRP</a>. That will tell you how open the phone is. If the Manufacturer support (the spirit of) unlocking, then remove them from the list.</p>\r\n<ul>\r\n<li>HTC support unlocking but not don\'t give code to the developers so it\'s useless.</li>\r\n<li>Motorola support was good but since the take over by Lenovo they have stopped supporting unlocking.</li>\r\n<li>Google phones are unlocked and are ideal for developers but are too expensive.</li>\r\n<li>Xiaomi requires you to wait until the EU 14 day no questions asked warranty has expired.</li>\r\n<li>Fairphone too expensive.</li>\r\n<li>PinePhone may be an option but people report the current version being too slow.</li>\r\n</ul>\r\n<p>After finding a phone that can be unlocked and rooted, then check to see if there is an <em>official</em> version for <a href=\"https://wiki.lineageos.org/devices/\">LineageOS</a></p>\r\n<p>If no phone meets all the requirements then try the next one.</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\'s very likely that it may be a different version than the one supported. I have had to return several phones that I had unlocked and just hoped that the supplier would take them back and refund me.</p>\r\n<p>Even on supported phones, especially newer ones, 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\'s EdgeOS woes and discover that MIPS is indeed a CPU architecture supported by standard Debian. The show concludes with a short review of Claudio\'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\'s 80 column rant: <a href=https://lkml.iu.edu/hypermail/linux/kernel/2005.3/08168.html target=_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\'t a brag-a-thon about my new rig. I try to discuss what surprised me most about how PC building has changed in the last 10-15 years.</p>\r\n<p>The parts for my build:</p>\r\n<ul>\r\n<li>AMD Threadripper 1920X 3.5 GHz 12-Core Processor</li>\r\n<li>ASRock X399 Taichi ATX sTR4 Motherboard</li>\r\n<li>EVGA 850 B3, 80+ Bronze 850W, Fully Modular PSU</li>\r\n<li>Noctua NH-U14S TR4-SP3, Premium-Grade CPU Cooler</li>\r\n<li>MSI Gaming GeForce GT 710</li>\r\n<li>Fractal Design Define C case</li>\r\n<li>Corsair LPX 32GB (2x16GB) 3200MHz C16 DDR4 DRAM Memory Kit</li>\r\n<li>GELID GC-Extreme thermal paste</li>\r\n<li>Random 500GB SSD from my parts bin</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\'s explanation of the mathematical concept of metric.','<p>Whether you are writing a simple darts simulation 8-bit computer game or are traversing the galaxy Elite-style, you might well find yourself tangling with the mathematical concept known as the metric. In this episode I describe the mathematical concept of a metric which I address with the following questions. Brief answers are provided below but the show, I hope, gives more context and colour.</p>\r\n<h3 id=\"what-is-a-metric\">What is a metric?</h3>\r\n<p>A type of ruler that is used in mathematics.</p>\r\n<h3 id=\"why-not-just-use-a-ruler\">Why not just use a ruler?</h3>\r\n<p>You can if all you want to do is measure distances in real life but if you want to work out distances from coordinates you need a metric.</p>\r\n<h3 id=\"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\'t that pythagoras?</h3>\r\n<p>Yes, it is, but using the word distance and two co-ordinates.</p>\r\n<h3 id=\"what-other-co-ordinates-can-we-use-for-a-flat-2d-surface\">What other co-ordinates can we use for a flat 2D surface?</h3>\r\n<p>Those x and y co-ordinates are called Cartesian co-ordinates. Instead we can use polar co-ordinates: radius r, and the angle φ (or phi) measured clockwise from the vertical. These might be more convenient in some cases, say for a dart board computer game, or if you are working with a compass bearing, eg head east for 1 km would become start at the origin (r=0) and move with phi=90° until r=1 km.</p>\r\n<h3 id=\"does-pythagoras-still-work-in-polar-coords\">Does Pythagoras still work in polar coords?</h3>\r\n<p>Yes and no. No, it is no longer true to say that distance squared equals radius squared plus φ squared, but since the geometry is the same - a flat 2D surface - we can say that a <em>change</em> in distance squared equals the <em>change</em> in radius squared plus radius squared times the <em>change</em> in φ squared.</p>\r\n<h3 id=\"why-do-we-have-to-talk-about-changes-in-s-r-and-φ\">Why do we have to talk about changes in s, r and φ?</h3>\r\n<p>Because one of our coordinates now appears in the metric. That is, the radius squared multiplies on to the change in φ squared. This means that a change in φ depends on r. In other words, bigger circles have bigger circumferences. 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 6400 km. So up to about 100 km that\'s fine for many purposes, but not when flying a plane over great distances, say London to Singapore.</p>\r\n<h3 id=\"why-not\">Why not?</h3>\r\n<p>The surface of the Earth may look locally flat but of course the Earth has a curved 2D surface. This means that this surface has a non-euclidean geometry, which means that Pythagoras does not hold and we cannot even define Cartesian co-ordinates, let alone use them.</p>\r\n<h3 id=\"i-want-to-know-more-or-my-mind-is-not-fully-blown\">I want to know more OR my mind is not fully blown.</h3>\r\n<p>I will probably do more shows on this.</p>\r\n<h3 id=\"can-i-have-some-links\">Can I have some links?</h3>\r\n<p>Sure:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Alcubierre_drive\">Alcubierre drive</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darts\">Dart board</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Polar_coordinate_system\">Polar coordinates</a></li>\r\n<li><a href=\"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\'s walk, I talk a little bit about what happened.</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\'t have it any other way, I use Fuguita for my main Desktop these days.</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\'s and 9 volt batteries','<p>I talk about converting my I386 Dell Mini 10 running OpenBSD6.7 to the new FFS2 file system. I also talk about the two new features of FuguIta 6.7 which are data encryption and the use of UUID\'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\'t or won\'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\'s approval. To do this for D&D you need to publish through the <a href=\"https://support.dmsguild.com/hc/en-us/articles/360024677993-Getting-Started-on-Dungeon-Masters-Guild\">Dungeon Masters\' 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\'s link: <a href=https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.html target=_blank>https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.html</a></li>\r\n <li>Secret Diary of a Call Girl: <a href=https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girl target=_blank>https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girl</a></li>\r\n <li>Sophie Wilson interview: <a href=\"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','Python 3.9, Mortgages in New York, Williamsburg, Wirecard, middle-aged blondes',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\'s attitude towards snaps, a fun breach of a health\r\nservice provider in the UK and why broadcasters should stick to\r\nmonopolies.</p>\r\n<ul>\r\n<li>MINT Chromium issue: <a href=https://blog.linuxmint.com/?p=3766 target=_blank>https://blog.linuxmint.com/?p=3766</a></li>\r\n<li>PostgreSQL: <a href=https://www.postgresql.org target=_blank>https://www.postgresql.org</a></li>\r\n<li>Babylon Health breach: <a href=https://www.bbc.com/news/technology-52986629 target=_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\'s show require parental supervision, and are not recommended for young people unless properly supervised. So with that public service announcement out of the way let\'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\'s talk about paint removal, obviously the first one you will think of is some kind of chemical paint stripper and I use 2 different methods of this. The first and probably the safest in the first instance is a commercial paint stripper from one of the chain DIY stores here in the UK, B&Q. There is a local store about 10 minutes drive from me so it is convenient during normal shopping times just to pop in and grab a 2.5Ltr container of their own brand DIAL paint stripper that is fantastic for this job and quite economic.</p>\r\n<p>The second is a little more aggressive if you need fast results but requires a little more in the way of care when using it as it is very corrosive and can be harmful if the fumes are breathed in, or the product gets onto your skin or in your eyes. This is caustic soda and I buy this through eBay and have it delivered in 1Kg pouches. It needs to be stored in an air tight container in a dry environment to keep it from getting damp as this is a potential fire hazard as if it gets contaminated buy moisture a chemical reaction starts which generates heat. So if you go with the caustic soda method you need to take adequate safety precautions. With the Jaguar I mainly used the caustic soda method to remove the paint but one casting I put in the paint stripper to show that method.</p>\r\n<p>With the caustic soda place the castings in a jar with enough room to cover with just boiled water so that it does not overflow when the caustic soda crystals are added slowly, I use a long handle tea spoon and add 2-3 tea spoons of the soda until it has a good fizz. Then leave for about 15 minutes but the longer the better, I sometimes do this and leave over night and this gives a great result. Remember to wear gloves when doing this to prevent getting the caustic on your hands.</p>\r\n<p>Picture 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/img_002_thumbnail.jpg\" alt=\"Picture 002\" /></a></p>\r\n<p>Picture 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>Picture 004<br />\r\n<a href=\"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\'t make a carseat that doesn\'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\'s and how he uses them as a little \"getaway\" of the rush of modern day life. Show recorded in the car, excuse the road noise.</p>',111,0,0,'CC-BY-SA','Retro computer',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\'s to light even without an audio input</li>\r\n<li>Ended up using an generic Arduino Nano to control the project</li>\r\n</ul></li>\r\n<li><p>Modified an audio mic preamplifier from Amazon to condition the output from the laptop music source</p></li>\r\n<li><p>Ran the output from this to A0 on the Arduino</p></li>\r\n<li><p>Split the signal out to an external speaker</p></li>\r\n<li><p>Used digital outputs listed in the sketch to power the LED indicators</p>\r\n<ul>\r\n<li>For reference, a sketch is the program that the Arduino runs through a loop.</li>\r\n</ul></li>\r\n<li><p>Used pins 10 to 12 as AnalogWrite pin to provide the power to the solid state relays.</p></li>\r\n<li><p>Used a dremel to separate the power to the hot side of the two power outlets</p>\r\n<ul>\r\n<li>Used three of the outlets to power three strings of Christmas tree LED lights.</li>\r\n<li>Used the other outlet to power the Arduino</li>\r\n</ul></li>\r\n<li><h4 id=\"bonus\">Bonus</h4>\r\n<ul>\r\n<li>Using these particular solid state relays, there is still a 10Vac output in <em>off</em> state. It actually worked for good, as the lights are at a nice brightness without a music input.</li>\r\n<li>Kindly leave a note in the comments if this is common to Solid State relays.</li>\r\n</ul></li>\r\n</ol>\r\n<h3 id=\"links\">Links:</h3>\r\n<h4 id=\"gy-max4466-electret-microphone-amplifier\">GY-MAX4466 Electret Microphone Amplifier</h4>\r\n<p><a href=\"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<h4 id=\"solid-state-relay-on-ebay\">Solid State relay on Ebay</h4>\r\n<p><a href=\"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<h4 id=\"elegoo-for-arduino-nano-v3.0\">ELEGOO for Arduino Nano V3.0</h4>\r\n<p><a href=\"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<h4 id=\"analogwrite\">AnalogWrite</h4>\r\n<p><a href=\"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><a href=\"https://www.arduino.cc/en/Tutorial/AnalogInOutSerial\">https://www.arduino.cc/en/Tutorial/AnalogInOutSerial</a></p>\r\n<h3 id=\"my-video\">My video</h3>\r\n<p><a href=\"https://archive.org/details/vid-20191217-192821-no-audio\">Sound\r\nReactive Christmas lights on Archive.org</a></p>\r\n<p><img src=\"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>Here is the song I meant to add, to see if it matches my video of the lights.</p>\r\n<p>It is the Trans Siberian Orchestra, Carol of the Bells.</p>\r\n<p><a href=\"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, Solid state relays',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\'t fit neatly into one category.','<p>The Miscellaneous tools do a number of useful things without fitting neatly into a category. The Paths tool takes Selections up a notch and also lets you add interesting effects. Zoom is one you would use every day, and Measure is handy in some situations. Finally, GEGL Operations are the future of all GIMP development</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/B%C3%A9zier_curve\" class=\"uri\">https://en.wikipedia.org/wiki/B%C3%A9zier_curve</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Font_hinting\" class=\"uri\">https://en.wikipedia.org/wiki/Font_hinting</a></li>\r\n<li><a href=\"https://www.webopedia.com/TERM/A/antialiasing.html\" class=\"uri\">https://www.webopedia.com/TERM/A/antialiasing.html</a></li>\r\n<li><a href=\"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><a href=\"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><a href=\"https://www.youtube.com/watch?v=aEsqVMCgpJ8\" class=\"uri\">https://www.youtube.com/watch?v=aEsqVMCgpJ8</a></li>\r\n<li><a href=\"https://www.patreon.com/m/649544/posts\" class=\"uri\">https://www.patreon.com/m/649544/posts</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</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\'s surface as an example we can use familiar the co-ordinates of longitude and latitude, illustrated on this diagram:</p>\r\n<img alt=\"Sphere with latitude and longitude\" src=\"https://hackerpublicradio.org/eps/hpr3126/FedStats_Lat_long.png\">\r\n\r\n<p><em>Source: Public domain, <a href=\"https://commons.wikimedia.org/wiki/File:FedStats_Lat_long.png\">Wikimedia commons</a></em></p>\r\n<p>On the left we see circles of constant latitude. The largest of these circles is at latitude 0° and is called the <strong>equator</strong>. Its circumference is equal to that of the Earth and so it is an example of a <strong>great circle</strong>.</p>\r\n<p>On the right we see lines of constant longitude. These run from pole to pole and are perpendicular to the equator. Each of these lie on a great circle (in fact they are half a great circle each).</p>\r\n<p>Great circles on the surface of a sphere are analogous to straight lines on a flat 2D surface. They offer a way to connect any two points with the shortest distance. Lines in 2D or great circles on a sphere are examples of what is called a <strong>geodesic</strong>. In physics, particles that are not subject to any forces will follow geodesics.</p>\r\n<p>In Einstein\'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\'s gravitational force and replace it by a description that only involves the curvature of spacetime. I only touch on this in this show but will likely return to it in future shows.</p>\r\n<p>Here are the equations discussed in this show and the previous one:</p>\r\n<img alt=\"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\'s all time favorite audiobook.</li>\r\n<li>This book takes the \'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\'s muggy here today, so I\'m happy to discover that it\'s just as good in ice coffee. Roma Sambuka does not seem to have a website. The trick, imho, is to make your coffee as you normally would, then add the booze. 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\'t keep these books straight. Just read them all. 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\'s reading voice is perfect for this series.</li>\r\n<li>Wormholes, wormholes, wormholes.</li>\r\n<li>We discuss the details of how to use the technology from this series to fly into a system.</li>\r\n<li>Pokey wishes promotions in the real world worked they way they work on the ship.</li>\r\n<li>Find the Podiobook Easter eggs.</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/P98FB/the-terrible-business-of-salmon-and-dusk\">The Terrible Business of Salmon & Dusk</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>Daredevil</li>\r\n<li>The DCEU</li>\r\n<li>We talk about a picture I can no longer find a link for.</li>\r\n<li>Pokey gets a new <a href=\"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>FiftyOneFifty talks about actual computer stuff.</li>\r\n<li>Windows probs...</li>\r\n<li>Web Browsers editorializing the Internet.</li>\r\n<li>Is Flash dead yet?</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 s
|
|||
|
(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\'m listening to</p>\r\n<p>I almost never produced this podcast as I discovered part way through that I had covered it in my show \"Describing how I listen to podcasts PART 2\" (HPR 2889). 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\'ve previously mention I used cordless headphones to listen to my podcasts and audiobooks. The headphones come with base transmitter which was originally plugged into my old Compaq home server. This server was generally turned on when I came home from work and turned off before going to bed. Each night I had to remember which track I was on and where about in the track. I often forgot and had to try and find the place again. This quickly became a tiresome task.</p>\r\n<p>My first solution was to use some bash Kung Fu jiggery pokery to create list of files which I placed in each podcast folder. In the process I learned a bit about using bash commands.</p>\r\n<p>Command used to create index</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\'s Holy <s>Gr</s>ail - Black Knight\'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\'s just easier to nuke and pave.</li>\r\n<li>New (Old) phones.</li>\r\n<li>Android File Explorers</li>\r\n<li>Audio Book Player Link: <a href=\"https://material-player.en.uptodown.com/android\">https://material-player.en.uptodown.com/android</a></li>\r\n<li>F-Droid link: Audiobook player now renamed Voice <a href=\"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\'s not available so MrX joins Dave to talk about the shows and comments in August','<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\'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\'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=3413\" target=\"_blank\">3413</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3413\" target=\"_blank\">Bash snippet - using coproc with SQLite</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://hackerpublicradio.org/eps.php?id=3414\" target=\"_blank\">3414</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3414\" target=\"_blank\">Critical Thinking may make You Critical of the Covid Crisis</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3415\" target=\"_blank\">3415</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3415\" target=\"_blank\">Hacking Stories with Reacted: part 3</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=3416\" target=\"_blank\">3416</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3416\" target=\"_blank\">HPR Community News for August 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=3417\" target=\"_blank\">3417</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3417\" target=\"_blank\">Ceph cluster hardware</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=3418\" target=\"_blank\">3418</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3418\" target=\"_blank\">My gEeeky Experiment - Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3419\" target=\"_blank\">3419</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3419\" target=\"_blank\">Linux Inlaws S01E38: Tiny kernels</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=3420\" target=\"_blank\">3420</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-09-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3420\" target=\"_blank\">Normal Layer Modes: Erase, Merge, and Split</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=3421\" target=\"_blank\">3421</a></strong></td>\n<td>Mon</td>\n<td class=\"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\'ve never attended, but I loved this year, where I could be a part of the experience.</p>\r\n<p>This recording was made at 01.00 AM right after the festival had ended, so I still had the hype, totally sober but euphoric.</p>\r\n<ul>\r\n<li><p>Katy Perry<br />\r\n<a href=\"https://www.youtube.com/watch?v=i65puYqFh6Q\" class=\"uri\">https://www.youtube.com/watch?v=i65puYqFh6Q</a></p></li>\r\n<li><p>David Guetta<br />\r\n<a href=\"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 \'5 second Fix\' 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\'ll go deeper!</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.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><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.webopedia.com/TERM/A/alpha_channel.html\" class=\"uri\">https://www.webopedia.com/TERM/A/alpha_channel.html</a></li>\r\n<li><a href=\"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\'t know the working voltage of the bulb within. He asked me if there was a way of working it out.</p>\r\n<p>Well first of all before I go any further I should probably say I\'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\'t such a thing as a working voltage it just depends on how long you want the bulb to last. For this reason I always turn down the brightness on any car I own that his dimmable dashboard lights changing these bulbs can be a real pain and or can be expensive.</p>\r\n<p>Sometimes the stated working voltage for a bulb can be misleading for example a car bulb will often state a working voltage of 12V but is likely to be running at a higher voltage when the engine is running due to the operation of cars alternator.</p>\r\n<p>Another person suggested trying to estimate the length of the filament and using this to determine the working voltage.</p>\r\n<p>Yet somebody else suggested just using a variable supply and to just slowly increase the voltage until a reasonable amount of light is generated. This might be quite simple if it\'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\'t so simple if bulb requires a higher voltage.</p>\r\n<p>In the end I just passed this information onto Dave wishing him luck in his path to discovering the optimal working voltage for his lantern.</p>\r\n<p>Feel free to write a comment if any of you out there have any other idea on finding the working voltage of a bulb this way it can be shared with the rest of us during the Community Ne
|
|||
|
(3147,'2020-08-25','NIST\'s Quantum Cryptography Update',825,'NIST has concluded Round Two of the quantum encryption search and moved to Round Three','<p>NIST initiated a competition to find and test algorithms for quantum encryption that would resist quantum decryption back in December of 2016. Two rounds of testing have been completed, and an initial group of 69 submissions have been winnowed to 15. These 15 are now in Round Three of the testing process, and it is anticipated that as many as 4 of them will be approved as standards. This news update is intended to bring you up to date on the process.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/encryption-and-quantum-computing/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/encryption-and-quantum-computing/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2860\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2860</a></li>\r\n<li><a href=\"https://letsencrypt.org/\" class=\"uri\">https://letsencrypt.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Public-key_cryptography\" class=\"uri\">https://en.wikipedia.org/wiki/Public-key_cryptography</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Whitfield_Diffie\" class=\"uri\">https://en.wikipedia.org/wiki/Whitfield_Diffie</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Martin_Hellman\" class=\"uri\">https://en.wikipedia.org/wiki/Martin_Hellman</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Ralph_Merkle\" class=\"uri\">https://en.wikipedia.org/wiki/Ralph_Merkle</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pretty_Good_Privacy\" class=\"uri\">https://en.wikipedia.org/wiki/Pretty_Good_Privacy</a></li>\r\n<li><a href=\"https://gcn.com/articles/2016/12/22/nist-quantum-encryption.aspx\" class=\"uri\">https://gcn.com/articles/2016/12/22/nist-quantum-encryption.aspx</a></li>\r\n<li><a href=\"https://gcn.com/articles/2019/02/04/nist-quantum-semifinals.aspx\" class=\"uri\">https://gcn.com/articles/2019/02/04/nist-quantum-semifinals.aspx</a></li>\r\n<li><a href=\"https://csrc.nist.gov/publications/detail/nistir/8309/final\" class=\"uri\">https://csrc.nist.gov/publications/detail/nistir/8309/final</a></li>\r\n<li><a href=\"https://www.nist.gov/news-events/news/2020/07/nists-post-quantum-cryptography-program-enters-selection-round\" class=\"uri\">https://www.nist.gov/news-events/news/2020/07/nists-post-quantum-cryptography-program-enters-selection-round</a></li>\r\n<li><a href=\"https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html\" class=\"uri\">https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/nists-quantum-cryptography-update-20200815/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/nists-quantum-cryptography-update-20200815/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','security, encryption, quantum computing',0,0,1),
|
|||
|
(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\'s Four Seasons, celebrating the Creative Commons license','<p>\r\nAntonio Vivaldi composed The Four Seasons (\'Le quattro stagioni\' in its original Italian) in 1723. It is a set of 4 violin concertos that propose an early form of descriptive music: for example, Winter makes prominent use of pizzicato notes in high registers, whereas Summer evokes a storm in its final movement. The work was first presented as part of Op. 8, being later catalogued as RV 269, 315, 293 & 297. The Four Seasons remain very popular to this day, some of its concertos spawning a great number of derivative works, whereas thousands of recordings of the original pieces have been made. It is still debated if Vivaldi wrote this concertos to accompany four sonnets that may have been written by himself. <br />\r\nFrom <a href=\"https://musopen.org/music/14910-the-four-seasons-op-8/\">Vivaldi The Four Seasons, Op. 8</a>\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://musopen.org/music/performer/the-modena-chamber-orchestra/\">The Modena Chamber Orchestra Music</a>\r\n</p>',383,22,0,'CC-BY-SA','Vivaldi, four seasons, creative commons',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\'m here again with another story on pentesting and security, straight from the trenches.</p>\r\n<p>Today I\'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\' The access controls they installed even had a dual function and could be used both as an RFID reader and as a fingerprint reader. So, they were already trying their best to secure their on-site intellectual property. And that\'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\'d start with a week of preparation and scoping the place.</p>\r\n<p>So how do you do this? Well, we knew the address of course so first we checked out the place on Google Maps. And we were pretty lucky: Google had just recently updated their imagery of the area which meant we had recent maps to work with and the entire thing could be viewed in 3D with a fair amount of detail. That\'s pretty much as perfect as it comes when you\'re planning to do a major heist on a place in the physical world out there :-) So, we started with scouting the area from behind our laptops. We saw where all the entrances to the building were. We also saw that on the frontside the building just gave access to the street, while on the backside of the premise there was a public park. This looked very promising as a potential entrypoint, so our next step would be to actually physically go there and scout the area.</p>\r\n<p>So, first we went there during daylight hours and just took a drive around the block using a rental car. We\'d look for entrances to the building, camera\'s guarding these and the general view of the area, basic things… We didn\'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\'t draw any attention by just casually walking around and having a closer look.</p>\r\n<p>The main entrance to the building was in a quiet street which led to a small square where a few kids were playing, and on the other side there was a street with some shops and a few restaurants. The entrance to our clients building had a gate through which we could see a quiet courtyard and the general layout of the building. The first thing that drew our attention was an access control device guarding the entrance, it was a fingerprint reader and it had a brand name Suprema printed on it. Straight across the courtyard we could see the trees of the neighboring park. There was a rooftop terrace on the first floor which gave access to the offices of our client. We also noticed the wall that separated this terrace from the park and it was huge, at least 6 meters.</p>\r\n<p>We couldn\'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\'s episode on how he listens to podcasts','<h2 id=\"introduction\">Introduction</h2>\r\n<p>I have spoken in the past about the <a href=\"https://hackerpublicradio.org/eps.php?id=2211\" title=\"My podcast workflow\">podcast management system</a> I have created, but have never gone into much detail about how I manage the playing of episodes.</p>\r\n<p>Prompted by <a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX’s</a> <a href=\"https://hackerpublicradio.org/eps.php?id=3132\" title=\"Keeping track of where I am\">HPR episode hpr3132, “Keeping track of where I am”</a> I will describe it now.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3161/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.rockbox.org/\">Rockbox - an alternative operating system for certain music players</a></li>\r\n<li><a href=\"https://www.figlet.org/\">figlet - a program for making large letters out of ordinary text</a></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=1656\">hpr1656 :: My audio player collection</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1992\">hpr1992 :: How I’m handling my podcast-subscriptions and -listening</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2211\">hpr2211 :: My podcast workflow</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3132\">hpr3132 :: Keeping track of where I am</a></li>\r\n</ul></li>\r\n</ul>',225,0,1,'CC-BY-SA','podcast,software,mp3 player,database',0,0,1),
|
|||
|
(3164,'2020-09-17','I\'m Learning Spanish',989,'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.</p>\r\n<ul>\r\n<li><a href=\"https://www.babbel.com/\" class=\"uri\">https://www.babbel.com/</a></li>\r\n<li><a href=\"https://actualfluency.com/babbel-review/\" class=\"uri\">https://actualfluency.com/babbel-review/</a></li>\r\n<li><a href=\"https://www.trustpilot.com/review/babbel.com\" class=\"uri\">https://www.trustpilot.com/review/babbel.com</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/rosetta-stone-vs-babbel/\" class=\"uri\">https://www.alllanguageresources.com/rosetta-stone-vs-babbel/</a></li>\r\n<li><a href=\"https://my.babbel.com/en/prices\" class=\"uri\">https://my.babbel.com/en/prices</a></li>\r\n<li><a href=\"https://support.babbel.com/hc/en-us/articles/360037580132\" class=\"uri\">https://support.babbel.com/hc/en-us/articles/360037580132</a></li>\r\n<li><a href=\"https://www.duolingo.com/\" class=\"uri\">https://www.duolingo.com/</a></li>\r\n<li><a href=\"https://appleinsider.com/articles/13/12/17/apple-announces-best-of-2013-itunes-list-for-music-apps-more\" class=\"uri\">https://appleinsider.com/articles/13/12/17/apple-announces-best-of-2013-itunes-list-for-music-apps-more</a></li>\r\n<li><a href=\"https://www.cnet.com/news/best-language-learning-apps-of-2020-update/#listicle-a538cb59-e3e7-47b1-b029-f9ad8735bcbb\" class=\"uri\">https://www.cnet.com/news/best-language-learning-apps-of-2020-update/#listicle-a538cb59-e3e7-47b1-b029-f9ad8735bcbb</a></li>\r\n<li><a href=\"https://uk.pcmag.com/education/18817/duolingo\" class=\"uri\">https://uk.pcmag.com/education/18817/duolingo</a></li>\r\n<li><a href=\"https://www.influenster.com/reviews/duolingo\" class=\"uri\">https://www.influenster.com/reviews/duolingo</a></li>\r\n<li><a href=\"https://www.memrise.com/apps/\" class=\"uri\">https://www.memrise.com/apps/</a></li>\r\n<li><a href=\"https://www.pcmag.com/reviews/memrise\" class=\"uri\">https://www.pcmag.com/reviews/memrise</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/memrise-review-good-beginners-dont-overuse/\" class=\"uri\">https://www.alllanguageresources.com/memrise-review-good-beginners-dont-overuse/</a></li>\r\n<li><a href=\"https://www.lifewire.com/memrise-review-1357058\" class=\"uri\">https://www.lifewire.com/memrise-review-1357058</a></li>\r\n<li><a href=\"https://www.spanishpod101.com/\" class=\"uri\">https://www.spanishpod101.com/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/spanishpod101-review/\" class=\"uri\">https://www.fluentu.com/blog/spanish/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.speaktribe.com/\" class=\"uri\">https://www.speaktribe.com/</a></li>\r\n<li><a href=\"https://www.androidguys.com/reviews/speaktribe-a-great-way-of-learning-the-beautiful-spanish-language-review/\" class=\"uri\">https://www.androidguys.com/reviews/speaktribe-a-great-way-of-learning-the-beautiful-spanish-language-review/</a></li>\r\n<li><a href=\"https://www.educationalappstore.com/app/learn-spanish-with-speaktribe\" class=\"uri\">https://www.educationalappstore.com/app/learn-spanish-with-speaktribe</a></li>\r\n<li><a href=\"https://appgrooves.com/app/learn-spanish-with-speaktribe-by-edushire-technologies-private-limited\" class=\"uri\">https://appgrooves.com/app/learn-spanish-with-speaktribe-by-edushire-technologies-private-limited</a></li>\r\n<li><a href=\"https://aaac.co/en-us/en-spa/best-spanish-learning-app-for-ios-android/2
|
|||
|
(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\'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=3435\" target=\"_blank\">3435</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3435\" target=\"_blank\">Hacking Stories with Reacted: part 5</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=3436\" target=\"_blank\">3436</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3436\" target=\"_blank\">HPR Community News for September 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=3437\" target=\"_blank\">3437</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3437\" target=\"_blank\">The HTML document format</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=3438\" target=\"_blank\">3438</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3438\" target=\"_blank\">Ten privacy friendly Google search alternatives.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3439\" target=\"_blank\">3439</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3439\" target=\"_blank\">Linux Inlaws S01E40: The One with the BSDs</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=3440\" target=\"_blank\">3440</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-10-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3440\" target=\"_blank\">Lighten Layer Modes</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=3441\" target=\"_blank\">3441</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3441\" target=\"_blank\">Murphy Work Bench</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=3442\" target=\"_blank\">3442</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-10-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3442\" target=\"_blank\">What is this thing called science</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=3443\" target=\"_blank\">3443</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-10-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3443\" target=\"_blank\">Neuton battery replacement</a></td>\n<td><a href=\"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\'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=3456\" target=\"_blank\">3456</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3456\" target=\"_blank\">HPR Community News for October 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=3457\" target=\"_blank\">3457</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3457\" target=\"_blank\">Tables</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=3458\" target=\"_blank\">3458</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3458\" target=\"_blank\">Living in the Terminal 2: The Obligatory Sequel</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3459\" target=\"_blank\">3459</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3459\" target=\"_blank\">Linux Inlaws S01E42: The Open Source Initiative</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=3460\" target=\"_blank\">3460</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-11-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3460\" target=\"_blank\">Dodge and Burn</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=3461\" target=\"_blank\">3461</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3461\" target=\"_blank\">Changes to HPR Branding</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=3462\" target=\"_blank\">3462</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-11-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3462\" target=\"_blank\">Metal marbles.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3463\" target=\"_blank\">3463</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-11-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3463\" target=\"_blank\">Clonezilla: A backup story</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3464\" target=\"_blank\">3464</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-11-11</td>\n<td><a href=\"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\'s departure from FLOSS Weekly: <a href=https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weekly target=_blank>https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weekly</a></li>\r\n<li>The Rust Foundation: <a href=https://blog.rust-lang.org/2020/08/18/laying-the-foundation-for-rusts-future.html target=_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','open source, communism, escort services, 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 \'Moonlight Sonata\', 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\'s internal network. The host OS will pass traffic from the external network to the jail.</p>\r\n<p>The jails will be managed with Iocage. Iocage uses ZFS properties to store configuration data for each jail, so a ZFS file system is required.</p>\r\n<h3 id=\"network-setup\">Network setup</h3>\r\n<p>These steps will:</p>\r\n<ol>\r\n<li>Set up the internal network.</li>\r\n<li>Enable the <strong>pf</strong> packet filter</li>\r\n<li>Configure pf pass internet traffic to and from the jail.</li>\r\n</ol>\r\n<p>PF is full featured firewall, and can do more than just pass traffic to an internal network. Refer to the PF documentation for additional configuration options.</p>\r\n<h4 id=\"run-the-following-to-configure-the-internal-network-and-enable-pf\">Run the following to configure the internal network and enable pf.</h4>\r\n<pre><code>sysrc cloned_interfaces+="lo1"\r\nsysrc ifconfig_lo1="inet 192.0.2.1/24"\r\nsysrc pf_enable="YES"\r\n</code></pre>\r\n<h4 id=\"put-the-following-in-etcpfconf\">Put the following in <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\'t have to.','<p>I bought - and ate - a jar of Soylent, which is a powdered food replacement product. These are my thoughts.</p>\r\n<ul>\r\n<li><p>Company Website:<br />\r\n<a href=\"https://soylent.com/\" class=\"uri\">https://soylent.com/</a></p></li>\r\n<li><p>Wikipedia Article:<br />\r\n<a href=\"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\'t change often but, once it\'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\'ve gotten discount codes from podcasts</p>\r\n<ul>\r\n<li>Digital Ocean</li>\r\n<li>Linode</li>\r\n</ul>\r\n<p>VPS requirements for running a OpenVPN server are pretty are basic</p>\r\n<ul>\r\n<li>Internet accessible IP address</li>\r\n<li>Average Network speed</li>\r\n<li>root shell access</li>\r\n</ul>\r\n<p>The openvpn installer is on GitHub. <a href=\"https://github.com/angristan/openvpn-install\">https://github.com/angristan/openvpn-install</a></p>\r\n<p>On the server as root, run</p>\r\n<pre><code>git clone https://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\'t take it one step at a time. I had to constantly remind myself that building the bike was not a race but a journey, take your time and enjoy each little milestone. The last picture is the seat frame jigged up and ready for brazing.</p>\r\n<p><em>15 - Seat stay one</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_015.jpg\" alt=\"15 - Seat stay one\" /></p>\r\n<p><em>16 - Seat stay two</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_016.jpg\" alt=\"16 - Seat stay two\" /></p>\r\n<p>The seat stay wa
|
|||
|
(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>mplayer dvd:///_/dvd/mount/dir_</code></pre>\r\n<p>For Blu-ray discs <br> Download keydb.cfg and place it in <code>~/.config/aacs/</code> <br> <a href=\"https://fvonline-db.bplaced.net/\">Link to keydb.cfg</a></p>\r\n<pre><code>mplayer br:///_/bluray/mount/dir_\r\nie. mplayer br:////dev/sr0 <br></code></pre>\r\n<p>note the 3 forward slashes before the block device, as the disk will not be read otherwise</p>\r\n<p>Ripping:</p>\r\n<pre><code>mplayer br:////dev/sr0 -alang en -dumpstream -dumpfile $movie.mpg</code></pre>\r\n<p>Encoding:</p>\r\n<pre><code>mkdir encoded\r\nffmpeg -i $1 -map 0:0 -map 0:1 -b:a 128k -b:v 2000k -vcodec mpeg4 "encoded"/"`basename -s .mpg $1`.mkv"</code></pre>\r\n<h4 id=\"questions-for-the-community\">Questions for the Community:</h4>\r\n<p>Is it antiquated to want to rip Blu-ray/DVD disks to a server?</p>\r\n<p>Is there a better way to accomplish this, rather than using
|
|||
|
(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),
|
|||
|
(3183,'2020-10-14','Don\'t trust zipfiles',277,'Zipfiles can contain all kinds of evilness and unpacking them can lead to unexpected results','<p>This show explains the concept of injecting symbolic links into zipfiles and how those can be used to attack a web application.</p>',387,74,0,'CC-BY-SA','pentesting,security,hacking,zip',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\'t install electric lighting until the 1930s</p>\r\n<p>Finally electricity won as it could be used for so many other things.</p>\r\n<p><u><strong>The tungsten filament bulb</strong></u></p>\r\n<p>The filament within the bulb is made up of a tungsten coiled coil wire. This is done because the more compactly a filament can be wound the less heat is lost to the surroundings and the brighter the bulb will glow.</p>\r\n<p><u><strong>The tungsten halogen bulb</strong></u></p>\r\n<p>The next progression was tungsten halogen bulb, these bulbs are more efficient and give out twice as much light as ordinary bulbs and usually last twice as long.</p>\r\n<p>All filament lights waste a lot of energy producing heat. An ordinary light bulb only gives out 10% of its energy as light, the rest is wasted as heat.</p>\r\n<p><u><strong>Fluorescent neon lights</strong></u></p>\r\n<p>Fluorescent neon lights were invented in 1905 by a French man called George Claude. These were used for advertising mainly in America.</p>\r\n<p><u><strong>Fluorescent strip light</strong></u></p>\r\n<p>The first fluorescent light was introduced in 1939 it uses the same principle as the neon light but incorporates a filament at both ends. It is filled with argon and mercury vapour. It mainly gives off ultra violet light the tube is coated on the inside with chemicals to convert the output to mostly visible light using a property called fluorescence.</p>\r\n<p>Fluorescent tubes are four times as efficient as normal incandescent light bulbs and run cool.</p>\r\n<p>The first energy efficient light bulbs were just fluorescent lights folded into a compact bulb shape.</p>\r\n<p><u><strong>Sodium lights</strong></u></p>\r\n<p>Sodium lights used mainly in street lighting are twice as efficient again as fluorescent bulbs they give off a rather horrible orange colour.</p>\r\n<p>The first commercial high-pressure sodium lamps were available in 1965 from companies in the United States, the United Kingdom, and the Netherlands; at introduction a 400 watt lamp would produce around 100 lumens per watt <a href=\"https://en.wikipedia.org/wiki/Sodium-vapor_lamp\" class=\"uri\">https://en.wikipedia.org/wiki/Sodium-vapor_lamp</a></p>\r\n<p>The next big development was LED lighting which I\'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\'t touch your face with unwashed hands.</li>\r\n<li>Keep distance arm length (or 2m).</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>If possible work from home.</li>\r\n</ul>\r\n<p><a href=\"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\'ll do my best to cover it. Please forgive me if I mispronounce some of the materials and processes I\'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\'ve played as a Dungeon Master with no materials on hand. In this episode, I discuss some easy workarounds to make tabletop RPGs easy for both sighted and non-sighted players.\r\n</p>\r\n\r\n<p>There are audiobook versions of the rule books available at <a href=\"https://listenrpg.com\">https://listenrpg.com</a>.</p>\r\n\r\n<p>The official D&D digital platform is <a href=\"https://www.dndbeyond.com/\" target=\"_blank\">dndbeyond.com</a>, and it is accessible to blind players using a screen reader.</p>\r\n\r\n<p>Wizards of the Coast publishes the basic rules under the <a href=\"https://www.opengamingfoundation.org/licenses.html\" target=\"_blank\">Open Game License (OGL)</a>. As a service to my players, I maintain <a href=\"https://notabug.org/notklaatu/5srdnd.git\">a version of this document in plain text, with third-party OGL additions</a>. It may or may not be useful for screen readers, depending on your workflow.</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 \'home spy\' 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\'s gpio\'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\'d hook each end to a gpio pin on the pie.\r\n</p>\r\n<p>\r\nIn picture 2, the closeup you can see the probe its the small pvc pipe with the blue wires running along the side. I attached the end of the wires to the pipe by stripping the ends and wrapping them around a small 1/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\'s laptop is away being fixed. Can he manage for a few days using just his Raspberry Pi 3B?','<p>My Dell laptop had to go away to have a new cooling fan fitted. I\'ve got 3 other laptops to call upon, but instead I decided to conduct an experiment I\'ve theorised about for ages. Could a Raspberry Pi 3B serve as my daily driver?</p>\r\n<p>This idea goes back some way and since then, of course, the much more powerful model 4 has been released. However, there must be thousands of 3Bs out there doing nothing, so perhaps they could have a new lease of life providing basic browsing and internet capabilities to people who might otherwise not be in a position to buy a computer.</p>\r\n<p>Hardware: Raspberry Pi Model 3B<br />\r\nOS: Raspberry Pi OS (current version as of 31st October 2020)<br />\r\nMicroSD: SanDisk 16GB</p>\r\n<p>ADDITIONAL SOFTWARE INSTALLED</p>\r\n<ul>\r\n<li>Audio Editor: mhWaveEdit 1.4.23</li>\r\n<li>Audio Format Converter: SoundConverter 2.1.3</li>\r\n<li>Image Editor: GIMP 2.10</li>\r\n</ul>\r\n',246,0,0,'CC-BY-SA','Raspberry Pi, Software Review',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\'s TTS: <a href=\"https://cloud.google.com/text-to-speech\" target=\"_blank\">https://cloud.google.com/text-to-speech</a></li>\r\n<li>Apple M1: <a href=\"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>Secure Enclaves: <a href=\"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: <a href=\"https://www.opengroup.org/osdu/forum-homepage\" target=\"_blank\">https://www.opengroup.org/osdu/forum-homepage</a></li>\r\n<li>Jack Kerouac\'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\'ve been doing for the last year','<h1 id=\"links\">Links</h1>\r\n<ul>\r\n<li><a href=\"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><a href=\"https://coronavirus.jhu.edu/map.html\">https://coronavirus.jhu.edu/map.html</a></li>\r\n<li><a href=\"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\'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=3478\" target=\"_blank\">3478</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3478\" target=\"_blank\">Audio Wiring Hack on a Classroom Podium</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=3479\" target=\"_blank\">3479</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3479\" target=\"_blank\">Linux Inlaws S01E49: Version Control Systems and why bother</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=3480\" target=\"_blank\">3480</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3480\" target=\"_blank\">Darken Layer Modes</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=3481\" target=\"_blank\">3481</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3481\" target=\"_blank\">HPR Community News for November 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=3482\" target=\"_blank\">3482</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-12-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3482\" target=\"_blank\">Introduction to Post Apocalyptic Robotics Meta Technology</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3483\" target=\"_blank\">3483</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-12-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3483\" target=\"_blank\">Pinephone64 review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0115.html\" target=\"_blank\">sigflup</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3484\" target=\"_blank\">3484</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3484\" target=\"_blank\">My vim setup with GnuPG</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3485\" target=\"_blank\">3485</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-12-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3485\" target=\"_blank\">50 years since the 1st Edition of Unix was published</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=3486\" target=\"_blank\">3486</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-12-13</td>\n<td><a href=\"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\'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=3501\" target=\"_blank\">3501</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3501\" target=\"_blank\">HPR Community News for December 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=3502\" target=\"_blank\">3502</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3502\" target=\"_blank\">New year Greetings and a short review of my new Juno PC</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3503\" target=\"_blank\">3503</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3503\" target=\"_blank\">Configuring Mumble</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=3504\" target=\"_blank\">3504</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3504\" target=\"_blank\">James Webb Space Telescope</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://hackerpublicradio.org/eps.php?id=3505\" target=\"_blank\">3505</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-01-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3505\" target=\"_blank\">A DX with Hotel Bravo 9 Hotel November Tango</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3506\" target=\"_blank\">3506</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-01-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3506\" target=\"_blank\">HPR CONTEST 2022 01</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=3507\" target=\"_blank\">3507</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-01-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3507\" target=\"_blank\">USB Turntable fix and sound journey</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3508\" target=\"_blank\">3508</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-01-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3508\" target=\"_blank\">Differences between C# 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: <a href=\"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\'re recording.\r\n</p>\r\n\r\n<p>YAML is a great method for creating configuration files, or storing simple data structures, and it\'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\'s a great way to get out of the Google ecosystem, and it doesn\'t require much to set up or maintain.</p>\r\n\r\n<p>\r\nHere\'s the script I use to update one of the Nextcloud instances I maintain, running on a dirt-cheap VPS slice from Blue Host er something:</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\'ll hear me get excited during the show when I realise this and submit an observation request, the results of which came back immediately and which you can see below.</p>\r\n<p>To date Pictor has performed 3,500 observations from over 700 users from all around the world. Additionally, the PICTOR web platform is now equipped with a 3.2m antenna, which is about 4 times more sensitive than the previous 1.5m antenna, so users can observe the radio sky for free with an even more sensitive instrument.</p>\r\n<p>On top of that, after 204 hours of integration time and over 3 TB of data, they have produced a Northern Sky Hydrogen (HI) Survey produced with the PICTOR Radio Telescope. This effort actually marks the very first radio-image obtained in Greece, shown here:</p>\r\n<p><em>Pictor all sky images of hydrogen in our galaxy</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3243/img_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3243/img_001_thumbnail.png\" alt=\"Pictor all sky images of hydrogen in our galaxy\" /></a></p>\r\n<p>Here are the results of the observation I performed during the show. The body of the email pictor sent back to me confirms the observation I requested:</p>\r\n<pre><code>Your observation has been carried out by PICTOR successfully!\r\nObservation name: mcnalu first try\r\nObservation datetime: 2020-12-08 12:40:09 (UTC+2)\r\nCenter frequency: 1420000000.0 Hz\r\nBandwidth: 2400000 Hz\r\nSample rate: 2400000 samples/sec\r\nNumber of channels: 2048\r\nNumber of bins: 100\r\nObservation duration: 10 sec\r\nObservation ID: 82937104\r\nYour observation'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\'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=3522\" target=\"_blank\">3522</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3522\" target=\"_blank\">Set up your Robot Building Lab and build a $0 Robot Platform</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3523\" target=\"_blank\">3523</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3523\" target=\"_blank\">The Compose key</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=3524\" target=\"_blank\">3524</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3524\" target=\"_blank\">Wheels Addendum - How to Reliably Attach Wheels to PAR Robot Platform</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3525\" target=\"_blank\">3525</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3525\" target=\"_blank\">Battling with English - part 4</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://hackerpublicradio.org/eps.php?id=3526\" target=\"_blank\">3526</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-02-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3526\" target=\"_blank\">HPR Community News for January 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=3527\" target=\"_blank\">3527</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-02-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3527\" target=\"_blank\">My gEeeky Experiment - Part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3528\" target=\"_blank\">3528</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-02-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3528\" target=\"_blank\">Slackware on a netbook</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3529\" target=\"_blank\">3529</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3529\" target=\"_blank\">Linux Inlaws S01E48: Year Two of the Five Year Plan</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=3530\" target=\"_blank\">3530</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-02-11</td>\n<td><a href=\"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\'m a squirrel who lives in a magical forrest and not a human being and therefore does terrible show notes,</p>\r\n<p>There were so many issues brought up about chromebooks and chromiumOS that I could not prepare a detailed list of them all.</p>\r\n<p>This ENTIRE conversation was derived from the work found on GNU WORLD ORDER episode 383 for which you will find his show notes AS::: <a href=\"https://gnuworldorder.info/\" class=\"uri\">https://gnuworldorder.info/</a> \"Linux, Flatpaks, Android apps, and ChromiumOS on a Lenovo Chromebook.\"</p>\r\n<p>Now, if you don\'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\'ve used:<br>\r\n<a href=\"https://midkar.com/soundfonts/\" target=\"_blank\">https://midkar.com/soundfonts/</a><br>\r\n<a href=\"https://www.pvv.org/~hammer\" target=\"_blank\">https://www.pvv.org/~hammer</a><br>\r\n<a href=\"https://www.michaelpichermusic.com/sample-libraries\" target=\"_blank\">https://www.michaelpichermusic.com/sample-libraries</a><br>\r\n<br>\r\nMIDI/Music software discussed:<br>\r\nJACK (JACK Audio Connection Kit)<br>\r\n<a href=\"https://jackaudio.org/\" target=\"_blank\">https://jackaudio.org/</a><br>\r\nQtractor<br>\r\n<a href=\"https://qtractor.sourceforge.io/\" target=\"_blank\">https://qtractor.sourceforge.io/</a><br>\r\nArdour<br>\r\n<a href=\"https://ardour.org/\" target=\"_blank\">https://ardour.org/</a><br>\r\nReaper<br>\r\n<a href=\"https://www.reaper.fm/index.php\" target=\"_blank\">https://www.reaper.fm/index.php</a><br>\r\nCarla<br>\r\n<a href=\"https://kx.studio/Applications:Carla\" target=\"_blank\">https://kx.studio/Applications:Carla</a><br>\r\nDuality Bass <br>\r\n<a href=\"https://audio-assault.com/duality.php\" target=\"_blank\">https://audio-assault.com/duality.php</a><br>\r\n<br>\r\nMy Soundcloud page.<br>\r\n<a href=\"https://www.soundcloud.com/claudiom72\" target=\"_blank\">https://www.soundcloud.com/claudiom72</a><br>\r\n<br>\r\nOpen source synthesizers:<br>\r\n<a href=\"https://www.moddevices.com/\" target=\"_blank\">https://www.moddevices.com/</a><br>\r\n<a href=\"https://www.linuxsynths.com/\" target=\"_blank\">https://www.linuxsynths.com/</a><br>\r\n<a href=\"https://en.wikipedia.org/wiki/Korg_OASYS\" target=\"_blank\">https://en.wikipedia.org/wiki/Korg_OASYS</a> (Finally found that hardware Linux-based synth.)<br>\r\n<a href=\"https://synthesia.sourceforge.net/\" target=\"_blank\">https://synthesia.sourceforge.net/</a><br>\r\n<a href=\"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\'s real name: <a href=\"https://en.wikipedia.org/wiki/Jeff_Bezos\" target=\"_blank\">https://en.wikipedia.org/wiki/Jeff_Bezos</a></li>\r\n<li>Jeff Bezo\'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>Libre Art of Fugue</em>: <a href=\"https://www.opengoldbergvariations.org/\">https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080</a>, used by permission of their <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','clonezilla, backups, hard drives, 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\'s encrypt</a> cert.</p>\r\n<p>It all now works, and thanks to timttmy I was able to get the WireGuard VPN installed and working.</p>\r\n<h2 id=\"pi-4\">Pi 4</h2>\r\n<p>Get a Pi, and a SSD, enable it. You should review <a href=\"https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/\">Raspberry Pi 4 USB Boot Config Guide for SSD / Flash Drives</a>, for issues with SSD drives and the Raspberry Pi.</p>\r\n<p>You can install Raspbian as normal. I already covered this in <a href=\"https://hackerpublicradio.org/eps.php?id=2356\">hpr2356 :: Safely enabling ssh in the default Raspbian Image</a>, and <a href=\"https://github.com/kenfallon/fix-ssh-on-pi\">Safely enabling ssh in the default Raspberry Pi OS (previously called Raspbian) Image</a>.</p>\r\n<p>And then follow the instructions in <a href=\"https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb\">How to Boot Raspberry Pi 4 From a USB SSD or Flash Drive</a>.</p>\r\n<h2 id=\"next-cloud\">Next Cloud</h2>\r\n<p>Install Apache, MariaDB, and PHP</p>\r\n<ul>\r\n<li><a href=\"https://www.techrepublic.com/article/how-to-install-nextcloud-20-on-ubuntu-server-20-04/\">How to install Nextcloud 20 on Ubuntu Server 20.04</a></li>\r\n<li><a href=\"https://docs.nextcloud.com/server/20/admin_manual/installation/source_installation.html\">NextCloud - Installation and server configuration - Installation on Linux</a></li>\r\n<li><a href=\"https://nextcloud.com/install/#instructions-server\">Download NextCloud</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\'m going to talk about here.<br />\r\n<a href=\"https://e.foundation/about-e/\" class=\"uri\">https://e.foundation/about-e/</a></p></li>\r\n</ol></li>\r\n<li><p>The research paper on Google Data Collection by Professor Douglas C. Schmidt, Vanderbilt University (2018) - learn how and how often normal Android phones send your data to Google servers.<br />\r\n<a href=\"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>Another background article on tracking (in German) based on research from a Norwegian journalist:<br />\r\n<a href=\"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>MicroG services, a replacement for Google\'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, Facebook has been hacked.','<p>As someone who has reasons to be on Facebook, I have gotten used to seeing people warn that their account was hacked, and we should not accept friend requests from them. It is so common that you would wonder if Facebook had no security at all. But the truth is something different, and worth knowing about.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.ricksdailytips.com/beware-duplicate-friend-requests/\" class=\"uri\">https://www.ricksdailytips.com/beware-duplicate-friend-requests/</a></li>\r\n<li><a href=\"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\'s Netware: <a href=\"https://en.wikipedia.org/wiki/NetWare\" target=\"_blank\">https://en.wikipedia.org/wiki/NetWare</a></li>\r\n<li>strace: <a href=\"https://strace.io\" target=\"_blank\">https://strace.io</a></li>\r\n<li>ltrace: <a href=\"https://www.ltrace.org\" target=\"_blank\">https://www.ltrace.org</a></li>\r\n<li>DTrace: <a href=\"https://dtrace.org/blogs/about\" target=\"_blank\">https://dtrace.org/blogs/about</a></li>\r\n<li>ptrace: <a href=\"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\'m your host Enigma and today we are going to be talking\r\nabout one of my favorite python modules Pandas <br>\r\nThis will be the first episode in a series I\'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(\'file name\') <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)) print same column first five values by column name <br>\r\n<br>\r\n<b>3) Setting column types. </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\'s great) The Raspberry PI400 is a great box you should get it. Also I thought the Raspberry 4 8GB to be very solid.</p>\r\n',129,0,0,'CC-BY-SA','Centos, Oracle linux, MS Teams, Covid, Raspberry, PI 400',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\'s not made available to the very people who could really benefit from it</li>\r\n<li>Lack of training in schools when it comes to Linux and other open source software</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\'s website, one of the co founders of Markdown.</a></p>\r\n<p>Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).</p>\r\n<h2 id=\"example-text-used-in-the-show-and-how-it-looks\">Example text used in the show and how it looks</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\'t any links or anything to put here, but putting something in the show notes seems important.</p>',390,0,1,'CC-BY-SA','Introduction, Linux, First Show',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\'t find the extra features very useful. Probably the biggest reason to use NagiosXI is Enterprise that requires commercial support</p>\r\n<p>The <code>community</code> version of nagios is normally referred to as <code>nagios core</code> This episode will focus on the nagios core</p>\r\n<h2 id=\"nagios-documentation\">Nagios Documentation</h2>\r\n<p>I don\'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\'ll talk a bit about some of the pieces that make up nagios Nagios checks are for either hosts or services.</p>\r\n<p>From the Nagios documentation</p>\r\n<blockquote>\r\n<p>A host definition is used to define a physical server, workstation, device, etc. that resides on your network.</p>\r\n</blockquote>\r\n<p>Also from the nagios documentation</p>\r\n<blockquote>\r\n<p>A service definition is used to identify a \"service\" that runs on a host. The term \"service\" is used very loosely. It can mean an actual service that runs on the host (POP, SMTP, HTTP, etc.) or some other type of metric associated with the host</p>\r\n</blockquote>\r\n<p>Normally, hosts are checked using ping. If the host responds to the ping with in the specified time frame, the host is considered up. Once a host is defined and determined to be UP, you can optionally check services on that host</p>\r\n<h2 id=\"installation-and-setup\">Installation and setup</h2>\r\n<p>Install the packages</p>\r\n<pre><code>apt install nagios4</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\'m not sure it\'s something I messed up I\'m sure</p></li>\r\n<li><p>only post I saw online about it was that it\'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\'s idea): <a href=\"https://www.gnu.org/philosophy/free-sw.html\" target=\"_blank\">https://www.gnu.org/philosophy/free-sw.html</a></li>\r\n<li>How Nvidia became Skynet: <a href=\"https://hackerpublicradio.org/eps.php?id=3069\" target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3069</a></li>\r\n<li>Hacktoberfest: <a href=\"https://hacktoberfest.digitalocean.com\" target=\"_blank\">https://hacktoberfest.digitalocean.com</a></li>\r\n<li>Claudio and crew: <a href=\"https://hackerpublicradio.org/eps.php?id=3099\" target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3099</a></li>\r\n<li>Not going out: <a href=\"https://en.wikipedia.org/wiki/Not_Going_Out\" target=\"_blank\">https://en.wikipedia.org/wiki/Not_Going_Out</a></li>\r\n<li>An American Pickle: <a href=\"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>Mrs Honeyhume: <a href=\"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, five year plan, world domination, FOSS, Femke',0,0,1),
|
|||
|
(3279,'2021-02-25','Linux Inlaws S01E24: Legacy programming languages',3252,'The two chaps discuss why history keeps repeating itself in programming languages and beyond','<ul>\r\n<li>Plankalkül: <a href=\"https://en.wikipedia.org/wiki/Plankalk%C3%BCl\" target=\"_blank\">https://en.wikipedia.org/wiki/Plankalk%C3%BCl</a></li>\r\n<li>Fortran: <a href=\"https://fortran-lang.org\" target=\"_blank\">https://fortran-lang.org</a></li>\r\n<li>COBOL: <a href=\"https://en.wikipedia.org/wiki/COBOL\" target=\"_blank\">https://en.wikipedia.org/wiki/COBOL</a></li>\r\n<li>ALGOL: <a href=\"https://en.wikipedia.org/wiki/ALGOL\" target=\"_blank\">https://en.wikipedia.org/wiki/ALGOL</a></li>\r\n<li>GNU Fortran: <a href=\"https://gcc.gnu.org/fortran/\" target=\"_blank\">https://gcc.gnu.org/fortran/</a></li>\r\n<li>IBM System/36: <a href=\"https://en.wikipedia.org/wiki/IBM_System/36\" target=\"_blank\">https://en.wikipedia.org/wiki/IBM_System/36</a></li>\r\n<li>IBM Z: <a href=\"https://www.ibm.com/it-infrastructure/z/hardware\" target=\"_blank\">https://www.ibm.com/it-infrastructure/z/hardware</a></li>\r\n<li>Niklaus Wirth: <a href=\"https://en.wikipedia.org/wiki/Niklaus_Wirth\" target=\"_blank\">https://en.wikipedia.org/wiki/Niklaus_Wirth</a></li>\r\n<li>Pascal: <a href=\"https://en.wikipedia.org/wiki/Pascal_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Pascal_(programming_language)</a></li>\r\n<li>Modula-2: <a href=\"https://en.wikipedia.org/wiki/Modula-2\" target=\"_blank\">https://en.wikipedia.org/wiki/Modula-2</a></li>\r\n<li>Smalltalk: <a href=\"https://en.wikipedia.org/wiki/Smalltalk\" target=\"_blank\">https://en.wikipedia.org/wiki/Smalltalk</a></li>\r\n<li>Lisp: <a href=\"https://en.wikipedia.org/wiki/Lisp_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Lisp_(programming_language)</a></li>\r\n<li>Fourth generation languages: <a href=\"https://en.wikipedia.org/wiki/Fourth-generation_programming_language\" target=\"_blank\">https://en.wikipedia.org/wiki/Fourth-generation_programming_language</a></li>\r\n<li>SQL: <a href=\"https://en.wikipedia.org/wiki/SQL\" target=\"_blank\">https://en.wikipedia.org/wiki/SQL</a></li>\r\n<li>ABAP: <a href=\"https://en.wikipedia.org/wiki/ABAP\" target=\"_blank\">https://en.wikipedia.org/wiki/ABAP</a></li>\r\n<li>SAP NetWeaver: <a href=\"https://en.wikipedia.org/wiki/SAP_NetWeaver_Application_Server\" target=\"_blank\">https://en.wikipedia.org/wiki/SAP_NetWeaver_Application_Server</a></li>\r\n<li>Rust: <a href=\"https://rust-lang.org\" target=\"_blank\">https://rust-lang.org</a></li>\r\n<li>Occam: <a href=\"https://en.wikipedia.org/wiki/Occam_(programming_language)\" target=\"_blank\">https://en.wikipedia.org/wiki/Occam_(programming_language)</a></li>\r\n<li>C: <a href=\"https://www.iso.org/standard/74528.html\" target=\"_blank\">https://www.iso.org/standard/74528.html</a></li>\r\n<li>Foreign Function Interface: <a href=\"https://github.com/libffi/libffi\" target=\"_blank\">https://github.com/libffi/libffi</a></li>\r\n<li>Cracking Codes with Python: <a href=\"https://inventwithpython.com/cracking\" target=\"_blank\">https://inventwithpython.com/cracking</a></li>\r\n<li>CUDA: <a href=\"https://developer.nvidia.com/cuda-GPUs\" target=\"_blank\">https://developer.nvidia.com/cuda-GPUs</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Programming languages, Legacy, old stuff, new stuff, hipster languages, coffee',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\'re all just data.',1032,'How I experienced GNU/Linux and the topic of \"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\'s Our Browser!','<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','Some Guy on the Internet, 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\'t work out</p>\r\n<p>Booted from 128GB card and expanded the partition using Gparted to fill 128GB SD card</p>\r\n<p>I used the 128GB SD card to perform the upgrade, remember I have 64GB card to fall back on if things go wrong</p>\r\n<h2 id=\"upgrade-process\">Upgrade process</h2>\r\n<p><a href=\"https://www.datenreise.de/en/raspberry-pi-raspbian-update-update-jessie-to-stretch/\">Source of information below</a></p>\r\n<p>Step 1: Check available disk space</p>\r\n<p>In order to update to Raspbian Stretch, there must be enough space on the SD card. Therefore you should check the available and used disk space usage first:</p>\r\n<pre><code>$ df -h</code></pre>\r\n<p>Step 2: Check package status</p>\r\n<p>You must also check that all packages are in a state that is suitable for upgrade. The following command displays all packages that have the status semi-installed or configuration failed, and those with error status:</p>\r\n<pre><code>$ sudo dpkg --audit\r\n$ sudo dpkg --get-selections | grep hold</code></pre>\r\n<p>Step 3: Update system</p>\r\n<p>Before upgrading, the Raspbian should be completely updated:</p>\r\n<pre><code>$ sudo apt-get update\r\n$ sudo apt-get upgrade\r\n$ sudo apt-get dist-upgrade</code></pre>\r\n<p>Step 4: Modify Release</p>\r\n<p>For upgrading to the new Raspbian version, the package lists must be adapted to the \"Stretch\" release. To do this, only the word \"jessie\" has to be replaced by \"stretch\". In order not to overlook any position, we simply let the replacement be done by the following command:</p>\r\n<pre><code>$ sudo sed -i /deb/s/jessie/stretch/g /etc/apt/sources.list\r\n$ sudo sed -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\'ve customised dwm, added and removed patches and written various scripts.','<ul>\r\n<li>Intro - video on yt, audio on hpr <a href=\"https://youtu.be/EMFMyxYch14\">https://youtu.be/EMFMyxYch14</a></li>\r\n<li>Who am I? arfab, clearnitesky, trumpetplanet</li>\r\n<li>my email has changed since my first hpr episode - thanks lavabit!</li>\r\n<li>You can now use hello@richcolq.xyz</li>\r\n<li>My previous episode was <a href=\"https://hackerpublicradio.org/eps.php?id=0618\">0618</a></li>\r\n</ul>\r\n<ol type=\"1\">\r\n<li>Story of ricing my own desktop:\r\n<ul>\r\n<li>Always been into customising look/feel, never satisfied</li>\r\n<li>Found Luke Smith and liked i3, made own version.</li>\r\n<li>Pandemic hits! Started learning Python, JavaScript but had no real use for them...</li>\r\n<li>Made a website (inspired by disconnecting from social media)</li>\r\n<li>check out <a href=\"https://richcolq.xyz\">richcolq.xyz</a> and <a href=\"https://github.com/clearnitesky\">github.com/clearnitesky</a></li>\r\n</ul></li>\r\n<li>What programs am I using?\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 - various short cuts sorted by purpose</li>\r\n<li>dunst</li>\r\n<li>sxiv/feh</li>\r\n<li>zathura</li>\r\n<li>my status stuff using dwmstat script</li>\r\n<li>a look in <code>~/.local/bin</code></li>\r\n<li>I recently learned about awk and rewrote all icon scripts which is what inspired me to record this episode.</li>\r\n</ul></li>\r\n<li>What next?\r\n<ul>\r\n<li>Is it necessary to patch dwm? Probably not.<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\'s thoughts about HD Radio',612,'Klaatu reads a post by Deepgeek','<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\'s tried:</p>\r\n<ul>\r\n<li>Raspberry Pi OS<br />\r\n<a href=\"https://www.raspberrypi.org/software/\" class=\"uri\">https://www.raspberrypi.org/software/</a></li>\r\n<li>Debian 10<br />\r\n<a href=\"https://raspi.debian.net/\" class=\"uri\">https://raspi.debian.net/</a></li>\r\n<li>Fedora 33<br />\r\n<a href=\"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\'t enough, you were supposed to dump it and buy a new one as you couldn\'t add more. If you found that you couldn\'t run the latest version of your favourite apps, dump it and buy a new one as you couldn\'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\'t miss out on this episode for the full lowdown (never mind\r\nthe even lower down .\r\n</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>Grumpy Old Coders: <a href=\"https://grumpy-old-coders.org\" target=\"_blank\">https://grumpy-old-coders.org</a></li>\r\n<li>The Dig: <a href=\"https://www.netflix.com/de-en/title/81167887\" target=\"_blank\">https://www.netflix.com/de-en/title/81167887</a></li>\r\n<li>Oktoberfest: <a href=\"https://www.oktoberfest.de/en\" target=\"_blank\">https://www.oktoberfest.de/en</a></li>\r\n<li>Erdinger Herbstfest (in German only): <a href=\"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\'re interested in playing, join the Hacker Public Radio mailing list or email Klaatu at this domain.\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\'s the path I followed to finding a use for the mysterious gdb, so maybe it will work for you.\r\n</p>\r\n\r\n<p>\r\nTo follow along with this episode, 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\'s Encrypt cert for Home Network use',195,'How to update a cert when the automatic processes don\'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\'s Encrypt SSL cert for use on your home network. One of the problems was the fact that the automatic renew tools won\'t work.\r\n</p>\r\n<p>\r\nToday I got a reminder email from Let\'s Encrypt and I used the exact same command to renew it as I did to create it in the first place. The tool is smart enough to know this is a renewal process. \r\n</p>\r\n<p>\r\nOne thing I forgot to do last time was to remove the <em>TXT</em> record from DNS after I was done. So I had to delete the record and wait a while for the Time To Live (TTL) to expire.\r\n</p>\r\n<p>\r\nI set about doing a check list so the next time the process can be even faster.\r\n</p>\r\n<ol>\r\n<li>Run the command <pre>certbot certonly --manual --preferred-challenges dns</pre></li>\r\n<li>Deploy a DNS TXT record under the name _acme-challenge.nextcloud.example.com</li>\r\n<li>Finish the challenge.</li>\r\n<li>When successful, remove the DNS TXT record as it\'s not needed for another two months.</li>\r\n</ol>',30,0,0,'CC-BY-SA','SSL, Let\'s Encrypt, 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\'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=3542\" target=\"_blank\">3542</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3542\" target=\"_blank\">The Worst Car I Ever Had</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0246.html\" target=\"_blank\">Beeza</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3543\" target=\"_blank\">3543</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3543\" target=\"_blank\">Idle thoughts on web browsers</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=3544\" target=\"_blank\">3544</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3544\" target=\"_blank\">All my microphones</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3545\" target=\"_blank\">3545</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3545\" target=\"_blank\">How I make coffee</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3546\" target=\"_blank\">3546</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-03-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3546\" target=\"_blank\">HPR Community News for February 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=3547\" target=\"_blank\">3547</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-03-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3547\" target=\"_blank\">Password Managers</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=3548\" target=\"_blank\">3548</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-03-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3548\" target=\"_blank\">Make a custom Git command</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=3549\" target=\"_blank\">3549</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-03-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3549\" target=\"_blank\">Linux Inlaws S01E51: git and static site generators</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=3550\" target=\"_blank\">3550</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-03-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3550\" target=\"_blank\">Format; Copy; Diskcopy; Xcopy</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://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\'s not 20 degrees as CAMRA would make you believe)\r\nand the ins and outs of basic and enhanced security on our beloved operating\r\nsystem. If you ever wanted to know more about Linux Security Modules, AppArmor\r\nand SELinux and how dames of negotiable affections relate to these concepts,\r\nthis show is for you.</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n <li>Campaign for Real Ale: <a href=\"https://camra.org.uk/\" target=\"_blank\">https://camra.org.uk/</a>\r\n </li>\r\n <li>Linux Security Modules: <a href=\"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: <a href=\"https://selinuxproject.org/page/Main_Page\" target=\"_blank\">https://selinuxproject.org/page/Main_Page</a>\r\n </li>\r\n <li>SELinux on Android: <a href=\"https://source.android.com/security/selinux\" target=\"_blank\">https://source.android.com/security/selinux</a>\r\n </li>\r\n <li>AppArmor: <a href=\"https://gitlab.com/apparmor/apparmor/-/wikis/Documentation\" target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/Documentation</a>\r\n </li>\r\n <li>RBAC with AppArmor: <a href=\"https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC\" target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC</a>\r\n </li>\r\n <li>Plan 9: <a href=\"https://9p.io/plan9\" target=\"_blank\">https://9p.io/plan9</a>\r\n </li>\r\n <li>Plan 9 from Outer Space: <a href=\"https://www.imdb.com/title/tt0052077\" target=\"_blank\">https://www.imdb.com/title/tt0052077</a>\r\n </li>\r\n <li>Man down: <a href=\"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>The Midnight Gospel: <a href=\"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','Linux Security Modules, DAC, MAC, AppArmor, SELinux, Plan 9',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\'ve used this), wrote image to 32GB SD, found process very easy</p></li>\r\n<li><p>On Samsung netbook hit F2 at boot time to select boot from USB</p></li>\r\n<li><p>Booted from USB stick containing LUBUNTU 20.04.1</p></li>\r\n</ul>\r\n<h2 id=\"live-distro-1st-boot.\">Live distro 1st boot.</h2>\r\n<ul>\r\n<li><p>Once booted I found the trackpad speed to be very slow and my first attempt at adjusting the speed in preferences made no difference.</p></li>\r\n<li><p>Connected to WiFi, setting this up seemed much more clunky than previous connection method, however it did work.</p></li>\r\n<li><p>Went to Youtube and played some video, everything worked fine, also found that volume keys on netbook worked.</p></li>\r\n</ul>\r\n<h2 id=\"install-process\">Install Process</h2>\r\n<ul>\r\n<li><p>Went through install and selected manual partitioning,</p></li>\r\n<li><p>Used existing swap on sda6 and format and mounted new Lubuntu root filesystem on sda7 replacing 16.04 with 20.04.1</p></li>\r\n</ul>\r\n<h2 id=\"after-first-boot\">After first boot</h2>\r\n<ul>\r\n<li><p>Upon first boot was surprised that it had remembered my WiFi connection details and told me there were updates</p></li>\r\n<li><p>It asked if I wanted to perform a full upgrade without giving any details. At the time I didn\'t know what this meant. I wasn\'t sure I would remain on an LTS or upgrade to 20.10. After the full upgrade I check OS release using the following command. This confirmed I was still running 20.04 LTS</p>\r\n<pre><code> cat /etc/os-release</code></pre></li>\r\n<li><p>The logon screen has desktop options, by default it\'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\'ve used a program called <code>sshuttle</code> for 7/8 years to attach myself to my home and work networks when on public/untrusted networks or if I need to access some resource at work from home.</p>\r\n<p>Sshuttle for the main part works great and the main benefit is that the only port you ever need to open on the server network is whichever port you have your ssh server running on.</p>\r\n<p>The downside to sshuttle is that it won\'t work with my android devices so I\'ve been using a paid for VPN called PIA on untrusted networks or just staying on 3g/4g and not have any way to connect to my home or work network.</p>\r\n<p>Sshuttle is written in python and a few weeks ago Arch Linux moved to python 3.8 which broke sshuttle. There is a workaround using pyenv and a bug has been filled with the python team and a it\'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\'t work.</p>\r\n<p>I eventually gave up frustrated.</p>\r\n<p>I\'m not blaming openVPN, I know it works for many many people, but I couldn\'t see what was wrong.</p>\r\n<p>So I did what we all do in a situation like this.</p>\r\n<p>I took to social media, which in my case is my pleroma server and posted a message to the fediverse.</p>\r\n<p><em>\"OpenVPN has fried my brain. Need booze\"</em><br />\r\nThen I had a beer, a nice cold Stiegl goldbrau if I remember right.</p>\r\n<p>A few minutes later a message popped up from theru, it contained one word with a smiley face. Wireguard.</p>\r\n<p>Now I had looked at wireguard a while ago. You might remember it hit the headlines because Linus Torvalds had praised how beautifully written the code was for it. It turns out what he said was \"It\'s beautiful when compared to openVPN\'s code\". Back then the how to guides were really hard, for me anyway to follow.</p>\r\n<p>There were just examples of two machines on the same LAN connected together and I really struggled to get my head around it being serverless and both machines being peers to each other; after all openVPN has clients and servers and even sshuttle on my laptop connects to a server machine.</p>\r\n<p>There where a couple of wiki pages that I read on Christmas Eve that gave me a lightbulb moment and some clarity on the way it worked. So I decided to try and set it up.</p>\r\n<p>The articles acknowledge that it is a peer to peer technology and then go on to call one peer a server and the other peer the client.</p>\r\n<p>Also I would recommend for your first client use an android device with the wireguard app. 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\'m going to assume that you have installed the wireguard packages for your system and that you have given your server a static IP on your network.</p>\r\n<p>I\'m using Arch linux on my servers but I see the Linode Debian \'how to\' 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\'ll begin with the Normal modes and work our way through many, but not all, of the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.20.</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/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, Layer Modes, Blending Modes',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\'ll begin with the Normal modes and work our way through many, but not all, of the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.20.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://fontlibrary.org/\" class=\"uri\">https://fontlibrary.org/</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<li><a href=\"https://fontlibrary.org/en/font/fivefoldornamentsetc\" class=\"uri\">https://fontlibrary.org/en/font/fivefoldornamentsetc</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.gimp-forum.net/Forum-GIMP\" class=\"uri\">https://www.gimp-forum.net/Forum-GIMP</a></li>\r\n<li><a href=\"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, Layer Modes, Blending Modes',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\'s left of it.<br />\r\n<a href=\"https://sourceforge.net/projects/connochaetos/\" class=\"uri\">https://sourceforge.net/projects/connochaetos/</a></p></li>\r\n<li><p>OpenBSD website<br />\r\n<a href=\"https://www.openbsd.org/index.html\" class=\"uri\">https://www.openbsd.org/index.html</a></p></li>\r\n<li><p>Enabling audio in OpenBSD<br />\r\n<a href=\"https://www.openbsd.org/faq/faq13.html\" class=\"uri\">https://www.openbsd.org/faq/faq13.html</a></p></li>\r\n<li><p>Enabling a webcam in OpenBSD<br />\r\n<a href=\"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\'s a simple system, but is it <em>too</em> simple?\r\nFind out in today\'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\'t burning extra fuel to get through the lower atmosphere where you\'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\'s Guide</li>\r\n</ul></li>\r\n<li>NERV Rocket : <a href=\"https://www.youtube.com/watch?v=s90tSM0oowo\" class=\"uri\">https://www.youtube.com/watch?v=s90tSM0oowo</a></li>\r\n<li>223 hrs and just now getting to build/mechjeb OK...</li>\r\n<li>COM ranges <a href=\"https://wiki.kerbalspaceprogram.com/wiki/CommNet\" class=\"uri\">https://wiki.kerbalspaceprogram.com/wiki/CommNet</a></li>\r\n<li>sat build! <a href=\"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-F33 shell (faring)</li>\r\n<li>TR-V2 decopuler</li>\r\n<li>dawn engine</li>\r\n<li>2 x pb-x150 xeono</li>\r\n<li>small inline reaction wheel</li>\r\n<li>z-200 battery</li>\r\n<li>ra-15 sat</li>\r\n<li>OK-T02 probe (remote control )</li>\r\n<li>communion 16 (for kerbal coms)</li>\r\n<li>2x gigantor solar array</li>\r\n</ul></li>\r\n<li>toggle debeis and clean up !</li>\r\n<li><span class=\"citation\" data-cites=\"KSpaceAcademy\">@KSpaceAcademy</span> <span class=\"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\'s here\"</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=\"MakeMV on Raspberry Pi (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=\"Before rename\" /></p>\r\n<p><em>After rename</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3294/Picture3.png\" alt=\"After rename\" /></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\'s contact form. About 99% of the submissions we receive are spam, which makes filtering for valid messages painful. After some research into different methods, I decided to go with the honey pot method.</p>\r\n<p>The honey pot method uses an extra text input field to lure the spam bot into filling it out. There are different suggestions for how to hide this extra field from valid users by using either javascript or CSS. With javascript, the honey pot section of the form is removed from the DOM when the page loads, hiding it from your users. The argument for this method is most bots don\'t implement javascript, so the honey pot field will not be hidden from them. I think that is a valid argument but I didn\'t want to include extra javascript in my page--so I went with the CSS method.</p>\r\n<p>There are references at the end of the show notes to a couple of the articles I read on implementing the honey pot with either javascript or CSS. My take away was, 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\'t name your classes something obvious to your intent like \"anti-spam-filter\". My guess is the majority of the bots out there aren\'t that sophisticated, but I figured it couldn\'t hurt to follow those suggestions.</p>\r\n<p>I was already using Bootstrap CSS for our site, so I decided to use Bootstrap\'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\'t trigger any warnings. It does bring up the issue of how to prevent impacting the experience of people using screen readers. I applied the aria-hidden attribute with a value of true to the label element surrounding the honey pot input field. \"[this] removes that element and all of its children from the accessibility tree.\" So we now have the field hidden both visually in the browser and from assistive technologies. Given the short end of the stick accessibility usually gets, I doubt there are any spam bots scanning for that ARIA attribute. For the minority of users who might be viewing with the classic lynx browser, I put \'For office use\' as the label text before the honey pot, hoping this would get the message across without tipping off the bot to the intended purpose of the related input field.</p>\r\n<p>The other main issue with this method is the value of the name attribute used for the input field. Some argue to use obfuscated values like \"mmxxName\" instead of \"name\", or \"sxysPhone\" for \"phone\". Apparently some bots will skip fields they don\'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\'t auto-fill the valid fields of the form. This also brings up the matter of not auto-filling the spam fields by the browser of your users. This is done by setting any of your honey pot input elements\' \"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\'ll do a show on email; oops now I owe a show.</p>',391,0,0,'CC-BY-SA','General Content.',0,0,1),
|
|||
|
(3302,'2021-03-30','Input Methods on Ubuntu',924,'I\'m adding some input methods to a standard Ubuntu 20.04 install','<p>First I go to the <em>Language Support</em> window. Either search (press Super/Windows, then type) for\r\n\"Language Support\" and go there directly, or search for \"Region & Language\", go there, then click\r\n\"Manage Installed Languages\".</p>\r\n<p>There I click <em>Install / Remove Languages ...</em>, check the Chinese I want, then click <em>Apply</em>.</p>\r\n<p>Then I add the packages for the input methods I want, either using the command line (<code>apt install</code>)\r\nor the <em>Ubuntu Software</em> application:</p>\r\n<ul>\r\n<li>Chinese Quick: <code>ibus-table-quick-classic</code></li>\r\n<li>Chinese Pinyin: <code>ibus-libpinyin</code></li>\r\n<li>Chinese (Cantonese) Jyutping: <code>ibus-table-jyutping</code></li>\r\n</ul>\r\n<p>Bonus input method:</p>\r\n<ul>\r\n<li>Unicode emoji: <code>ibus-typing-booster</code></li>\r\n</ul>\r\n<p>Now for each user that wants an input method, I search for and go to <em>Region & Language</em>. At the\r\nbottom of the <em>Input Sources</em> section I click the plus button. The different input methods are found\r\nby clicking down into different sublists. Click the right choice, then <em>Add</em>:</p>\r\n<ul>\r\n<li>Chinese Quick: <em>Chinese</em> -> <em>Chinese (QuickClassic)</em></li>\r\n<li>Chinese Pinyin: <em>⋮</em> -> <em>Other</em> -> <em>Chinese (Intelligent Pinyin)</em></li>\r\n<li>Chinese (Cantonese) Jyutping: <em>Chinese</em> -> <em>Chinese (Jyutping)</em></li>\r\n<li>Unicode emoji: <em>⋮</em> -> <em>Other</em> -> <em>Other (Typing Booster)</em></li>\r\n<li>EurKEY: <em>English (United States)</em> -> <em>EurKEY (US based layout with European letters)</em></li>\r\n</ul>\r\n<p>The EurKEY layout is part of the standard English language support in Ubuntu.</p>\r\n<p>Finally, to enable unicode color emoji as completion suggestions, switch to the Typing Booster mode\r\nby pressing Super/Windows+Space repeatedly until you see the rocket in your notification area. Click\r\nthe rocket -> <em>Unicode symbols and emoji predictions</em> -> <em>On</em>.</p>\r\n<p>I owe you a followup episode once I figure out how to make this work for Guix applications running\r\ninside Ubuntu.</p>\r\n<hr>\r\n<p>This episode was based on a Fediverse thread:<br><a href=\"https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346\">https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346</a></p>\r\n<p>References for your further study:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Intelligent_Input_Bus\">IBus</a> is an input method protocol for the\r\nGNU/Linux desktop. Other protocols supported are <a href=\"https://en.wikipedia.org/wiki/Xim\">XIM</a>,\r\n<a href=\"https://en.wikipedia.org/wiki/Smart_Common_Input_Method\">SCIM</a>,\r\n<a href=\"https://en.wikipedia.org/wiki/Fcitx\">fcitx</a> and <a href=\"https://en.wikipedia.org/wiki/Uim\">uim</a>. You\r\nhave to choose one of these to use for all your input methods, but the most common input methods\r\nexist at least for IBus and the first three of the rest, so this is not as much a limitation as\r\nit sounds like.</li>\r\n<li>Quick is a simplification of the\r\n<a href=\"https://en.wikipedia.org/wiki/Cangjie_input_method\">Cangjie input method</a>. Cangjie assigns\r\nradicals, character components, to 24 keys on the alphabetic keyboard, and you combine these into\r\na character. In Quick you combine two and then choose a completion from a list.</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pinyin\">Pinyin</a> is a romanization, a Latin alphabetic spelling,\r\nfor <a href=\"https://en.wikipedia.org/wiki/Standard_Chinese\">Standard Chinese</a> (Mandarin).</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Jyutping\">Jyutping</a> is one of\r\n<a href=\"https://en.wikipedia.org/wiki/Hong_Kong_Government_Cantonese_Romanisation\">many</a>\r\n<a href=\"https://en.wikipedia.org/wiki/Yale_romanization_of_Cantonese\">romanizations</a>\r\n<a href=\"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\'t do this you should look at the website content, this is the way to do a tutorial</li>\n<li>after you download the sources this install is exactly like any other slackware install</li>\n<li>when you get to the package selection its easy to customize</li>\n</ul>\n<h3 id=\"after-install\">after install</h3>\n<ul>\n<li>you have a complete development environment</li>\n<li>be prepared to up your search foo</li>\n<li>many packages can be built from slackbuilds</li>\n</ul>\n<p>The only mistakes you can\'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
|
|||
|
(3308,'2021-04-07','let\'s talk about Thunderbird',2005,'Using Thunderbird to manage emails.','<p>Thunder bird, the wonderful email client. I share how I use and enjoy the Thunderbird email client.</p>\r\n<p>use `hpr391` as the subject for all emails. If not, junk filter.</p>',391,0,0,'CC-BY-SA','email, Thunderbird',0,0,1),
|
|||
|
(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\'s article from 2019 on Richard M. Stallman',1584,'This text to speech article requires listener discretion.','<hr />\r\n<h3>Counter Point</h3>\r\n<p>This show has a counter point: <a href=\"https://hackerpublicradio.org/eps.php?id=3316\">hpr3316 :: FSF and RMS on election of Richard Stallman</a>\r\n</p>\r\n<hr />\r\n\r\n<p>Warning This show contains information that may not be suitable for all. Listener discretion is advised.</p>\r\n<p>Recently Richard M. Stallman, announced that he has rejoined the Free Software Foundation’s board of directors. An <a href=\"https://rms-open-letter.github.io/\">open letter on github</a> called for him to be removed again, and for the FSF’s entire board to resign.</p>\r\n<p>When he resigned in 2019, Bradley M. Kuhn (from the <a href=\"https://faif.us/\">Free as in Freedom podcast</a>) wrote an article titled \"On Recent Controversial Events\" about the issue. I am submitting that article here under the terms of the Creative Commons Attribution-Share Alike 3.0 United States License. The post contains many links and is available in the shownotes for this show. Some examples are included at the end of the blog post, and listener discretion is advised.</p>\r\n<h1>\r\n<a href=\"https://ebb.org/bkuhn/blog/2019/10/15/fsf-rms.html\">On Recent Controversial Events</a>\r\n</h1>\r\n<p class=\"topAttributionWithDate\">\r\nTuesday 15 October 2019 by Bradley M. Kuhn\r\n</p>\r\n<p>\r\nThe last 33 days have been unprecedentedly difficult for the software freedom community and for me personally. Folks have been emailing, phoning, texting, tagging me on social media (— the last of which has been funny, because all my social media accounts are placeholder accounts). But, just about everyone has urged me to comment on the serious issues that the software freedom community now faces. Until now, I have stayed silent regarding all these current topics: from Richard M. Stallman (RMS)’s public statements, to <a href=\"https://www.fsf.org/news/richard-m-stallman-resigns\">his resignation from the Free Software Foundation (FSF)</a>, to the Epstein scandal and its connection to MIT. I’ve also avoided generally commenting on software freedom organizational governance during this period. I did this for good reason, which is explained below. However, in this blog post, I now share my primary comments on the matters that seem to currently be of the utmost attention of the Open Source and Free Software communities.\r\n</p>\r\n<p>\r\nI have been silent the last month because, until two days ago, I was an at-large member of <a href=\"https://www.fsf.org/about/staff-and-board\">FSF’s Board of Directors</a>, and a <a href=\"https://static.fsf.org/nosvn/fsf-amended-bylaws-current.pdf\">Voting Member</a> of the FSF. As a member of FSF’s two leadership bodies, I was abiding by a reasonable request from the FSF management and my duty to the organization. Specifically, the FSF asked that all communication during the crisis <a href=\"https://www.fsf.org/news/richard-m-stallman-resigns\">come</a> <a href=\"https://www.fsf.org/news/fsf-and-gnu\">directly</a> from FSF officers and not from at-large directors and/or Voting Members. Furthermore, the FSF management asked all Directors and Voting Members to remain silent on this entire matter — even on issues only tangentially related to the current situation, and even when speaking in our own capacity (e.g., on our own blogs like this one). The FSF is an important organization, and I take any request from the FSF seriously — so I abided fully with their request.\r\n</p>\r\n<p>\r\nThe situation was further complicated because folks at my employer, Software Freedom Conservancy (where I also serve on the <a href=\"https://sfconservancy.org/about/board/#bkuhn\">Board of Directors</a>) had strong opinions about this matter as well. Fortunately, the FSF and Conservancy both had already created clear protocols for what I should do if ever there was a disagreement or divergence of views between Conservancy and FSF. I therefore was recused
|
|||
|
(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\'s essay \"<em>Open Source Misses the Point</em>\".<a href=\"#footnote1\">[1]</a></p>\r\n<p>But lately a lot of people have increasingly been feeling that <em>free software</em> misses the point.\r\nIronically a lot of this has been coming from the <em>open source</em> side of things, as the official free\r\nsoftware philosophy has been firmly anchored with Stallman, and he hasn\'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\'ve been thinking of it as a \"free software plus\", as it builds on the free software\r\nphilosophy, but adds aspects of social responsibility. The fact that Stallman was forced to resign\r\nfrom being Free Software Foundation president two years ago was a sign that people inside free\r\nsoftware cared about more than just the code and what freedoms it gives the recipient.</p>\r\n<p>A month ago, if you are listening to this on April the 20th 2021,\r\na manifesto was published called \"<em>Towards A Communal Software Movement</em>\", and I\'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\' names out of it\"<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\'ll leave this to the Grumpy Old Coders :-).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Artificial intelligence: <a href=\"https://en.wikipedia.org/wiki/Artificial_intelligence\" target=\"_blank\">https://en.wikipedia.org/wiki/Artificial_intelligence</a>\r\n</li>\r\n<li>Machine learning: <a href=\"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>Deep learning: <a href=\"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>Artificial neural networks (ANN): <a href=\"https://www.asimovinstitute.org/neural-network-zoo\" target=\"_blank\">https://www.asimovinstitute.org/neural-network-zoo</a>\r\n</li>\r\n<li>Back-propagation ANNs (BPN): <a href=\"https://en.wikipedia.org/wiki/Backpropagation\" target=\"_blank\">https://en.wikipedia.org/wiki/Backpropagation</a>\r\n</li>\r\n<li>DWAVE: <a href=\"https://www.dwavesys.com/quantum-computing\" target=\"_blank\">https://www.dwavesys.com/quantum-computing</a>\r\n</li>\r\n<li>Convolutional neural networks (CNNs): <a href=\"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>Generative adversarial network (GAN): <a href=\"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>Spy vs. Spy: <a href=\"https://toonopedia.com/spyvsspy.htm\" target=\"_blank\">https://toonopedia.com/spyvsspy.htm</a>\r\n</li>\r\n<li>Atlantik Ale: <a href=\"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, artificial intelligence, deep learning, 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\'s article from 2019 on Richard M. Stallman</a>\r\n</p>\r\n<hr />\r\n<p><a href=\"https://en.wikipedia.org/wiki/Richard_Stallman\">From Wikipedia, the free encyclopedia</a> <quote> In September 2019, Richard Stallman resigned as president of the FSF and left his “visiting scientist” role at MIT after making controversial comments about Marvin Minsky’s alleged role in the Jeffrey Epstein sex trafficking scandal. Stallman remained head of the GNU Project nevertheless and, in 2021, he returned to the FSF board of directors. </quote></p>\r\n<p>Since the show was submitted both the Free Software Foundation (FSF) and Richard Stallman have released statements on the matter.</p>\r\n<p>I am submitting those statements here under the terms of the <a href=\"https://creativecommons.org/licenses/by-nd/3.0/\">Creative Commons Attribution-No Derivative Works 3.0 license</a>. The statements contains many links which are available in the shownotes for this show.</p>\r\n<h1 id=\"statement-of-fsf-board-on-election-of-richard-stallman\">Statement of FSF board on election of Richard Stallman</h1>\r\n<p>Published on Apr 12, 2021 10:25 AM by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a></p>\r\n<p>\r\nThe voting members of the Free Software Foundation, which include the board of directors, voted to appoint Richard Stallman to a board seat after several months of thorough discussion and thoughtful deliberation.\r\n</p>\r\n<p>\r\nWe decided to bring RMS back because we missed his wisdom. His historical, legal and technical acumen on free software is unrivaled. He has a deep sensitivity to the ways that technologies can contribute to both the enhancement and the diminution of basic human rights. His global network of connections is invaluable. He remains the most articulate philosopher and an unquestionably dedicated advocate of freedom in computing.\r\n</p>\r\n<p>\r\n<a href=\"https://www.fsf.org/news/rms-addresses-the-free-software-community\">RMS acknowledges that he has made mistakes.</a> He has sincere regrets, especially at how anger toward him personally has negatively impacted the reputation and mission of FSF. While his personal style remains troubling for some, a majority of the board feel his behavior has moderated and believe that his thinking strengthens the work of the FSF in pursuit of its mission.\r\n</p>\r\n<p>\r\nWe take full responsibility for how badly we handled the news of his election to a board seat. We had planned a flow of information that was not executed in a timely manner or delivered in the proper sequence.\r\n</p>\r\n<p>\r\nFSF staff should have been informed and consulted first. The announcement by RMS at LibrePlanet was a complete surprise to staff, all those who worked so hard to organize a great event, to LibrePlanet speakers and to the exhibitors. We had hoped for a more inclusive and thoughtful process and we apologize that this did not occur.\r\n</p>\r\n<p>\r\nIn his position on the board, RMS has the same responsibilities as other members. He is an unpaid volunteer and subject to the organization’s policies, including prohibitions against conflicts of interest and sexual harassment and those outlining whistleblower processes and fiduciary duties. The responsibilities of the board are described at <a href=\"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\nWe believe his views will be critical to the FSF as we advance the mission and confront the challenges that software freedom faces.\r\n</p>\r\n<p>\r\nIn recent weeks, the board has <a href=\"https://www.fsf.org/news/preliminary-board-statement-on-fsf-governance\">committed to a series of changes</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\'m a big fan of Steve Gibson<br />\r\nDoes a great job of simplifying technical topics.<br />\r\n<a href=\"https://twit.tv/shows/security-now\" class=\"uri\">https://twit.tv/shows/security-now</a></p></li>\r\n<li><p>The Security Ledger – Paul Roberts (Weekly)<br />\r\nA weekly podcast mixing news and interviews<br />\r\n<a href=\"https://securityledger.com/\" class=\"uri\">https://securityledger.com/</a></p></li>\r\n<li><p>Risky Business podcast - Patrick Gray and Adam Boileau (Weekly)<br />\r\nDiscusses the week\'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\'s performance.\r\n</p>\r\n\r\n<p>\r\nFor more about performance, see <a target=\"_blank\" href=\"https://01.org/powertop/blogs/ayates1/2016/powertop-linuxcon-2015\">Powertop Linuxcon 2015 presentation</a> and maybe listen to <a href=\"https://gnuworldorder.info/#379\" target=\"_blank\">my GNU World Order episode</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\'t believe what happened next.','<p>\r\nA not-brief introduction to OpenNIC, the open and democratic domain name and number registry.\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\'s or Linus\' 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\'s thought process\r\nand evolution as such. Never mind Linux\'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\'t miss out on\r\nthis!</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Linux Kernel Archives: <a href=\"https://www.kernel.org\" target=\"_blank\">https://www.kernel.org</a>\r\n</li>\r\n<li>Device Tree System documentation: <a href=\"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>Linux BDFL: <a href=\"https://torvalds-family.blogspot.com\" target=\"_blank\">https://torvalds-family.blogspot.com</a>\r\n</li>\r\n<li>Linux kernel police: <a href=\"https://www.youtube.com/watch?v=zOcwNm7sqlw\" target=\"_blank\">https://www.youtube.com/watch?v=zOcwNm7sqlw</a>\r\n</li>\r\n<li>MythBusters: <a href=\"https://www.imdb.com/title/tt0383126\" target=\"_blank\">https://www.imdb.com/title/tt0383126</a>\r\n</li>\r\n<li>Conflict Resolution Network: <a href=\"https://www.crnhq.org\" target=\"_blank\">https://www.crnhq.org</a>\r\n</li>\r\n<li>Sage Sharp (left the project due to the nature of Linus\' 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\'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=3565\" target=\"_blank\">3565</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3565\" target=\"_blank\">Heavy Hacking down in the quarry. </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3566\" target=\"_blank\">3566</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3566\" target=\"_blank\">HPR Community News for March 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=3567\" target=\"_blank\">3567</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3567\" target=\"_blank\">What is NVMe™ and why is it important?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3568\" target=\"_blank\">3568</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3568\" target=\"_blank\">PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3569\" target=\"_blank\">3569</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-04-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3569\" target=\"_blank\">Linux Inlaws S01E53: Rust Marketing</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=3570\" target=\"_blank\">3570</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3570\" target=\"_blank\">The Filesystem</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=3571\" target=\"_blank\">3571</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3571\" target=\"_blank\">The Meatball Mystery</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0196.html\" target=\"_blank\">Windigo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3572\" target=\"_blank\">3572</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3572\" target=\"_blank\">More about NVMe</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3573\" target=\"_blank\">3573</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-13</td>\n<td><a href=\"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\'s Security Weekly, Enterprise Security Weekly, Business Security Weekly, Application Security Weekly, Security & Compliance Weekly, Security Weekly News, Tradecraft Security Weekly, & Secure Digital Life. Interesting and diverse discussions.<br />\r\nWarning: Discussions sometimes promote the consumption of alcohol and smoking cigars<br />\r\nThese podcasts are long<br />\r\n<a href=\"https://securityweekly.com/\" class=\"uri\">https://securityweekly.com/</a></p></li>\r\n<li><p>Security Stories - Cisco with Hazel Burton, Ben Nahorney, & Noureen Njoroge (Weekly)<br />\r\nA unique weekly interview-based podcast by sponsored by Cisco focusing on infosec stories<br />\r\n<a href=\"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>The Confident Defense Podcast - Conor Sherman (Weekly)<br />\r\nInterviews with influential and inspirational people in all areas of security<br />\r\n<a href
|
|||
|
(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\'re now connected. If you wait too long, your connection will likely time out.\r\nView the default landing page of the site you\'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 \'print encode_base64(\"myUserName\");\'\r\n$ perl -MMIME::Base64 -e \'print encode_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\'s a copy-paste of an example session:\r\n</p>\r\n\r\n<pre><code>\r\n$ openssl s_client -starttls smtp -connect email.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\'s MainFrame Challenge',314,'My experiment with Getty and A Getty Ansi - And wanting to have a Serial Terminal Mainframe','<p>Well its bit of challenge for Jerome to teach me how to do a Mainframe on a PI with serial terminal. I started the project using a old HPE 700/96 terminal amber. I used this site as my prime info.<br />\r\n<a href=\"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>First is seeing if you have a serial port</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\'t I do it? Bug? yes or no?</p></li>\r\n<li><p>We discuss ClaudioM\'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\'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=3586\" target=\"_blank\">3586</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3586\" target=\"_blank\">HPR Community News for April 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=3587\" target=\"_blank\">3587</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3587\" target=\"_blank\">20220406_UDM</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=3588\" target=\"_blank\">3588</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3588\" target=\"_blank\">Linux Inlaws S01E55: Get yer boots on for a fresh look at init systems</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=3589\" target=\"_blank\">3589</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3589\" target=\"_blank\">Sample of my microphones</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3590\" target=\"_blank\">3590</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3590\" target=\"_blank\">Directory Commands</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=3591\" target=\"_blank\">3591</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3591\" target=\"_blank\">Small Flashlights</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3592\" target=\"_blank\">3592</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3592\" target=\"_blank\">A quick look at the Surface pro X</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3593\" target=\"_blank\">3593</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3593\" target=\"_blank\">Home office setup mouse shoulder and Auto Hot Key Scripts</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=3594\" target=\"_blank\">3594</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3594\" target=\"_blank\">Peely-wally in Edinburgh</a></td>\n<td><a href=\"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\'s inner workings: <a href=\"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: <a href=\"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>More DL frameworks: <a href=\"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>TIOBE index: <a href=\"https://www.tiobe.com/tiobe-index\" target=\"_blank\">https://www.tiobe.com/tiobe-index</a>\r\n</li>\r\n<li>Stackoverflow survey: <a href=\"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, artificial intelligence, deep learning',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\'t miss this for nuggets\r\non geo databases and beyond!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Paul Ramsey: <a href=\"https://blog.cleverelephant.ca/\" target=_blank>https://blog.cleverelephant.ca/</a></li>\r\n<li>PostgreSQL: <a href=\"https://www.postgresql.org\" target=_blank>https://www.postgresql.org</a></li>\r\n<li>PostGIS: <a href=\"https://postgis.net\" target=_blank>https://postgis.net</a></li>\r\n<li>FOSS4G 2019: <a href=\"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\'t have any helpful icons or thumbnails to help you locate things. So we dig into the file naming conventions in DOS, including forbidden characters. And since the possible characters all come from the ASCII character set, we do a small look at that as well.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.internet.com/TERM/A/ASCII.html\" class=\"uri\">https://webopedia.internet.com/TERM/A/ASCII.html</a></li>\r\n<li><a href=\"https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart\" class=\"uri\">https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart</a></li>\r\n<li><a href=\"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, early PC computing, 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\'t remember while recording) <code>apt-cache search nmap >> ./dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;</code> <code>apt-cache showpkg nmap</code></p></li>\r\n<li><p>the depends example <code>apt-cache depends nmap >> ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the download example <code>sudo apt-get download dict dictd dict-wn dict-gcide artha</code></p></li>\r\n<li><p>vim <code>sudo apt-get vim; vimtutor</code></p></li>\r\n<li><p>Terminal examples <code>~</code>= home folder, <code>CTRL + R</code>= command search , <code>CTRL + L</code>= clear terminal, <code>xdg-open</code>= open files with default app.</p></li>\r\n<li><p>Searching with grep example <code>ls -lhAr ~ | grep -i bash >> ./dump05-05-2021.txt</code></p></li>\r\n<li><p>the dump05-05-2021.txt file</p></li>\r\n</ol>\r\n<pre><code>Wed_May_05_2021_12:22:43\r\n\r\nThis file is used to store terminal output for later use; now get out!\r\n\r\n\r\nHit:1 https://dl.google.com/linux/chrome/deb stable InRelease\r\nIgn:2 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana InRelease\r\nGet:3 https://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]\r\nHit:4 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana Release\r\nHit:5 https://mirror.cogentco.com/pub/linux/ubuntu focal InRelease\r\nHit:6 https://mirror.cogentco.com/pub/linux/ubuntu focal-updates InRelease\r\nHit:7 https://archive.canonical.com/ubuntu focal InRelease\r\nHit:8 https://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\'t buy Tiki anything...</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\'s approach, bash and python scripts assemble various text files into the book, inserting figures and tables using a simple home-brew tag system to generate reference numbers such as Figure 3.7 or Table 2.2. Such auto-numbering functionality is of course provided by many other document authoring systems, such as LaTeX, but the script also uses the tags to hunt down data in CSV files and convert them into the figures. In this way, nearly all information in the book can start off as text and then be processed into anything — prose, graphics, sound or even movies — that can be included with HTML. Also a clean separation between content and appearance is kept by using a CSS file.</p>\r\n<p>This is not WYSIWYG (what you see is what you get) but using the <em>entr</em> command to monitor file changes can allow auto-generation of the HTML and even a browser refresh (using a feature found in Midori and Falkon but not many other browsers).</p>\r\n<p>Dave describes how he achieves something similar to what Andrew has created by using <em>make</em> to co-ordinate the processing. The process of compiling the source text files into a final document does have some similarities with code compilation.</p>\r\n<p>Dave and Andrew discuss how useful their methods might be to others. Some of Andrew\'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\'s ever faced a\r\nstampeding horde of angry politicians!).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Keras: <a href=\"https://keras.io\" target=_blank>https://keras.io</a></li>\r\n<li>Image recognition in Keras: <a href=\"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>Facial recognition using convolutional neural networks (CNN): <a href=\"https://www.sitepoint.com/keras-face-detection-recognition\" target=_blank>https://www.sitepoint.com/keras-face-detection-recognition</a></li>\r\n<li>PETA: <a href=\"https://www.peta.org\" target=_blank>https://www.peta.org</a></li>\r\n<li>User recognition based on mouse movements and deep learning: <a href=\"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>Comparison of deep learning software: <a href=\"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\'s mind\r\nat the moment (apart maybe from a few lost souls still crying over spilled\r\ncoffee) plays a very important role in this show in addition to the newly\r\nfounded Rust Foundation hosting such eclectic members such as Microsoft,\r\nMozilla, Google and Facebook just to name a few looking after the language.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Rust: <a href=\"https://www.rust-lang.org\" target=_blank>https://www.rust-lang.org</a></li>\r\n<li>Rust Foundation: <a href=\"https://foundation.rust-lang.org\" target=_blank>https://foundation.rust-lang.org</a></li>\r\n<li>Steve Klabnik: <a href=\"https://steveklabnik.com\" target=_blank>https://steveklabnik.com</a></li>\r\n<li>Ruby on Rails: <a href=\"https://rubyonrails.org\" target=_blank>https://rubyonrails.org</a></li>\r\n<li>PyOxidizer: <a href=\"https://github.com/indygreg/PyOxidizer\" target=_blank>https://github.com/indygreg/PyOxidizer</a></li>\r\n<li>Mercurial: <a href=\"https://www.mercurial-scm.org\" target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>actix controversy: <a href=\"https://github.com/actix/actix-web/issues/289\" target=_blank>https://github.com/actix/actix-web/issues/289</a></li>\r\n<li>OpenSearch: <a href=\"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, unsafe code, bulleted lists, 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\'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=3608\" target=\"_blank\">3608</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3608\" target=\"_blank\">Battling with English - part 5</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://hackerpublicradio.org/eps.php?id=3609\" target=\"_blank\">3609</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3609\" target=\"_blank\">Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'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\'m trolling HPR, trolling HPR, trolling HPR.</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=3616\" target=\"_blank\">3616</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3616\" target=\"_blank\">Filling free Slots from the Rese
|
|||
|
(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\'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=3630\" target=\"_blank\">3630</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3630\" target=\"_blank\">Planning an RV Trip</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=3631\" target=\"_blank\">3631</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3631\" target=\"_blank\">HPR Community News for June 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=3632\" target=\"_blank\">3632</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3632\" target=\"_blank\">Intro to web scraping with Python</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=3633\" target=\"_blank\">3633</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3633\" target=\"_blank\">The collective history of RAID controller brands</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3634\" target=\"_blank\">3634</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3634\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer</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=3635\" target=\"_blank\">3635</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3635\" target=\"_blank\">A short podcast on a nice tool called system-monitoring-center</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">3636</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">The Importance of Data Reduction</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=3637\" target=\"_blank\">3637</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3637\" target=\"_blank\">HPR feed to Sqlite</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3638\" target=\"_blank\">3638</a></strong></td>\n<td>Wed</td>\n<td class=\"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\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing. 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.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><a href=\"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><a href=\"https://en.wikipedia.org/wiki/RGB_color_model\" class=\"uri\">https://en.wikipedia.org/wiki/RGB_color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Subtractive_color\" class=\"uri\">https://en.wikipedia.org/wiki/Subtractive_color</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Color_model\" class=\"uri\">https://en.wikipedia.org/wiki/Color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/HSL_and_HSV\" class=\"uri\">https://en.wikipedia.org/wiki/HSL_and_HSV</a></li>\r\n<li><a href=\"https://snappygoat.com/\" class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><a href=\"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, Layer Modes, Blending Modes, HSV Components Modes',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\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing, and in the previous tutorial we looked at the HSV model. This wraps up our look at color models, and also concluded our look at Layer Modes (or Blending 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-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://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><a href=\"https://en.wikipedia.org/wiki/CIELAB_color_space\" class=\"uri\">https://en.wikipedia.org/wiki/CIELAB_color_space</a></li>\r\n<li><a href=\"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\'m currently listening to the \"Feedback on the Article\" show, and am feeling like I should contribute a show.</p>\r\n<p>A long time ago now, I bought a new coffee machine for home, on the basis that I was going to be working from home for a while, and I was really missing my daily hits of actual coffee. I drink maybe four or five cups a day, depending on how early I get into work. I do try to have all this coffee in the morning, and am pretty good at not having any after lunch.</p>\r\n<p>Now, I do need to recognise where I am, Australia, overall we\'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\'ve also travelled back home, and got caught in a lockdown in my home state of Queensland over Christmas.</p>\r\n<p>Eventually, the lockdowns ended, we were allowed go back to work, and I started using my home coffee machine less and less, and I lost motivation to do this show.</p>\r\n<p>Then, of course, we had another inevitable hotel quarantine leak, and that spread to Victoria, 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\'m back to working from home, and once again, 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\'t alter gameplay by changing monster stats, skills, maps or items. \r\n</p>\r\n\r\n<p>\r\n<a href=\"https://www.median-xl.com/\">median xl</a><br />\r\nThe most popular Diablo II overhaul modification, Median XL is an action RPG with extensive endgame content, deep character customisation and challenging gameplay. It offers thousands of new items, new skills for all classes, and multiple improvements to the Diablo II engine.\r\n</p>',36,0,0,'CC-BY-SA','diablo 2,video games,gaming,modding,hacking,median xl,plug y',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\'s self-diagnostic and reporting capability. OBD systems give the vehicle owner or repair technician access to the status of the various vehicle sub-systems. The amount of diagnostic information available via OBD has varied widely since its introduction in the early 1980s versions of on-board vehicle computers. Early versions of OBD would simply illuminate a malfunction indicator light or \"idiot light\" if a problem was detected but would not provide any information as to the nature of the problem. Modern OBD implementations use a standardized digital communications port to provide real-time data in addition to a standardized series of diagnostic trouble codes, or DTCs, which allow a person to rapidly identify and remedy malfunctions within the vehicle. \r\n</p>\r\n<p>\r\n<a href=\"https://play.google.com/store/apps/details?id=org.prowl.torque&hl=en_US&gl=US\">Torque Pro (OBD 2 and Car)</a><br />\r\nSee what your car is doing in realtime, get OBD fault codes, car performance, sensor data and more!\r\nTorque is a vehicle / car performance / diagnostics tool and scanner that uses an OBD II Bluetooth adapter to connect to your OBD2 engine management / ECU\r\n</p>\r\n<p>\r\n<a href=\"https://www.myg37.com/forums/engine-drivetrain-and-forced-induction/298338-vdc-stays-on-randomly.html\">Forum Thread</a>\r\n</p>\r\n<p>\r\n<a href=\"https://www.nicoclub.com/search#gsc.tab=0&gsc.q=infinity&gsc.sort=\">Search on NicoClub.com for Infinity Manuals</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\'s benefited me since I got it','<p>The upgrades made to the machine were a 500 GB ssd, 16 GB of ram, and went from El Capitan to Catalina.</p>',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1);
|
|||
|
INSERT INTO `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\'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=3651\" target=\"_blank\">3651</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3651\" target=\"_blank\">HPR Community News for July 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=3652\" target=\"_blank\">3652</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3652\" target=\"_blank\">Registered memory</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3653\" target=\"_blank\">3653</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3653\" target=\"_blank\">Hello HPR Community</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">3654</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">Use the data in the Ogg feed to create a website.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655\" target=\"_blank\">3655</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3655\" target=\"_blank\">BSD for Linux users</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">3656</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">Importance of Small toy projects</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3657\" target=\"_blank\">3657</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3657\" target=\"_blank\">Small time sysadmin</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=3658\" target=\"_blank\">3658</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3658\" target=\"_blank\">Linux Inlaws S01E62: 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\'ve run into disaster using my chrome book','<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\'t handle them at the moment! (We are working on a solution to some of this though). Remember, the internals of an email are complex and the script isn\'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\'s not possible to change existing summaries or tags by this route, only to add missing ones</li>\r\n<li>Ensure the summary text isn\'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\'t exceed 200 characters</li>\r\n<li>You can update more than one show per email if you want</li>\r\n<li>Blank lines between the groups of show/summary/tags lines are fine (as shown), as are comment lines beginning with \'#\'</li>\r\n</ul>\r\n<p>Updates will be processed with a script, which is run manually, and this page will be refreshed once the changes have been made. The timestamp above shows when it was last refreshed.</p>\r\n<ol type=\"1\">\r\n<li>Got carried away and broke the 100 character rule\r\n<ul>\r\n<li>can be checked in vim by hitting \'$\', goes to the last character in the line. Observe the character count at the bottom of the screen to verify this is less than 100.</li>\r\n</ul></li>\r\n<li>Went a little too far with tags, and went pretty far beyond the 200 character</li>\r\n<li>Found that these are reasonable limits, that if not followed, break the script</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: Please note that this episode was recorded on June 1st 2021.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Free Software Foundation Europe: <a href=\"https://fsfe.org\" target=_blank>https://fsfe.org</a></li>\r\n<li>Matthias Kirschner: <a href=\"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>Free Software Foundation: <a href=\"https://fsf.org\" target=_blank>https://fsf.org</a></li>\r\n<li>Open Software Initiative (OSI): <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI definition of open source: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Public Money Public Code campaign: <a href=\"https://publiccode.eu\" target=_blank>https://publiccode.eu</a></li>\r\n<li>Stallman controversy: <a href=\"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>Towel Day: <a href=\"https://en.wikipedia.org/wiki/Towel_Day\" target=_blank>https://en.wikipedia.org/wiki/Towel_Day</a></li>\r\n<li>FSFE podcast: <a href=\"https://fsfe.org/news/podcast.en.html\" target=_blank>https://fsfe.org/news/podcast.en.html</a></li>\r\n<li>Rutger Bregman, Human kind: <a href=\"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>Ashes to Ashes: <a href=\"https://www.bbc.co.uk/programmes/b00jhp3l\" target=_blank>https://www.bbc.co.uk/programmes/b00jhp3l</a></li>\r\n<li>UK met office: <a href=\"https://www.metoffice.gov.uk\" target=_blank>https://www.metoffice.gov.uk</a></li>\r\n<li>Karl Marx, A Critique of Political Economy: <a href=\"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, Towel Day',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\'t fill up your storage quite as fast. But if you want the highest quality you have to work with unprocessed images, called RAW images. These are simply the actual data recorded by the camera sensors, and they give you some advantages, such as better correction of white balance. But GIMP does not open RAW images directly. But there are some work-arounds which we discuss in this tutorial.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\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://en.wikipedia.org/wiki/Darktable\" class=\"uri\">https://en.wikipedia.org/wiki/Darktable</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dcraw\" class=\"uri\">https://en.wikipedia.org/wiki/Dcraw</a></li>\r\n<li><a href=\"https://linux.die.net/man/1/dcraw\" class=\"uri\">https://linux.die.net/man/1/dcraw</a></li>\r\n<li><a href=\"https://krita.org/en/\" class=\"uri\">https://krita.org/en/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/\" class=\"uri\">https://www.rawtherapee.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DigiKam\" class=\"uri\">https://en.wikipedia.org/wiki/DigiKam</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ImageMagick\" class=\"uri\">https://en.wikipedia.org/wiki/ImageMagick</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Shotwell_(software)\" class=\"uri\">https://en.wikipedia.org/wiki/Shotwell_(software)</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://howtogimp.com/raw-photos-in-gimp/\" class=\"uri\">https://howtogimp.com/raw-photos-in-gimp/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/free-raw-photos/\" class=\"uri\">https://www.signatureedits.com/free-raw-photos/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/raw-files-license/\" class=\"uri\">https://www.signatureedits.com/raw-files-license/</a></li>\r\n<li><a href=\"https://www.darktable.org/install/\" class=\"uri\">https://www.darktable.org/install/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/downloads/\" class=\"uri\">https://www.rawtherapee.com/downloads/</a></li>\r\n<li><a href=\"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, RAW images, unprocessed images',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),
|
|||
|
(3620,'2022-06-17','Photo storage, backups, and workflow',1222,'How to keep your photos safe','<p>If you have photos that are important to you, you should take steps to protect them. Every day someone loses a lifetime of memories because they didn\'t take these steps. Don\'t be one of them. In this tutorial I explain how <em>I</em> backup and protect my photos and what my workflow is like. You may find some ideas here that you can use.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref\" class=\"uri\">https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref</a></li>\r\n<li><a href=\"https://www.theguardian.com/world/2007/sep/29/argentina.film\" class=\"uri\">https://www.theguardian.com/world/2007/sep/29/argentina.film</a></li>\r\n<li><a href=\"https://www.facebook.com/\" class=\"uri\">https://www.facebook.com/</a></li>\r\n<li><a href=\"https://www.google.com/photos/about/\" class=\"uri\">https://www.google.com/photos/about/</a></li>\r\n<li><a href=\"https://www.flickr.com/\" class=\"uri\">https://www.flickr.com/</a></li>\r\n<li><a href=\"https://www.smugmug.com/plans/\" class=\"uri\">https://www.smugmug.com/plans/</a></li>\r\n<li><a href=\"https://www.shutterfly.com/\" class=\"uri\">https://www.shutterfly.com/</a></li>\r\n<li><a href=\"https://beebom.com/flickr-alternatives/\" class=\"uri\">https://beebom.com/flickr-alternatives/</a></li>\r\n<li><a href=\"https://www.gimp.org/tutorials/GIMPProfile/\" class=\"uri\">https://www.gimp.org/tutorials/GIMPProfile/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/\" class=\"uri\">https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Photo storage, Photo backup, Photo workflow',0,0,1),
|
|||
|
(3379,'2021-07-15','Linux Inlaws S01E34: The one with the intelligence',2716,'Part four of the three-part miniseries on deep learning and artificial intelligence','<p>\r\n In this fourth part of our three-part miniseries on Deep and Machine Learning our two heroes shed some\r\n light on a DL architecture called Generative Pre-Trained Transformer (GPT), a pretty sophistic piece\r\n of software that fools most humans when it comes to authoring text (ideal for budding writers with\r\n a block in place). Other topics of discussion includes OpenAI (the company behind this framework),\r\n Elon Musk, Bitcoin, Microsoft and if the GPT can actually pass the Turing test. All will be revealed -\r\n don\'t miss this episode!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenAI: <a href=\"https://openai.com\" target=_blank>https://openai.com</a></li>\r\n<li>GPT: <a href=\"https://openai.com/projects\" target=_blank>https://openai.com/projects</a></li>\r\n<li>The Turing Test: <a href=\"https://en.wikipedia.org/wiki/Turing_test\" target=_blank>https://en.wikipedia.org/wiki/Turing_test</a></li>\r\n<li>GPT-2 source code: <a href=\"https://github.com/openai/gpt-2\" target=_blank>https://github.com/openai/gpt-2</a></li>\r\n<li>GPT meta-progamming: <a href=\"https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence\" target=_blank>https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence</a></li>\r\n<li>GPT-3 interview: <a href=\"https://www.youtube.com/watch?v=PqbB07n_uQ4\" target=_blank>https://www.youtube.com/watch?v=PqbB07n_uQ4</a></li>\r\n<li>DSDS: <a href=\"https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar\" target=_blank>https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar</a></li>\r\n<li>GPT-3 sample 1: <a href=\"https://linuxinlaws.eu/files/padawans.txt\" target=_blank>https://linuxinlaws.eu/files/padawans.txt</a></li>\r\n<li>GPT-3 sample 2: <a href=\"https://linuxinlaws.eu/files/HGttG.txt\" target=_blank>https://linuxinlaws.eu/files/HGttG.txt</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','GPT-3, OpenAI, Elon Musk, Microsoft, Bitcoin, meta-programming',0,0,1),
|
|||
|
(3381,'2021-07-19','Learning to skate',2152,'Klaatu goes for a walk, and talks about learning to ride a skateboard','<p>Apologies for the heavy breathing. I chose (unwisely, in terms of audio) to walk up a steep hill.</p>\r\n',78,0,0,'CC-BY-SA','skateboard',0,0,1),
|
|||
|
(3378,'2021-07-14','A bit of my experience with Starlink internet service',608,'some ramblings about satellite internet service and how Starlink is different','<p>Starlink website: <a href=\"https://www.starlink.com/\" class=\"uri\">https://www.starlink.com/</a></p>\r\n\r\n<p>Starlink from Wikipedia: <a href=\"https://en.wikipedia.org/wiki/Starlink\" class=\"uri\">https://en.wikipedia.org/wiki/Starlink</a></p>\r\n\r\n<p>\r\nStarlink is a satellite internet constellation being constructed by SpaceX providing satellite Internet access. The constellation will consist of thousands of mass-produced small satellites in low Earth orbit (LEO), which communicate with designated ground transceivers. The SpaceX satellite development facility in Redmond, Washington houses the Starlink research, development, manufacturing, and orbit control teams. The cost of the decade-long project to design, build, and deploy the constellation was estimated by SpaceX in May 2018 to be at least US$10 billion.\r\n</p>\r\n<p>\r\nProduct development began in 2015. Two prototype test-flight satellites were launched in February 2018. Additional test satellites and 60 operational satellites were deployed in May 2019. SpaceX launches up to 60 satellites at a time, aiming to deploy 1,584 of the 260 kg (570 lb) spacecraft to provide near-global service by late 2021 or 2022. SpaceX started a private beta service in the Northern United States in August 2020 and a public beta in October 2020, service beginning at high latitudes between 44° and 52° North.\r\n</p>\r\n<p>\r\nOn 15 October 2019, the United States Federal Communications Commission (FCC) submitted filings to the International Telecommunication Union (ITU) on SpaceX\'s behalf to arrange spectrum for 30,000 additional Starlink satellites to supplement the 12,000 Starlink satellites already approved by the FCC.\r\n</p>\r\n<p>\r\nAstronomers have raised concerns about the constellations’ effect on ground-based astronomy and how the satellites will add to an already jammed orbital environment. In response, SpaceX has implemented several upgrades to Starlink satellites aimed at reducing their brightness during operation. The satellites are equipped with krypton-fueled Hall thrusters which allow them to de-orbit at the end of their life. Additionally, the satellites are designed to autonomously avoid collisions based on uplinked tracking data.\r\n</p>\r\n',243,0,0,'CC-BY-SA','internet, leo, satellites, ISP',0,0,1),
|
|||
|
(3382,'2021-07-20','How I fixed a fault on my car for free thanks to YouTube',760,'How I fixed a fault on my car for free and as an added bonus without injuring myself!','<p>I had a spare moment and found this show on my hard drive. Cheers MrX</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=kl1_VM_j5r8\">YouTube video I found that explains how to fix a rattling heat shield for free</a></p>\r\n<p><em>Picture of the fix!</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3382/heat-shield-repair.jpg\" alt=\"Picture of the fix!\" /></p>\r\n',201,0,1,'CC-BY-SA','Car, Repair, Hack, DIY',0,0,1),
|
|||
|
(3383,'2021-07-21','My gEeeky Experiment - Part 1',1029,'ClaudioM talks about how he revived his lowly Asus Eee PC 901 netbook with OpenBSD.','<ul>\r\n<li>Blog post: <a href=\"https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/</a></li>\r\n<li>Asus Eee PC 901 info via Wikipedia (first paragraph in link): <a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models\" class=\"uri\">https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models</a></li>\r\n<li>OpenBSD Web Site: <a href=\"https://www.openbsd.org/\" class=\"uri\">https://www.openbsd.org/</a></li>\r\n<li>Duplicating installed packages on another machine, via the OpenBSD FAQ: <a href=\"https://www.openbsd.org/faq/faq15.html#PkgDup\" class=\"uri\">https://www.openbsd.org/faq/faq15.html#PkgDup</a></li>\r\n<li>Video of Eee PC 901 running OpenBSD 6.6: <a href=\"https://imgur.com/KHJj8lK\" class=\"uri\">https://imgur.com/KHJj8lK</a></li>\r\n<li>Mastodon post from <span class=\"citation\" data-cites=\"solene\">@solene</span><span class=\"citation\" data-cites=\"bsd.network\">@bsd.network</span> about the Firefox port on OpenBSD: <a href=\"https://bsd.network/@solene/106481939809930365\" class=\"uri\">https://bsd.network/@solene/106481939809930365</a></li>\r\n</ul>\r\n<p>CPU on my Dell Latitude E6410 via sysctl: hw.model=Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz</p>\r\n',152,0,0,'CC-BY-SA','asus,eeepc,openbsd,bsd,linux',0,0,1),
|
|||
|
(3384,'2021-07-22','Page Numbers in EPUB eBook Files',1699,'Response to HPR 3367 I describe how to specify page numbers in an EPUB eBook.','<p>This episode is a response to <a href=\"https://hackerpublicradio.org/eps.php?id=3367\">hpr3367</a> by Andrew Conway and Dave Morriss. One of the topics they brought up was the thorny issue of page numbers in e-books. Most of the time you don\'t need to worry about page numbers in ebooks, if you\'re reading fiction for example. The whole point of an ebook is that the texts can reflow to fit the page no matter what size the screen is or what font-size you\'ve chosen. This is a major accessibility feature of all e-book formats. One reason you might want to specify actual page numbers, though, is if you\'re dealing with a technical or academic book, and you need to be able to refer to specific passages in the book by page number, as you are expected to do in academic research. Or, as Andrew and Dave were discussing, you might need to create an index in your ebook that would send your readers back to specific pages like in a paper book.</p>\r\n\r\n<p>I\'ve thought about this before but never really gotten into the weeds and figured out how to make it happen. In fact, when I was creating the new digital editions of the Counterpoint textbooks like I discussed in <a href=\"https://hackerpublicradio.org/eps.php?id=1512\">hpr1512</a>, I actually took the trouble to put page number anchors through the entire thing, so that at a future date I would be able to enable real page numbers. This was a key part of the source file\'s infrastructure, which helped me quickly find the passages I was working on in my huge HTML file. Those anchors are not quite in the correct format for EPUB, but they are consistent and I will easily be able to write a script to fix them. I haven\'t done that yet, but now that I figured out how to do it on some smaller examples, this is on my to-do list.</p>\r\n\r\n<p>Anyway while I was listening to Dave and Andrew talk about this, I thought I remembered reading somewhere that in the newest ePub specification, EPUB 3, there was support for publisher\'s page numbers to deal with precisely this issue. Their discussion prompted me to see if I could make it work. I\'m happy to report success, although with some qualifications, which I will get into.</p>\r\n\r\n<h3>Converting to EPUB 3</h3>\r\n\r\n<p>The first thing to do is to upgrade your ebook from EPUB2 to EPUB3. There are a couple of ways to do this. The way I did it was to use the ebook editor in a recent version of Calibre. When you open up the EPUB for editing, go to the <code>Tools</code> menu and choose <code>Upgrade book internals</code>. This will create the new navigation file <code>nav.xhtml</code> to replace the old <code>toc.ncx</code> file. You\'ll need to edit this new file later to enable the page numbers.</p>\r\n\r\n<h3>Insert page anchors</h3>\r\n\r\n<p>Next you need to put your page anchors in there. This could be very tedious if you haven\'t done any preparatory work, such as putting visible page numbers in plain sight in square brackets [21] the way I did for a couple of ebooks. It wasn\'t very elegant, but at least it was easy to find where the page breaks were. I have a <a href=\"https://hackerpublicradio.org/eps.php?id=1284\">Blather</a> voice command that triggers a python script to create these things. Here\'s an example of page number anchor, which goes in the main text of the book wherever you want to insert a page number. This will not be visible to the reader inline. This is for page 57:</p>\r\n\r\n<pre>\r\n<span epub:type="pagebreak" id="page57" title="57"></span>\r\n</pre>\r\n\r\n<h3>Page List in Navigation File</h3>\r\n\r\n<p>Finally you need to put a <strong>page list</strong> in the new navigation file. This is simply an ordered list with hyperlinks to every page anchor that you put in your ebook. This will not be visible to the reader, but it\'s critical to making everything work. Here\'s a minimal example from my first attempt. This only covers
|
|||
|
(3386,'2021-07-26','What\'s for dinner?',1342,'Some scripts and a database for randomly choosing which meal to cook','<h2 id=\"overview\">Overview</h2>\r\n<p>I live on my own, but I cook for members of my family from time to time. Each week we all get together and cook dinner for Wednesday and Thursday. I usually do the cooking but we are starting to share these duties for certain meals.</p>\r\n<p>In 2019 I thought it would be useful if I had some sort of random chooser to decide what next week’s meal was going to be. I wrote a Bash script called <code>choose_meal</code>, using a simple CSV file of meal names and the date last eaten to avoid choosing the same one too often. The shortcomings of this approach soon became apparent!</p>\r\n<p>It wasn’t long before <code>choose_meal</code> was rewritten in <a href=\"https://www.perl.org/\" title=\"Perl scripting language\">Perl</a>. This time I decided to use a database, and chose <a href=\"https://www.sqlite.org/index.html\"><code>SQLite</code></a> to create it. My database contained just two tables, one for the meals themselves (called slightly confusingly <code>\'meal_history\'</code>), and another for a record of the choices made (called <code>\'meal_log\'</code>) – the ability to produce historical reports seemed like a desirable feature!</p>\r\n<p>In 2019 the design of this system was very specific to our needs: one choice per week on a Wednesday. It was not something that could be used by anyone else – which seemed like a bad idea.</p>\r\n<p>In late 2020 and early 2021 the system was redesigned, as will be discussed in the detailed notes. In May 2021 a more general design was added to the public <a href=\"https://gitlab.com/davmo/weekly_menus\" title=\"Weekly Menus repository\">GitLab repository</a> and the preparation of this show was begun.</p>\r\n<p>I had never intended this system to hold recipes. This was partly because I have built a collection of recipes I have constructed from various sources and amended as I have made them. I print these and keep them in a ring-binder for reference as I cook. In some cases the meals described in the database are multi-component ones (such as the dishes that make up a curry for example), so it doesn’t seem appropriate to hold these here.</p>\r\n<p>I might rethink this in the future however.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3386/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><p><a href=\"https://www.perl.org/\">Perl</a></p>\r\n<ul>\r\n<li><a href=\"https://www.perl.org/get.html\">Perl 5</a>: (currently v5.35.0)</li>\r\n<li><a href=\"https://www.raku.org/\">Raku</a>: originally called Perl 6, a totally different scripting language.</li>\r\n<li><a href=\"https://www.perl.com/article/announcing-perl-7/\">Perl 7</a>: updates to Perl 5, removal of some historical stuff</li>\r\n</ul></li>\r\n<li><p><a href=\"https://www.sqlite.org/index.html\">SQLite</a>: a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.</p></li>\r\n<li><p><a href=\"https://gitlab.com/davmo/weekly_menus\">GitLab repository for <em>Weekly Menus</em></a></p></li>\r\n</ul>',225,0,1,'CC-BY-SA','Perl,SQLite3,database,food',0,0,1),
|
|||
|
(3387,'2021-07-27','Infosec Podcasts Part 5 Grab bag',483,'Presenting my favorite podcasts related to various aspects of information security','<p>Inoffensive in every region of the world.</p>\r\n<p>Thank you to everyone who has listened to my previous episodes. I hope I am not boring you all to death!</p>\r\n<p>Why am I recording this series?</p>\r\n<ul>\r\n<li>You can hear my reasoning for why I am making this series by listening to the introduction to any of the previous four episodes in this series. Yes, this is a shameless plug for you to listen to my other works.</li>\r\n</ul>\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-5\">Part 5</h2>\r\n<h3 id=\"hacks--attacks\">Hacks & Attacks</h3>\r\n<ul>\r\n<li><p>Malicious Life Ran Levi sponsored by Cybereason (Periodically)</p>\r\n<ul>\r\n<li>Detailed descriptions of specific historical events in cybersecurity</li>\r\n<li><a href=\"https://malicious.life/\">https://malicious.life/</a></li>\r\n</ul></li>\r\n<li><p>Darknet Diaries - Jack Rhysider (Bi-Weekly)</p>\r\n<ul>\r\n<li>Stories from the darker side of the net</li>\r\n<li><a href=\"https://darknetdiaries.com/\">https://darknetdiaries.com/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"technical-information--learning\">Technical information / learning</h3>\r\n<ul>\r\n<li><p>Digital Forensic Survival Podcast - Michael Leclair (Weekly)</p>\r\n<ul>\r\n<li>A weekly deep dive into digital forensics</li>\r\n<li><a href=\"https://digitalforensicsurvivalpodcast.com/\">https://digitalforensicsurvivalpodcast.com/</a></li>\r\n</ul></li>\r\n<li><p>The Offensive Security Podcast - TJ Null and Jeremy Miller (Harbinger) and sponsored by Offensive Security (Creators of the OSCP Offensive Security Certified Professional certification)</p>\r\n<ul>\r\n<li>Probably belongs in the Career & Personal Development category, but I discovered it after I had already recorded that episode.</li>\r\n<li>Interviews with Red team practitioners and other security professionals, related to the various certifications and training available with Offensive Security.</li>\r\n<li><a href=\"https://www.offensive-security.com/podcast/\">https://www.offensive-security.com/podcast/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"community--social--history\">Community / Social / History</h3>\r\n<ul>\r\n<li><p>Command Line Heroes - Saron Yitbarek and sponsored by Red Hat (Weekly with gaps between seasons)</p>\r\n<ul>\r\n<li>Tells the stories about how got to be where we are today, from open source to dev-ops, hardware, programming languages, and everything in between</li>\r\n<li><a href=\"https://www.redhat.com/en/command-line-heroes\">https://www.redhat.com/en/command-line-heroes</a></li>\r\n</ul></li>\r\n<li><p>Beers with Talos - Mitch Neff, Craig Williams, Joel Esler, Matt Olney all part of Cisco Talos Research Center (Periodically)</p>\r\n<ul>\r\n<li>A light hearted and sarcastic podcast which touches on current issues of interest to the hosts</li>\r\n<li><a href=\"https://www.talosintelligence.com/podcasts\">https://www.talosintelligence.com/podcasts</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>I hope that this series has helped introduce you to some new and interesting listening options. Give some of them a try, and I would love to get your feedback in the episode comments on the HPR website.</p>\r\n<p>The next and final episode of this series will be about Information Security Leadership podcasts.</p>\r\n<p>Thank you for listening.</p>',394,75,1,'CC-BY-SA','infosec, podcasts, security',0,0,1),
|
|||
|
(3399,'2021-08-12','Linux Inlaws S01E36: Open Source Licenses',3361,'The ultimate show on open source licenses or how to fall asleep without chemicals','<p>\r\n In this episode Chris is trying hard to get Martin to sleep by elaborating on the\r\n subject of free and open source software licenses but fails miserably. Listen to a\r\n more than riveting episode on the ins and outs of licensing FLOSS code bases in addition\r\n to banter about Brexit, plans for a reshaping of Europe after the invasion of England\r\n and Wales, Northern Ireland and Scotland leave the UK.\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>MI6: <a href=\"https://www.sis.gov.uk\" target=_blank>https://www.sis.gov.uk</a></li>\r\n<li>OSI definition of free and open source software: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>VMware GPL lawsuit: <a href=\"https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit\" target=_blank>https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit</a></li>\r\n<li>Copyleft: <a href=\"https://www.gnu.org/licenses/copyleft.html\" target=_blank>https://www.gnu.org/licenses/copyleft.html</a></li>\r\n<li>Permissive licensing: <a href=\"https://en.wikipedia.org/wiki/Permissive_software_license\" target=_blank>https://en.wikipedia.org/wiki/Permissive_software_license</a></li>\r\n<li>Affero GPL: <a href=\"https://en.wikipedia.org/wiki/Affero_General_Public_License\" target=_blank>https://en.wikipedia.org/wiki/Affero_General_Public_License</a></li>\r\n<li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li>\r\n<li>Audacity usage restriction issue: <a href=\"https://github.com/audacity/audacity/issues/1213\" target=_blank>https://github.com/audacity/audacity/issues/1213</a></li>\r\n<li>Redis Source Available License: <a href=\"https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf\" target=_blank>https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf</a></li>\r\n<li>GoodFORM: <a href=\"https://goodformcode.com\" target=_blank>https://goodformcode.com</a></li>\r\n<li>Server Side Public License: <a href=\"https://www.mongodb.com/licensing/server-side-public-license\" target=_blank>https://www.mongodb.com/licensing/server-side-public-license</a></li>\r\n<li>Creative Commons licenses: <a href=\"https://creativecommons.org/choose\" target=_blank>https://creativecommons.org/choose</a></li>\r\n<li>Clarkson\'s Farm: <a href=\"https://en.wikipedia.org/wiki/Clarkson%27s_Farm\" target=_blank>https://en.wikipedia.org/wiki/Clarkson%27s_Farm</a></li>\r\n<li>Taking Lives: <a href=\"https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Licensing, GNU, BSD, MIT, Taking Lives, MI6, Clarkson\'s Farm, Open Source Initiative',0,0,1),
|
|||
|
(3696,'2022-10-03','HPR Community News for September 2022',3283,'HPR Volunteers talk about shows released and comments posted in September 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\'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=3674\" target=\"_blank\">3674</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3674\" target=\"_blank\">Emergency Show posted in 2012. MUD</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=3675\" target=\"_blank\">3675</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3675\" target=\"_blank\">Plan 9: An exercise in futility</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">3676</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">HPR Community News for August 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=3677\" target=\"_blank\">3677</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3677\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3678\" target=\"_blank\">3678</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3678\" target=\"_blank\">\"Stupid Users\" ... no, not those users, the other \"stupid users\"</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=3679\" target=\"_blank\">3679</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3679\" target=\"_blank\">Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s</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=3680\" target=\"_blank\">3680</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3680\" target=\"_blank\">EDIT</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=3681\" target=\"_blank\">3681</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3681\" target=\"_blank\">Rust 101 Episode 3: Functionally Insane</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3682\" target=\"_blank\">3682</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3682\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 5</a></td>\n<td><a href=
|
|||
|
(3392,'2021-08-03','Structured error reporting',1714,'Tuula talks about how she improved build times by breaking down error reporting to smaller parts','<h2 id=\"initial-state\">Initial state</h2>\r\n<p>When I originally wanted a unified error reporting on the server-side, I made one huge type that enumerated all the possible error cases that could be reported:</p>\r\n<pre><code>-- | Error codes for all errors returned by API\r\ndata ErrorCode\r\n -- common error codes\r\n = ResourceNotFound\r\n | InsufficientRights\r\n | FailedToParseDataInDatabase\r\n -- errors specific to news\r\n | SpecialEventHasAlreadyBeenResolved\r\n | UnsupportedArticleType\r\n | SpecialNewsExtractionFailed\r\n | TriedToMakeChoiceForRegularArticle\r\n -- errors specific to simulation state\r\n | SimulationStatusNotFound\r\n | DeltaTIsTooBig\r\n | TurnProcessingAndStateChangeDisallowed\r\n | SimulationNotOpenForCommands\r\n | SimulationNotOpenForBrowsing\r\n -- errors specific to people\r\n | StatIsTooLow Text\r\n | CouldNotConfirmDateOfBirth\r\n | DateOfBirthIsInFuture\r\n | FirstNameIsEmpty\r\n | FamilyNameIsEmpty\r\n | CognomenIsEmpty\r\n | RegnalNumberIsLessThanZero\r\n -- errors specific to new person creation\r\n | AgeBracketStartIsGreaterThanEnd\r\n | PersonCreationFailed\r\n deriving (Show, Read, Eq)\r\n</code></pre>\r\n<p>Then I had some helper functions to turn any value of that type into a nice error message:</p>\r\n<pre><code>errorCodeToStatusCode :: ErrorCode -> Int\r\nstatusCodeToText :: Int -> ByteString\r\nerrorCodeToText :: ErrorCode -> Text\r\nraiseIfErrors :: [ErrorCode] -> HandlerFor App ()\r\n</code></pre>\r\n<p><code>errorCodeToStatusCode</code> was responsible for turning <code>ErrorCode</code> into http status code. For example <code>StatIsTooLow \"intrigue\"</code> would be <code>400</code>. <code>statusCodeToText</code> would take this code and turn it into short error message given in http response. <code>400</code> would be <code>Bad Request</code>. <code>errorCodeToText</code> would give a bit more verbose explanation of what happened, <code>StatIsTooLow \"intrigue\"</code> would be mapped to <code>\"Stat intrigue is too low\"</code>. Finally <code>raiseIfErrors</code> would take a list of <code>ErrorCode</code> and use these helper functions to turn them into a http response with correct status code, error message and json body detailing all errors that had happened:</p>\r\n<pre><code>[\r\n { code:\r\n { tag: "StatIsTooLow"\r\n , contents: "intrique"\r\n }\r\n , error: "Stat intrigue is too low"\r\n }\r\n]\r\n</code></pre>\r\n<p>There’s two tags: <code>code</code>, which contains machine readable details about the error and <code>error</code>, which contains error message that can be shown to user.</p>\r\n<p>While this worked fine, there was some problems with it. <code>ErrorCode</code> type was growing larger and larger and the module it was defined in was referred all over the codebase. Every time I added a new error message, all the modules that used error reporting had to be compiled and it was getting slow.</p>\r\n<h2 id=\"solution\">Solution</h2>\r\n<p>Breaking up the <code>ErrorCode</code> to smaller types and moving them to different modules would means less modules were going to built when I added a new error code. The problem was that <code>raiseIfErrors :: [ErrorCode] -> HandlerFor App ()</code> wanted a list of <code>ErrorCode</code> and elements in a list have to be of same type.</p>\r\n<p>I started by splitting <code>ErrorCode</code> to smaller types. Each of the smaller error types have automatically derived toJSON and fromJSON functions for serializing them to and from JSON:</p>\r\n<pre><code>data PersonCreationError =\r\n StatIsTooLow Text\r\n | CouldNotConfirmDateOfBirth\r\n | DateOfBirthIsInFuture\r\n | FirstNameIsEmpty\r\n | FamilyNameIsEmpty\r\n | CognomenIsEmpty\r\n | RegnalNumberIsLessThanZero\r\n deriving (Show, Re
|
|||
|
(3393,'2021-08-04','We need to talk about XML',1885,'An extensible markup language? This is too good to be true!','<p>Klaatu introduces XML.</p>\r\n\r\n<p>\r\nThe sample XML document discussed in this episode is:\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n<xml>\r\n <sol>\r\n <planet>\r\n <name>\r\n Mercury\r\n </name>\r\n <albedo>\r\n 0.11\r\n </albedo>\r\n </planet>\r\n <planet>\r\n <name>\r\n Venus\r\n </name>\r\n <albedo>\r\n 0.7\r\n </albedo>\r\n </planet>\r\n <planet>\r\n <name>\r\n Terra\r\n </name>\r\n <albedo>\r\n 0.39\r\n </albedo>\r\n </planet>\r\n </sol>\r\n</xml>\r\n</code>\r\n</pre>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
|
|||
|
(3394,'2021-08-05','Be an XML star with xmlstarlet',1591,'Parse XML from the terminal','<p>See the layout of an XML document</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet elements planets.xml\r\nxml\r\nxml/sol\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\n</code>\r\n</pre>\r\n\r\n<p>See content of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet\' planets.xml\r\n\r\n Mercury\r\n 0.11\r\n\r\n Venus\r\n 0.7\r\n\r\n Terra\r\n 0.39\r\n</code></pre>\r\n\r\n<p>Get the third instance of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[3]\' planets.xml\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets with an albedo greater than 0.25</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[albedo > 0.25]\' planets.xml\r\n\r\nVenus\r\n0.7\r\n\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets closer to Sol than the third planet</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[position() < 3]\' planets.xml\r\n\r\nMercury\r\n0.11\r\n\r\nVenus\r\n0.7\r\n</code></pre>\r\n\r\n<p>Learn more XPath functions at <a href=\"https://developer.mozilla.org/en-US/docs/Web/XPath\" target=\"_blank\">Mozilla Developer Network</a>.</p>\r\n\r\n<p>Download xmlstarlet from <a href=\"https://xmlstar.sourceforge.net\"\r\ntarget=\"_blank\">xmlstar.sourceforge.net</a> (<a href=\"https://sourceforge.net/projects/xmlstar/\">https://sourceforge.net/projects/xmlstar/</a>).\r\n</p>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
|
|||
|
(3441,'2021-10-11','Murphy Work Bench',842,'Operator talks about hitting his head on his work bench','<ul>\r\n<li>PROS:\r\n<ul>\r\n<li>easy clean up just fold and vacuum</li>\r\n<li>height is great for tall people so I\'m not hunched over the table</li>\r\n<li>saves space</li>\r\n</ul></li>\r\n<li>CONS:\r\n<ul>\r\n<li>I ran into it 2 times so I rounded the edges</li>\r\n<li>I just now hit my head on it ... folded and crashed everything on the table to the ground and pic I custom made fell of the wall and into my AC water bucket</li>\r\n<li>loud when using and setting up everything echoes though the walls at night etc</li>\r\n</ul></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B08F4VNT9P\" class=\"uri\">https://smile.amazon.com/gp/product/B08F4VNT9P</a> $60</li>\r\n<li>MDF cut at Lowes $50</li>\r\n</ul>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3441/WorkBench.gif\" alt=\"https://hackerpublicradio.org/eps/hpr3441/WorkBench.gif\" /></p>\r\n',36,0,1,'CC-BY-SA','DIY,wood working,hacking',0,0,1),
|
|||
|
(3396,'2021-08-09','Card roles in Magic the Gathering',2367,'There are over 25,000 cards in MTG. You only need 60 to play.','<p>Cutting to the chase:</p>\r\n<p>When getting into Magic the Gathering, it's easy to get overwhelmed and confused by choice. Instead of thinking about cards, I've learnt to think about the game mechanic roles that a deck needs to have satisfied, and then I look for cards that fill those roles.\r\n</p>\r\n\r\n<p>My list is by no means definitive, but I think these are the basic universal roles you need, regardless of how you play:</p>\r\n\r\n<ul>\r\n<li>Mana base: Land cards. These provide you with mana so you can play cards. For a 60 card deck, anticipate requiring about 24. In a later episode, I'll talk about additional ways to manage mana.</li>\r\n<li>General purpose: Creatures, enchantments, instants, artifacts, and so on. These are cards, costing a full spectrum of mana amounts (some you can play for 1 or 2 mana, others require 4 and 5 and more), that you need to populate your deck. These don't need to be anything special, unless you want to spend money for really fancy cards, but I assume you're not listening to me if you're a pro player.<//i>\r\n<li>Card draw: You're going to deplete your hand unless you have cards that give you permission to draw more cards than just your allotted one-per-turn.</li>\r\n<li>Recursion: When you're forced to discard a card you really really wanted to play, you'll be glad to have some cards that grant you permission to bring that card back from your graveyard. This is called "recursion" by Magic players.</li>\r\n</ul>\r\n\r\n<p>There are other card types that can be useful, but they may be best for specific strategies. The ones I list here are, I believe, pretty universal.\r\n</p>\r\n\r\n<p>You can find lists of cards that fill specific roles with a simple Internet search. For instance, if you realize you have no cards that let you replenish your hand, you might search for "best cards to draw cards MTG" and get directed to a site like <a href=\"https://tappedout.net/mtg-decks/list-of-edh-draw-cards/\" target=\"_blank\">TappedOut.net</a> or <a href=\"https://magic.wizards.com/en/articles/archive/feature/top-50-card-drawing-cards-2003-03-21-0\" target=\"_blank\">magic.wizards.com</a>.</p>\r\n\r\n<p>Go to your local game store or an online vendor to buy just the cards you need. Because there are so many to choose from in any given category, you get to control the price. I have a rule for myself that do not spend over $2 on any single card.\r\n</p>\r\n\r\n<p>When trying to fill roles, I generally aim to get 4 cards that do the thing I need. Sometimes I get exactly the same card 4 times, other times I get a variety of cards to fill the role. Either way, 4 usually feels like a good draw frequency for each role.</p>\r\n\r\n',78,0,0,'CC-BY-SA','magic, mtg, card, tcg',0,0,1),
|
|||
|
(3401,'2021-08-16','Mana hacks',1924,'Klaatu muses about mana ramping in Magic the Gathering','<p>The categories of mana ramps I have defined for myself are:</p>\r\n<ul>\r\n<li>Mana acquired outside of the land drop action</li>\r\n<li>Getting more mana for less</li>\r\n<li>Mana saved up over time</li>\r\n</ul>\r\n',78,95,0,'CC-BY-SA','magic, mtg, card, tcg, mana',0,0,1),
|
|||
|
(3397,'2021-08-10','What is a PineTime',595,'In this podcast I talk a little bit about the pinetime.','<p>\r\nThis is the first impression of a PineTime watch that I bought about a week ago and have already done some changes to the underlying code. I think this is an interesting project and open source so you can contribute.\r\n</p>\r\n<p>\r\nGithub repository:\r\n<a href=\"https://github.com/JF002/InfiniTime\">https://github.com/JF002/InfiniTime</a>\r\n</p>\r\n<p>\r\nSales page:\r\n<a href=\"https://www.pine64.org/pinetime/\">https://www.pine64.org/pinetime/</a>\r\n</p>',382,0,0,'CC-BY-SA','open source, watch, coding',0,0,1),
|
|||
|
(3406,'2021-08-23','A study of cards in games',1633,'Currency, deterrent, coersion, clutter, rules','<p>What function cards have in games.</p>',78,95,0,'CC-BY-SA','card, game',0,0,1),
|
|||
|
(3402,'2021-08-17','Reading a manifesto: Declaration of Digital Autonomy',877,'Reading and brief commentary and background on Molly DeBlanc\'s and Karen Sandler\'s techautonomy.org','<p><em>This episode, as its source material, is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.</em></p>\r\n<h2 id=\"previously\">Previously</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3317\">hpr3317</a> :: Reading a manifesto: Towards A Cooperative Technology Movement</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3326\">hpr3326</a> :: HPR Community News for April 2021</li>\r\n</ul>\r\n<h2 id=\"free-software-timeline\">Free Software Timeline</h2>\r\n<ul>\r\n<li>1983-09: <a href=\"https://www.gnu.org/gnu/initial-announcement.html\">The GNU Project announced</a></li>\r\n<li>1985-03: The GNU Manifesto <a href=\"https://www.gnu.org/gnu/manifesto.en.html\">[1987, GNU]</a> <a href=\"https://archive.org/details/dr_dobbs_journal_vol_10/page/n197/mode/2up\">[Dr. Dobb\'s 1985, Internet Archive]</a></li>\r\n<li>1986-02: The <a href=\"https://www.gnu.org/philosophy/free-sw.en.html\">Free Software Definition</a> <a href=\"https://www.gnu.org/bulletins/bull1.txt\">[original bulletin]</a></li>\r\n<li>1997-05: <a href=\"https://www.catb.org/~esr/writings/cathedral-bazaar/\">The Cathedral and the Bazaar</a></li>\r\n<li>1997-07: The <a href=\"https://www.debian.org/social_contract#guidelines\">Debian Free Software Guidelines</a> <a href=\"https://lists.debian.org/debian-announce/1997/msg00017.html\">[original mail]</a></li>\r\n<li>1998-01: The Mozilla Project</li>\r\n<li>1998-02: The Open Source Initiative</li>\r\n<li>1998-02: The <a href=\"https://opensource.org/osd\">Open Source Definition</a></li>\r\n<li>2011-02: Simon Phipps\'s <a href=\"https://webmink.com/essays/open-by-rule/\">Open-By-Rule Benchmark</a></li>\r\n<li>2015-02: <a href=\"https://opensourcedesign.net/2015/02/01/opensourcedesign-fosdem\">FOSDEM 2015 Open Source Design track</a></li>\r\n<li>2017-07: <a href=\"https://ekprayogblog.wordpress.com/2017/07/13/open-design-manifesto/\">Open Design Manifesto (ekprayog)</a></li>\r\n<li>2018-08: DebConf 18: <em>That\'s a free software Issue!</em> by Sandler and de Blanc <a href=\"https://debconf18.debconf.org/talks/38-thats-a-free-software-issue/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/1461a829-a7fe-421a-9f0e-ef9b5db96ea9\">[peertube]</a></li>\r\n<li>2019-09: <a href=\"https://stallman.org/archives/2019-jul-oct.html#16_September_2019_%28Resignation%29\">rms resigns from the FSF</a></li>\r\n<li>2020-04: <a href=\"https://github.com/opensourcedesign/opensourcedesign.github.io/blob/e5e2ece7f08d16bc634f5e065cd27251862f616d/manifesto.md\">Open Source Design Manifesto (opensourcedesign.net)</a></li>\r\n<li>2020-07: GUADEC 2020: Principles of Digital Autonomy <a href=\"https://invidious.namazso.eu/watch?v=60cwBKZFIf4\">[invidious]</a> <a href=\"https://www.youtube.com/watch?v=60cwBKZFIf4\">[youtube]</a></li>\r\n<li>2020-08: DebConf 2020: Principles of Digital Autonomy <a href=\"https://debconf20.debconf.org/talks/97-introducing-the-principles-of-digital-autonomy/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/0ccc2893-06dd-4c36-81d1-838441666bec\">[peertube]</a></li>\r\n<li>2021-03: Simon Phipps\'s <a href=\"https://meshedinsights.com/2021/03/18/rights-ratchet-score-card/\">A Rights Ratchet Score Card</a></li>\r\n<li>2021-03: <a href=\"https://media.libreplanet.org/u/libreplanet/m/unjust-computing-clamps-down/\">LibrePlanet 2021: rms returns to FSF board</a></li>\r\n<li>2021-04: Cooperative Technology manifesto <a href=\"https://hackerpublicradio.org/eps.php?id=3317\">[hpr3317]</a> <a href=\"https://cooperativetechnology.codeberg.page/\">[official]</a></li>\r\n</ul>\r\n<p>Further sources for timeline:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_netscape\">https://en.wikipedia.org/wiki/History_of_netscape</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_free_and_open-source_software\
|
|||
|
(3398,'2021-08-11','Anacron',949,'Put down that crontab and get started with anacron','<h2>Setup</h2>\r\n\r\n<pre><code>\r\n$ mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron\r\n</code></pre>\r\n\r\n\r\n<p>Create a file called <code>anacrontab</code>:</p>\r\n\r\n<pre><code>\r\n$ touch /.local/etc/anacrontab\r\n</code></pre>\r\n\r\n<p>Set it up to trigger scripts in your <code>cron.daily</code> folder:\r\n</p>\r\n\r\n<pre><code>\r\nSHELL=/bin/sh\r\nPATH=/sbin:/bin:/usr/sbin:/usr/bin\r\n1 0 cron.daily run-parts $HOME/.local/etc/cron.daily/\r\n</code></pre>\r\n\r\n<p>\r\nValidate your anacrontab:\r\n</p>\r\n\r\n<pre><code>\r\n$ anacron -T -t ~/.local/etc/anacrontab -S ~/.var/spool/anacron\r\n</code></pre>\r\n\r\n<p>Start anacron in a file that gets triggered at login, such as <code>~/.profile</code>:\r\n</p>\r\n\r\n<pre><code>\r\nanacron -t $HOME/.local/etc/anacrontab -S $HOME/.var/spool/anacron\r\n</code></pre>\r\n\r\n<h2>Using</h2>\r\n\r\n<p>Now that everything is set up, just put scripts you want to run regularly in <code>cron.daily</code>, and make them executable.\r\n</p>\r\n\r\n<p>You can set up a weekly directory, too. Just set the time interval in your anacrontab to:\r\n</p>\r\n\r\n<pre><code>\r\nSHELL=/bin/sh\r\nPATH=/sbin:/bin:/usr/sbin:/usr/bin\r\n7 0 cron.weekly run-parts $HOME/.local/etc/cron.weekly/\r\n</code></pre>',78,0,0,'CC-BY-SA','cron, linux, service, automation',0,0,1),
|
|||
|
(3411,'2021-08-30','Dominion card game',1673,'Klaatu talks about the Dominion card game','<p>Dominion is a card game. Lots of fun. You should try it.</p>\r\n\r\n<p>You can even play online for free at <a href=\"https://dominion.games/\">dominion.games</a>\r\n</p>',78,95,0,'CC-BY-SA','card, game',0,0,1),
|
|||
|
(3409,'2021-08-26','Linux Inlaws S01E37: All about Hacker Public Radio',5738,'An interview with Ken Fallon, Janitor at Hacker Public Radio','<p>\r\n In this episode of our beloved open source podcast rapidly approaching its\r\n zenith of popularity (with hopefully not an equally rapid decline afterwards)\r\n our two elderly heroes pay tribute to Hacker Public Radio in general and\r\n Ken Fallon in particular. Plus: a never-heard-of-before peek into Martin\'s\r\n very own private life (we lift the veil and reveal it all - don\'t miss this!)\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Hacker Public Radio (HPR): <a href=\"https://hackerpublicradio.org\" target=_blank>https://hackerpublicradio.org</a></li>\r\n<li>HPR mailing list: <a href=\"https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org\" target=_blank>https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org</a></li>\r\n<li>Creative Commons Licenses: <a href=\"https://creativecommons.org\" target=_blank>https://creativecommons.org</a></li>\r\n<li>Static site generators: <a href=\"https://dev.to/oyetoket/which-is-the-best-static-site-generator-and-why-42e2\" target=_blank>https://dev.to/oyetoket/which-is-the-best-static-site-generator-and-why-42e2</a></li>\r\n<li>Richard Stallman issue: <a href=\"https://arstechnica.com/tech-policy/2019/09/richard-stallman-leaves-mit-after-controversial-remarks-on-rape\" target=_blank>https://arstechnica.com/tech-policy/2019/09/richard-stallman-leaves-mit-after-controversial-remarks-on-rape</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','HPR, cleaning, janitoring, having a good time, Richard M. Stallman, stats',0,0,1),
|
|||
|
(3417,'2021-09-07','Ceph cluster hardware',729,'Looking into the hardware behind my ceph cluster ','<p>In this video I talk about 4 different computers that could be used in a ceph cluster and what I use and what could be good solutions. If you want to have a visual aid I\'ve created a youtube video talking about the same thing.</p>\r\n<ul>\r\n<li><a href=\"https://youtu.be/B6XXOVcLhzA\" class=\"uri\">https://youtu.be/B6XXOVcLhzA</a></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','ceph, cluster, hardware',0,0,1),
|
|||
|
(3437,'2021-10-05','The HTML document format',402,'Talking about my favorite document format.','<p>Klaatu asked us what document format we like and why, so this is a response to his podcast. In this podcast I talk about HTML and the importance of good document structure.</p>',382,0,0,'CC-BY-SA','html, document, css, javascript',0,0,1),
|
|||
|
(3408,'2021-08-25','Composting',336,'Inspired by episode 3157, Rho`n describes his experience of learning to compost','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Welcome to another episode of Hacker Public Radio. This episode is inspired by HPR episode 3157 entitled Compost by Klaatu. During the early 2000\'s, I lived in a single family home which had a number of oak trees around it. Between the trees, other foliage, and grass, there was a large amount of yard waste. While my city (Baltimore, MD in the US) will pick up your yard waste if you put it in bags by the curb [1], I would use the oak leaves as mulch, and did have a mulch pile of leaves and other yard waste. At that time, I thought about composting food waste, but there is a big issue with rats in Baltimore, and I didn\'t look into ways to compost. I just knew I couldn\'t randomly mix it into my mulch pile.</p>\r\n<p>I am currently living in a different house, without any oak trees, and not as much yard waste (particularly since we hire someone to mow the grass every couple weeks). After listening to the Compost episode, I was inspired to look into the best way to do it given my current living situation. The first thing I did was to look and see if there are any laws against composting in Baltimore City. The rat problem is big enough that the City purchased and distributed a large green plastic trash bin to every physical mailing address in the city. This is the bin you are required to use when putting out your trash. Given the situation, I wasn\'t sure it would be legal to do composting in your back yard. Much to my surprise, it is not only legal, but the city website has a web page on how to compost [2] and just recently started a pilot program for food scrap drop off with seven locations around the city [3].</p>\r\n<h2 id=\"kitchen-compost-bin\">Kitchen Compost Bin</h2>\r\n<p>After determining I wasn\'t going to be a scofflaw, I went to the Internet to see what kind of bins are available for purchase. While Klaatu gives great suggestions for low cost composting bins, I wanted something that would look nice sitting out on a shelf for the small inside bin. I found the Utopia Kitchen Compost Bin [4]. The bin is made of stainless steel and has a volume of 1.3 gallons (4.9 liters). The lid is rounded and has a series of holes around the top. The inside of the lid holds a circular shaped charcoal filter. The combination of holes and charcoal filter capture any odors generated by the food scraps. It works amazingly well and even with onion scraps you need to stick your nose to the holes and inhale deep to smell anything when the lid is closed. It holds three to seven days worth of food scraps, most of which end up being coffee grinds. We have had this bin for 10 months, and the charcoal filter is still effective. There are replacement filters available for this bin, but you could also cut other charcoal filters to fit inside the lid.</p>\r\n<h2 id=\"outside-compost-bin\">Outside Compost Bin</h2>\r\n<p>Given the potential rat and other small critter issues, I wanted the main, outside composter to be fully enclosed, and preferably not sitting directly on the ground. A quick search brings up a number of options, both composters that sit on the ground and ones that are tumbler style, which hang on a frame. I went with a tumbler style compost bin. This provided the desired feature of not being on the ground, and has the added advantage of making it easy to turn the compost every second or third day by just rotating the bin slowly for three or four full turns. I purchased the FCMP Outdoor IM4000 Tumbling Composter [5]. The composter is octagonal shaped column with two chambers inside it. This allows you to fill one chamber while the other side is finishing the composting process. There are also aeration holes for each chamber which can be open to different levels to moderate the amount of moisture. The combined volume of the two chambers is approximately 37 gallons (140 liters).</p>\r\n<h2 id=\"my-composting-experience\">My Composting Experience</h2>\r\n<p>So far I h
|
|||
|
(3414,'2021-09-02','Critical Thinking may make You Critical of the Covid Crisis',645,'Some Science YOU can observe about covid fallacies, and some preventative medicine.','<hr />\r\n<h3>Counter Point</h3>\r\n<p>Counter points to this show are available:<br />\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3442\">hpr3442 :: What is this thing called science</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3445\">hpr3445 :: True critical thinking seems to be the key</a></li>\r\n</ol>\r\n</p>\r\n<hr />\r\n<p>The homeless weren\'t affected as much as other segments of the population. This Radiolab episode suggests that healthy vitamin D3 levels from being out in the sun often may be the reason.</p>\r\n<p><a href=\"https://www.wnycstudios.org/podcasts/radiolab/articles/invisible-allies\" class=\"uri\">https://www.wnycstudios.org/podcasts/radiolab/articles/invisible-allies</a></p>\r\n<p>A hospital in Spain did a double blind study, solid science. In this study, before any vaccines were available for covid, vitamin D3 made the difference between a 7.6% death rate due to covid, and a 0% death rate with vitamin D3. This YouTube video gets very technical, but tells the story.</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=V8Ks9fUh2k8\" class=\"uri\">https://www.youtube.com/watch?v=V8Ks9fUh2k8</a></p>\r\n<p>Back in the 60s, body temperature\'s effect on fighting viruses was known, that knowledge was lost for a time because of scientists who spoke out, not knowing the whole story, but in 2003, in the aftermath of the previous covid outbreak, a doctor from China documented the need for body heat to fight off covid. Even so, medical professionals in New York set up a covid triage in Central Park during a season when the daytime temperature was in the 50s, and night time temperature was much colder. Just having a PhD behind your name doesn\'t make you right.</p>\r\n<p><a href=\"https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature\" class=\"uri\">https://www.bmj.com/rapid-response/2011/10/29/coronavirus-may-be-killed-higher-body-temperature</a></p>\r\n',395,0,1,'CC-BY-SA','covid, vitamin D3, masks, viruses, lawyers',0,0,1),
|
|||
|
(3404,'2021-08-19','Suse 15.3 Leap',652,'A short review of Suse 15.3','<p>Short review of Suse 15.3</p>\r\n',129,0,0,'CC-BY-SA','linux, suse, leap, vnc',0,0,1),
|
|||
|
(3412,'2021-08-31','Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported',2098,'We are using this license but we didn\'t publish it on HPR ... until now!','<p><em>This show and its notes are licensed under the Creative Commons Attribution 3.0 Unported license: <a href=\"https://creativecommons.org/licenses/by/3.0/\">https://creativecommons.org/licenses/by/3.0/</a></em></p>\r\n<p>The original work is by Creative Commons and has been slightly modified during reading. The text\r\nreproductions below have been modified for formatting, but not intentionally for content.\r\nMisspellings are from the original.</p>\r\n<ul>\r\n<li>The show <a href=\"https://hackerpublicradio.org/eps.php?id=3402\">https://hackerpublicradio.org/eps.php?id=3402</a> is licensed under the Creative Commons Attribution ShareAlike 4.0 International license.</li>\r\n<li>CC-by-SA 3.0 and other 3.0 licenses were released on 2007-02-23: <a href=\"https://creativecommons.org/2007/02/23/version-30-launched/\">https://creativecommons.org/2007/02/23/version-30-launched/</a></li>\r\n<li>The licenses were published on a site that was at the time CC-by 3.0: <a href=\"https://web.archive.org/web/20070225072754/https://creativecommons.org/\">https://web.archive.org/web/20070225072754/https://creativecommons.org/</a></li>\r\n</ul>\r\n<hr>\r\n<h1 id=\"creative-commons-license-deed\">Creative Commons License Deed</h1>\r\n<p>Original: <a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">https://creativecommons.org/licenses/by-sa/3.0/</a></p>\r\n<h2 id=\"attribution-sharealike-3-0-unported-cc-by-sa-3-0-\">Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)</h2>\r\n<p>This is a human-readable summary of (and not a substitute for) the <a href=\"#creative-commons-legal-code\">license</a>.</p>\r\n<h3 id=\"disclaimer\">Disclaimer</h3>\r\n<p>This deed highlights only some of the key features and terms of the actual license. It is not a\r\nlicense and has no legal value. You should carefully review all of the terms and conditions of the actual\r\nlicense before using the licensed material.</p>\r\n<p>Creative Commons is not a law firm and does not provide legal services. Distributing, displaying,\r\nor linking to this deed or the license that it summarizes does not create a lawyer-client or any other\r\nrelationship.</p>\r\n<h3 id=\"you-are-free-to-\">You are free to:</h3>\r\n<ul>\r\n<li><strong>Share</strong> - copy and redistribute the material in any medium or format</li>\r\n<li><strong>Adapt</strong> - remix, transform, and build upon the material for any purpose, even commercially.\r\nThe licensor cannot revoke these freedoms as long as you follow the license terms.</li>\r\n</ul>\r\n<h3 id=\"under-the-following-terms-\">Under the following terms:</h3>\r\n<ul>\r\n<li><strong>Attribution</strong> - You must give\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart\">appropriate credit</a>,\r\nprovide a link to the license, and\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such\">indicate if changes were made</a>.\r\nYou may do so in any reasonable manner, but not in any way that suggests the licensor endorses\r\nyou or your use.</li>\r\n<li><strong>ShareAlike</strong> - If you remix, transform, or build upon the material, you must\r\ndistribute your contributions under the\r\n<a href=\"https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F\">same license</a>\r\nas the original.</li>\r\n<li><strong>No additional restrictions</strong> - You may not apply legal terms or\r\n<a href=\"https://wiki.creativecommons.org/License_Versions#Application_of_effective_technological_measures_by_users_of_CC-licensed_works_prohibited\">technological measures</a>\r\nthat legally restrict others from doing anything the license permits.</li>\r\n</ul>\r\n<h3 id=\"notices-\">Notices:</h3>\r\n<p>You do not have to comply with the license for elements of the material in the
|
|||
|
(3407,'2021-08-24','Software Freedom Podcast',3407,'A sample episode of the Free Software Foundation Europe Podcast','<p>\r\nThe <a href=\"https://fsfe.org/news/podcast.en.html\">Free Software Foundation Europe have a podcast</a>, and this is a sample episode.\r\n</p>\r\n<ol>\r\n<li><a href=\"https://fsfe.org/news/podcast.en.html\">Web page: https://fsfe.org/news/podcast.en.html</a></li>\r\n<li><a href=\"https://fsfe.org/news/podcast-opus.en.rss\">Opus Feed: feed://fsfe.org/news/podcast-opus.en.rss</a></li>\r\n<li><a href=\"https://fsfe.org/news/podcast.en.rss\">MP3 Feed: feed://fsfe.org/news/podcast.en.rss</a></li>\r\n<li><a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts: https://freeculturepodcasts.org/</a></li>\r\n</ol>',30,75,0,'CC-BY-SA','FSFE,Podcast,freeculturepodcasts',0,0,1),
|
|||
|
(3419,'2021-09-09','Linux Inlaws S01E38: Tiny kernels',3748,'All you ever wanted to hear and more about micro kernels and other operating system war stories','<p> This episode is dedicated to tiny kernels driving operating systems also\r\n known as micro-kernels. While discussing the last 100 years of operating\r\n system design and implementation, our two aging heroes also shed some\r\n light on operating systems in general and their recent history (like fifty\r\n years). Unless you\'re a true OS nerd, you find the episode mildly\r\n refreshing and educational on the layers of software underneath your\r\n beloved applications controlling the hardware and other shenanigans. If\r\n you\'re an OS nerd, this episode may have the potential of closing your few\r\n remaining knowledge gaps (or something like this). A fun show for\r\n children of all ages and beyond. </p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>IBM VM: <a href=\"https://en.wikipedia.org/wiki/Z/VM\" target=_blank>https://en.wikipedia.org/wiki/Z/VM</a></li>\r\n<li>Modern operating systems by Andy S. Tanenbaum: <a href=\"https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Modern%20Operating%20Systems.pdf\" target=_blank>https://csc-knu.github.io/sys-prog/books/Andrew%20S.%20Tanenbaum%20-%20Modern%20Operating%20Systems.pdf</a></li>\r\n<li>Short write-up on fashion (for the uninitiated): <a href=\"https://en.wikipedia.org/wiki/Fashion\" target=_blank>https://en.wikipedia.org/wiki/Fashion</a></li>\r\n<li>Multics: <a href=\"https://www.multicians.org\" target=_blank>https://www.multicians.org</a></li>\r\n<li>Unix: <a href=\"https://en.wikipedia.org/wiki/History_of_Unix\" target=_blank>https://en.wikipedia.org/wiki/History_of_Unix</a></li>\r\n<li>CCP/M-86: <a href=\"https://en.wikipedia.org/wiki/Multiuser_DOS#Concurrent_CP/M-86\" target=_blank>https://en.wikipedia.org/wiki/Multiuser_DOS#Concurrent_CP/M-86</a></li>\r\n<li>QDOS: <a href=\"https://en.wikipedia.org/wiki/86-DOS\" target=_blank>https://en.wikipedia.org/wiki/86-DOS</a></li>\r\n<li>VMS: <a href=\"https://vmssoftware.com\" target=_blank>https://vmssoftware.com</a></li>\r\n<li>Digital\'s VAX: <a href=\"https://en.wikipedia.org/wiki/VAX\" target=_blank>https://en.wikipedia.org/wiki/VAX</a></li>\r\n<li>Mach kernel: <a href=\"https://en.wikipedia.org/wiki/Mach_(kernel)\" target=_blank>https://en.wikipedia.org/wiki/Mach_(kernel)</a></li>\r\n<li>Android: <a href=\"https://en.wikipedia.org/wiki/Android_(operating_system)\" target=_blank>https://en.wikipedia.org/wiki/Android_(operating_system)</a></li>\r\n<li>Homebrew: <a href=\"https://brew.sh\" target=_blank>https://brew.sh</a></li>\r\n<li>MacPorts: <a href=\"https://www.macports.org\" target=_blank>https://www.macports.org</a></li>\r\n<li>Usenet war: <a href=\"https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate\" target=_blank>https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate</a></li>\r\n<li>Minix and TPM: <a href=\"https://www.zdnet.com/article/minix-intels-hidden-in-chip-operating-system\" target=_blank>https://www.zdnet.com/article/minix-intels-hidden-in-chip-operating-system</a></li>\r\n<li>Trusted Platform Module: <a href=\"https://link.springer.com/content/pdf/10.1007%2F978-1-4302-6584-9.pdf\" target=_blank>https://link.springer.com/content/pdf/10.1007%2F978-1-4302-6584-9.pdf</a></li>\r\n<li>Secure enclaves: <a href=\"https://software.intel.com/content/www/us/en/develop/topics/software-guard-extensions.html\" target=_blank>https://software.intel.com/content/www/us/en/develop/topics/software-guard-extensions.html</a></li>\r\n<li>The Sleepover: <a href=\"https://www.imdb.com/title/tt10888708/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt10888708/?ref_=fn_al_tt_1</a></li>\r\n<li>Python Init Podcast episode: <a href=\"https://www.pythonpodcast.com/tony-liu-python-venture-investing-episode-305\" target=_blank>https://www.pythonpodcast.com/tony-liu-python-venture-investing-episode-305</a></li>\r\n<li>Martin\'s trainspotters\' research paper: <a href=\"https://www.diva-portal.org/sm
|
|||
|
(3421,'2021-09-13','BlacKernel\'s Journey Into Technology: Episode 1',967,'Learning about Assembly and Social Engineering before I could read','<ul>\r\n<li><p>Important Links</p>\r\n<ul>\r\n<li><a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_379.ogg\">GNU World Order Episode 379</a></li>\r\n<li><a href=\"https://eater.net/\">Ben Eater\'s Website</a></li>\r\n</ul></li>\r\n<li><p>Wikipedia Pages</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transistor\">Transistor Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Logic_gate\">Logic Gates Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Assembly_language\">Assembly Language Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/KidDesk\">KidDesk Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/K9_Web_Protection\">K9 Web Protection Wikipedia article</a></li>\r\n</ul></li>\r\n</ul>',396,0,0,'CC-BY-SA','technology, childhood, stories',0,0,1),
|
|||
|
(3413,'2021-09-01','Bash snippet - using coproc with SQLite',2738,'Sending multiple queries to a running instance of sqlite3','<h2 id=\"introduction\">Introduction</h2>\r\n<p>I am in the process of rewriting some scripts I use to manage <a href=\"https://magnatune.com/\" title=\"Magnatune\">Magnatune</a> albums. I’m a lifetime Magnatune member and have access to the whole music collection. I wrote a script for downloading albums and placing them in my <code>~/Music</code> directory which I talked about in 2013 (show <a href=\"https://hackerpublicradio.org/eps.php?id=1204\">1204</a>). The original scripts are still available on <a href=\"https://gitlab.com/davmo/magnatune-downloader\">GitLab</a> and I know of one other person who made use of them!</p>\r\n<p>Since 2013 I have written a few other support scripts, for example one to manage a queue of albums I want to buy and download, and one which summarises the state of this queue.</p>\r\n<p>It’s this <code>\'show_queue\'</code> script I am currently updating (called <a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_orig\"><code>show_queue_orig</code></a>, and available in the resources to this show). The original version of this script took Magnatune album URLs from a file (acting as a queue of stuff I wanted to buy), parsed out a piece of the URL and used it to <code>grep</code> a pre-prepared summary in another file. This file of summaries had been made from a master XML file provided by Magnatune (see <code>update_albums</code> on GitLab).</p>\r\n<p>Magnatune has moved away from this master XML file to a SQLite database in recent years, so I want to perform a database lookup for each URL to list its details.</p>\r\n<p>The first version of the new script wasn’t difficult to write: just extract the search data as before and run a query on the database using this data. I have included this script which I call <a href=\"https://hackerpublicradio.org/eps/hpr3413/show_queue_db_1\"><code>show_queue_db_1</code></a> amongst the resources for this episode, so you can see what I’m talking about – and what I want to improve on. It felt bad to be performing multiple calls on the <code>sqlite3</code> command in a loop, so I looked around for an alternative way.</p>\r\n<p>In April 2019 <a href=\"https://hackerpublicradio.org/correspondents/0311.html\">clacke</a> did a show (number <a href=\"https://hackerpublicradio.org/eps.php?id=2793\">2793</a>) about the Bash <code>coproc</code> command.</p>\r\n<p>This command creates a <em>subshell</em> running a command or group of commands which is connected to the calling (<em>parent</em>) process through two file descriptors (<em>FD</em>s). It’s possible for the calling shell to write to the input descriptor and read from the output one and thereby communicate with whatever is running in the subshell.</p>\r\n<p>I was vaguely aware of <code>coproc</code> at the time of clacke’s show but hadn’t looked into it. I found the show fascinating but didn’t have a use for the feature at the time.</p>\r\n<p>To solve my need to show my Magnatune queue of future purchases, it looked as if a <code>sqlite3</code> instance running in a subshell could be given queries one after the other and return the answers I needed. My journey to a Bash script using <code>coproc</code> then followed.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3413/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Bash Reference Manual:\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Coprocesses\">3.2.6 Coprocesses</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Duplicating-File-Descriptors\">3.6.8 Duplicating File Descriptors</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Stack Exchange:\r\n<ul>\r\n<li><a href=\"https://unix.stackexchange.com/questions/86270/how-do-you-use-the-command-coproc-in-various-shells\">How do you use the command coproc in v
|
|||
|
(3431,'2021-09-27','Living in the Terminal',2763,'BlacKernel shows you some programs you\'ll need for living life without X org','<h1 id=\"talking-points\">Talking Points</h1>\r\n<h2 id=\"rational\">Rational</h2>\r\n<ul>\r\n<li>Sometimes, X.org just doesn\'t want to work</li>\r\n<li>Esspecially if you are a dumb n00b running Arch</li>\r\n<li>The terminal will always be there for you.</li>\r\n</ul>\r\n<h2 id=\"applications\">Applications:</h2>\r\n<h3 id=\"my-bashrc\">My .bashrc:</h3>\r\n<ul>\r\n<li>Environment Variables:</li>\r\n</ul>\r\n<pre class=\"bash\"><code>export EDITOR=nvim\r\nexport PAGER=most\r\nexport BROWSER=lynx\r\n\r\nexport XDG_DATA_HOME="$HOME/.local/share"\r\nexport XDG_CONFIG_HOME="$HOME/.config"\r\n</code></pre>\r\n<p>PS1: <font color=blue>user</font>@<font color=green>hostname</font>:~ (git_branch) $</p>\r\n<pre class=\"bash\"><code>if [[ $EUID == 0 ]]; then\r\n export PS1="\\[e[1;31m\\]\\u\\[\\e[m\\]@\\[\\e[0;32m\\]\\h\\[\\e[m\\]:\\w\\$(__git_ps1) # "\r\nelse\r\n export PS1="\\[e[1;34m\\]\\u\\[\\e[m\\]@\\[\\e[0;32m\\]\\h\\[\\e[m\\]:\\w\\$(__git_ps1) $ "\r\nfi\r\n</code></pre>\r\n<ul>\r\n<li>Aliases:\r\n<ul>\r\n<li><code>alias vim=nvim</code></li>\r\n<li><code>alias play=mpv</code></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"productivity-window-manager-tmux\">Productivity (\"Window Manager\"): <a href=\"#show-notes\">tmux</a></h2>\r\n<ul>\r\n<li>Provides an easy way of splitting a tty into various panes</li>\r\n<li>Get multiple workspaces for free with CTL+ALT+F{1,2,3,4,5,6,7}</li>\r\n<li>All of the tiling window manager, none of the X-it</li>\r\n<li>Can set up <code>if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi</code> in .bashrc in order to have tmux start/stop with your terminal sessiion.</li>\r\n</ul>\r\n<h2 id=\"music-cmus\">Music: <a href=\"#show-notes\">cmus</a></h2>\r\n<ul>\r\n<li>Easy library and playlist management</li>\r\n<li>Dead simple to use (with cmus-tutorial)\r\n<ul>\r\n<li><code>y</code> to yank songs onto a playlist</li>\r\n<li><code>SPA</code> to select a playlist</li>\r\n<li><code>RET</code> to play a song/playlist</li>\r\n<li><code>TAB</code> to switch between panes</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"pictures-fim\">Pictures: <a href=\"#show-notes\">fim</a></h2>\r\n<ul>\r\n<li>Requires user be in the <code>video</code> group for permission to use the Linux framebuffer</li>\r\n</ul>\r\n<h2 id=\"radiovideosingle-audio-files-mpv\">Radio/Video/single audio files: <a href=\"#show-notes\">mpv</a></h2>\r\n<ul>\r\n<li>Can display video in terminal (badly with libcaca)</li>\r\n<li>Can <em>actually</em> display video in linux framebuffer (with drm)</li>\r\n<li>Can handle all of your somafm files/web-video links</li>\r\n<li>Requires <a href=\"#show-notes\">youtube-dl</a> for video</li>\r\n</ul>\r\n<h2 id=\"podcastsrss-newsboatpodboat\">Podcasts/RSS: <a href=\"#show-notes\">newsboat/podboat</a></h2>\r\n<ul>\r\n<li>Orginizes all of your podcasts and RSS feeds into an easy-to-use ncurses interface</li>\r\n<li>Can be set up with <code>player \"mpv --save-position-on-quit\"</code> to save positions on podcasts</li>\r\n<li><em>Very</em> convinent for articles, less so for podcasts</li>\r\n<li>Really needs better integration with something like cmus</li>\r\n</ul>\r\n<h4 id=\"runner-up-podfox\">Runner Up: <a href=\"#show-notes\">podfox</a></h4>\r\n<ul>\r\n<li>Can be configured with JSON</li>\r\n<li>Has better directory structure than podboat, imo</li>\r\n<li>Tree based structure vs shove everything in ~ by default</li>\r\n</ul>\r\n<h2 id=\"text-editingword-processing-neovimgitx-flavored-markdownpandoc\">Text Editing/Word Processing: <a href=\"#show-notes\">neovim/GitX Flavored Markdown/pandoc</a></h2>\r\n<ul>\r\n<li>Clean modal editing</li>\r\n<li>Can export to whatever with pandoc</li>\r\n<li>Probably not as good as OrgMode if emacs wasn\'t the HFS+ of text editors</li>\r\n</ul>\r\n<h2 id=\"audio-recordingpost-processing-ffmpeg\">Audio Recording/Post-Processing: <a href=\"#show-notes\">ffmpeg</a></h2>\r\n<ul>\r\n<li
|
|||
|
(3426,'2021-09-20','Rust 101: Episode 0 - What in Tarnishing?',1348,'BlacKernel teaches you what rust is and how it is different from Python or C.','<h1 id=\"Talking-Points\">Talking Points</h1>\r\n<ul>\r\n<li>What is Rust?\r\n<ul>\r\n<li>\" Garbage Collection \" - Resource Acquisition Is Initialization (RAII)</li>\r\n<li>Strict Typing with Type Inference</li>\r\n<li>Reference pointers</li>\r\n<li>Immutable by default</li>\r\n<li>Unsafe Mode</li>\r\n</ul></li>\r\n<li>Why use Rust over Python?\r\n<ul>\r\n<li>Speed</li>\r\n<li>Compiled\r\n<ol>\r\n<li>Help from compiler</li>\r\n<li>Smaller binary size</li>\r\n<li>Useful in high throughput/embedded applications</li>\r\n</ol></li>\r\n<li>Logically consistent</li>\r\n</ul></li>\r\n<li>Why use Rust over C?\r\n<ul>\r\n<li>Safe by default</li>\r\n<li>Easier to read</li>\r\n<li>Forces you to write good code</li>\r\n<li>Arrays without stupidity++ and built in vectors</li>\r\n<li>Option<T> and Result<T> or a match {} made in heaven</li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<h1 id=\"Show-Notes\">Show Notes</h1>\r\n<h2 id=\"Strict-Typing\">Strict Typing</h2>\r\n<pre><code>fn main() {\r\n\r\n // Type declared with var: <T> syntax\r\n let penguin_one: &str = "gentoo";\r\n \r\n // Type &str is inherited from "gentoo"\r\n let penguin_two = "gentoo";\r\n \r\n // Will not panic if they are the same\r\n assert_eq!(penguin_one, penguin_two);\r\n}</code></pre>\r\n<h2 id=\"Reference-Pointers\">Reference Pointers</h2>\r\n<p><span id=\"Wrong-Way:\"></span><strong>Wrong Way:</strong></p>\r\n<pre><code>fn print_u8_vector(vec: Vec<u8>) {\r\n println!("{:?}", vec);\r\n}\r\n\r\nfn main() {\r\n let penguin_ages: Vec<u8> = vec!(2, 4, 6);\r\n print_u8_vector(penguin_ages);\r\n \r\n // This line will throw an error\r\n println!("{}", penguin_ages[0]);\r\n}</code></pre>\r\n<p><span id=\"Correct-Way:\"></span><strong>Correct Way:</strong></p>\r\n<pre><code>fn print_u8_vector(vec: &Vec<u8>) {\r\n println!("{:?}", vec);\r\n}\r\n\r\nfn main() {\r\n let penguin_ages: Vec<u8> = vec!(2, 4, 6);\r\n print_u8_vector(&penguin_ages);\r\n \r\n // This line will print '2'\r\n println!("{}", penguin_ages[0]);\r\n}</code></pre>\r\n<h2 id=\"Immutable-By-Default\">Immutable By Default</h2>\r\n<p><span id=\"Wrong-Way:\"></span><strong>Wrong Way:</strong></p>\r\n<pre><code>fn main() {\r\n let my_num = 2;\r\n \r\n // This line will throw an error\r\n my_num = my_num + 1;\r\n println!("{}", my_num);\r\n}</code></pre>\r\n<p><span id=\"Correct-Way:\"></span><strong>Correct Way:</strong></p>\r\n<pre><code>fn main() {\r\n let mut my_num = 2;\r\n my_num = my_num + 1;\r\n \r\n // This line will print '3'\r\n println!("{}", my_num);\r\n}</code></pre>\r\n<h2 id=\"Unsafe-Code\">Unsafe Code</h2>\r\n<p><span id=\"Hello-World-Program-in-C-in-Rust:\"></span><strong>Hello World Program in C in Rust:</strong></p>\r\n<pre><code>extern "C" {\r\n fn printf(input: &str);\r\n}\r\n\r\nfn main() {\r\n unsafe {\r\n printf("Hello, World!");\r\n }\r\n}</code></pre>\r\n<ul>\r\n<li><span id=\"Important-Links\"></span><strong>Important Links</strong>:\r\n<ul>\r\n<li><a href=\"https://www.rust-lang.org\">Rust Programming Language Homepage</a></li>\r\n<li><a href=\"https://play.rust-lang.org/\">Rust Playground</a></li>\r\n<li><a href=\"https://invidious.snopyta.org/watch?v=yOyaJXpAYZQ\">Ben Eater: Comparing C to machine language</a> <WARNING: YouTube Hosted></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><span id=\"Wikipedia-Pages\"></span><strong>Wikipedia Pages</strong>:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Rust_(programming_language)\">Rust Programming Language Wikipedia article</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization\">Resource Acquisition Is Initialization (RAII)</a></li>\r\n</ul></li>\r\n<
|
|||
|
(3418,'2021-09-08','My gEeeky Experiment - Part 2',648,'Claudio talks about how he installed Haiku on an Asus Eee PC 900a received from a friend.','<ul>\r\n<li>Eee PC 900a: <a href=\"https://www.notebookcheck.net/Asus-Eee-PC-900A.11751.0.html\" class=\"uri\">https://www.notebookcheck.net/Asus-Eee-PC-900A.11751.0.html</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Haiku (Wikipedia): <a href=\"https://en.wikipedia.org/wiki/Haiku_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Haiku_(operating_system)</a></li>\r\n<li>Haiku website: <a href=\"https://www.haiku-os.org\" class=\"uri\">https://www.haiku-os.org</a></li>\r\n<li>Media Release - Haiku R1 Beta 3: <a href=\"https://www.haiku-os.org/news/2021-07-26_media_release_the_haiku_project_celebrates_the_release_of_beta_3\" class=\"uri\">https://www.haiku-os.org/news/2021-07-26_media_release_the_haiku_project_celebrates_the_release_of_beta_3</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Be Operating System (BeOS): <a href=\"https://en.wikipedia.org/wiki/BeOS\" class=\"uri\">https://en.wikipedia.org/wiki/BeOS</a></li>\r\n<li>Be, Inc.: <a href=\"https://en.wikipedia.org/wiki/Be_Inc\" class=\"uri\">https://en.wikipedia.org/wiki/Be_Inc</a>.</li>\r\n<li>BeBox: <a href=\"https://en.wikipedia.org/wiki/BeBox\" class=\"uri\">https://en.wikipedia.org/wiki/BeBox</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li>Motorola StarMax series of Power Macintosh clones: <a href=\"https://en.wikipedia.org/wiki/Motorola_StarMax\" class=\"uri\">https://en.wikipedia.org/wiki/Motorola_StarMax</a></li>\r\n<li>Video of my StarMax 4000/160: <a href=\"https://www.youtube.com/watch?v=zi5DwqqZfUQ\" class=\"uri\">https://www.youtube.com/watch?v=zi5DwqqZfUQ</a></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><p>Blog post: <a href=\"https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2</a></p></li>\r\n<li><p>HP EliteBook 2170p: <a href=\"https://support.hp.com/ro-en/document/c03406489\" class=\"uri\">https://support.hp.com/ro-en/document/c03406489</a></p></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','asus,eeepc,haiku,beos,starmax,bebox,motorola,be',0,0,1),
|
|||
|
(3423,'2021-09-15','\"upg.sh\" my \"dump.txt\" to \"note.md\"',2278,'I upgraded my scripts.','<h1 id=\"upgsh-my-dumptxt-to-notemd\">upg.sh my dump.txt to note.md</h1>\r\n<p><strong>SYNOPSIS:</strong> <em>upg.sh</em></p>\r\n<ul>\r\n<li>Upgrade your system and store stdout into a markdown file.</li>\r\n</ul>\r\n<pre><code>#!/bin/bash\r\n# upg.sh\r\n\r\nFILENAME=sys-upgrade$(date +%m-%d-%Y).md\r\nDIRECTORY="${HOME}/Documents/"\r\n\r\n# step 1: formatting.\r\necho -e "# **System Upgrade:** $(date)\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command:** \\`sudo apt-get update; sudo apt-get upgrade --yes\\`\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "**Command Breakdown:**" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`sudo\\`, Admin Privilages." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`apt-get\\`, Package Manager." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`update;\\`, Package Manager's task; update the system software repositories." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`sudo apt-get upgrade\\`, Perform system upgrade with updated repositories." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "- \\`--yes\\`, Answers yes to the prompt." \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 2: run commands with formatting.\r\necho -e "\\n**Command std-output:**\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n echo $(date) \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get update \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System update completed.\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nsudo apt-get upgrade --yes \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\n# System upgrade completed.\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\n# step 3: additional details with more formatting.\r\necho -e "**Upgraded Package Details:**\\n" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nPKGLIST=$(sed -n "/The following packages will be upgraded:/,/^.. upgraded/p" ${FILENAME} \\\r\n | sed '1d;$d' | xargs -n 1 | sed '/:i386$/d') \\\r\n\r\nPKGCACHE=$(echo -e "${PKGLIST}\\n" \\\r\n | xargs -n1 -I _ apt-cache search _)\r\necho "${PKGCACHE}" > ${DIRECTORY}delete.txt\r\n\r\necho "${PKGLIST}" \\\r\n | xargs -n 1 -I _ echo "sed -n '/^_ /p'" "${DIRECTORY}delete.txt" \\\r\n | bash | tee -a ${DIRECTORY}${FILENAME};\r\n\r\necho -e "\\`\\`\\`" \\\r\n | tee -a ${DIRECTORY}${FILENAME}\r\n\r\nrm -v ${DIRECTORY}delete.txt;\r\nPKGLIST=\r\nPKGCACHE=\r\n\r\n# step 4: place EOF (end of file).\r\n sed -i '/EOF/d' ${DIRECTORY}${FILENAME}\r\necho "EOF" >> ${DIRECTORY}${FILENAME}\r\n#EOF\r\n</code></pre>\r\n<p><strong>Script breakdown:</strong> <em>upg.sh</em></p>\r\n<ul>\r\n<li><p>First, we declare bash as our shell with <code>#!/bin/bash</code>. We could also use <code>#!/bin/sh</code> for a more portable script.</p></li>\r\n<li><p>I like to paste the name of the script we\'re working on into the script itself <code># upg.sh</code>.</p></li>\r\n<li><p>Setup a couple of variables to shorten the syntax.</p></li>\r\n</ul>\r\n<pre><code>FILENAME=sys-upgrade$(date +%m-%d-%Y).md\r\nDIRECTORY="${HOME}/Documents/"\r\n</code></pre>\r\n<ul>\r\n<li><code># step 1: formatting.</code>\r\n<ul>\r\n<li>Build labels and a short breakdown of the update/upgrade commands used.</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>echo -e "# **System Upgrade:** $(date)\\n" \\ <-- formatting: label with date.\r\n | tee -a ${DIRECTORY}${FILENAME}
|
|||
|
(3427,'2021-09-21','Ranger for the Win!',1096,'In this episode, I go over some typical use cases for the Ranger file manager','<h2 id=\"programs-referenced-in-this-episode\">Programs referenced in this episode</h2>\r\n<ul>\r\n<li>ranger</li>\r\n<li>caca-utils</li>\r\n<li>poppler-utils</li>\r\n<li>atool</li>\r\n<li>highlight</li>\r\n<li>trash-cli</li>\r\n<li>xlsx2csv</li>\r\n<li>docs2txt</li>\r\n<li>catdoc (for doc2txt and xls2csv)</li>\r\n<li>ods2tsv</li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','ranger,file manager,linux',0,0,1),
|
|||
|
(3428,'2021-09-22','Bad disk rescue',1794,'Bad disk rescue - tragedy or happy ending?','<p>Here I tell the tale of a bad disk rescue. Is the rescue bad or just the disk? Well the disk is most certainly bad but please listen and tell me if the rescue was good or bad or could have been done better.</p>\r\n<p>Guest stars in this show include:</p>\r\n<ul>\r\n<li>dd</li>\r\n<li>ddrescue</li>\r\n<li>losetup</li>\r\n<li>mount</li>\r\n<li>badblocks</li>\r\n<li>smartctl</li>\r\n<li>The <a href=\"https://www.system-rescue.org\">System rescue distro</a></li>\r\n</ul>',268,0,0,'CC-BY-SA','linux,disk,windows,virtualbox',0,0,1),
|
|||
|
(3422,'2021-09-14','Update about Phones and Devices',1341,'An Update about my New Phone and second one that is coming','<p>Small update about my new RedMi 10s and my new Monty Mint phone.</p>\r\n<ul>\r\n<li><a href=\"https://www.gsmarena.com/xiaomi_redmi_note_10s-10769.php\">https://www.gsmarena.com/xiaomi_redmi_note_10s-10769.php</a></li>\r\n<li><a href=\"https://ogadget.com/x/mony\">https://ogadget.com/x/mony</a></li>\r\n</ul>',129,0,0,'CC-BY-SA','Android, phone, Linux, Pine64, Smart Watch',0,0,1),
|
|||
|
(3424,'2021-09-16','Infosec Podcasts Part 6 - Infosec Leadership',721,'Presenting my favorite information security leadership podcasts','<p>Inoffensive in every region of the world.</p>\r\n<p>Thank you to everyone who has listened to my previous episodes. This is the final episode in the Infosec Podcasts series.</p>\r\n<p>I listen to many, MANY podcasts. The vast majority of these are related to information security.</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 - Episode 3324</li>\r\n<li>Part 2 - General Information Security - Episode 3334</li>\r\n<li>Part 3 - Career & Personal Development - Episode 3344</li>\r\n<li>Part 4 - Social Engineering - Episode 3368</li>\r\n<li>Part 5 - Episode 3387\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<li>Part 6 - Infosec Leadership</li>\r\n</ul></li>\r\n</ul>\r\n<p><strong>Preamble</strong></p>\r\n<p>Term: CISO</p>\r\n<ul>\r\n<li>Pronounced SEE-so or SAI-so</li>\r\n<li>Chief Information Security Officer</li>\r\n<li>Sounds like executive leadership position, similar to Chief Executive Officer (CEO), Chief Financial Officer (CFO), etc but this is often not the case</li>\r\n</ul>\r\n<p>Security leadership is changing</p>\r\n<p>Old way:</p>\r\n<ul>\r\n<li>Experienced technologists (Usually old white guys) worked way up ranks</li>\r\n<li>Usually reported through IT (CIO/CTO)</li>\r\n<li>Department of \"No\" - Block everything bad</li>\r\n<li>Slows down business</li>\r\n</ul>\r\n<p>New way:</p>\r\n<ul>\r\n<li>Experienced business professionals with leadership skills and security understanding</li>\r\n<li>Can report through:\r\n<ul>\r\n<li>IT (CIO/CTO)</li>\r\n<li>Legal (For compliance reasons)</li>\r\n<li>Finance (CFO) for governance or compliance reasons</li>\r\n<li>Financial impacts of attacks</li>\r\n<li>Direct costs</li>\r\n<li>Fines</li>\r\n<li>CEO - Seat at the table with other C-level execs</li>\r\n<li>Direct to board</li>\r\n</ul></li>\r\n<li>Empowers the business to succeed in a secure way</li>\r\n<li>Can still slow down the business, but only when needed\r\n<ul>\r\n<li>Brakes on a race car</li>\r\n</ul></li>\r\n</ul>\r\n<p><strong>Infosec Leadership Podcasts</strong></p>\r\n<ul>\r\n<li>CISO Tradecraft - G Mark Hardy (Weekly)\r\n<ul>\r\n<li>Discussion of topics related to becoming a CISO or maturing as a CISO</li>\r\n<li><a href=\"https://www.cisotradecraft.com/\" class=\"uri\">https://www.cisotradecraft.com/</a></li>\r\n</ul></li>\r\n<li>CISO Vendor Relationship Podcast - David Spark & Guests (Weekly)\r\n<ul>\r\n<li>Weekly podcast addressing the challenges experienced by both security professionals and the vendors with whom they interact.</li>\r\n<li><a href=\"https://cisoseries.com/subscribe-podcast/\" class=\"uri\">https://cisoseries.com/subscribe-podcast/</a></li>\r\n</ul></li>\r\n<li>CISO Talks (Weekly)\r\n<ul>\r\n<li>The talk show series with discussions of current trends in the world of information security with CISOs on the front line.</li>\r\n<li><a href=\"https://www.lepide.com/ciso-talks.html\" class=\"uri\">https://www.lepide.com/ciso-talks.html</a></li>\r\n</ul></li>\r\n<li>CISO Talk - James Azar (Weekly)\r\n<ul>\r\n<li>Presents the CISO view on cybersecurity, talent development, technology, leadership and much more.</li>\r\n<li><a href=\"https://cisotalk.podbean.com/\" class=\"uri\">https://cisotalk.podbean.com/</a></li>\r\n</ul></li>\r\n<li>The Cyber Ranch Podcast - Allan Alford & Hacker Valley Studios (Weekly)\r\n<ul>\r\n<li>Interviews with security leaders discussing relevant topics</li>\r\n<li><a href=\"https://hackervalley.com/cyberranch/\" class=\"uri\">https://hackervalley.com/cyberranch/</a></li>\r\n</ul></li>\r\n<li>CISO\'s Secrets - Currently hosted by Grant Asplund and sponsored by Checkpoint\r\n<ul>\r\n<li>Interviews with security leaders across a wide range of industries</li>\r\n<li>Addresses real issues facing security professionals and busines
|
|||
|
(3429,'2021-09-23','Linux Inlaws S01E39: Ubuntu and the Community',5207,'All about your favourite Debian spin and IBM mainframes','<p>\r\n In this episode, our two hosts host Rhys Davies, a developer advocate from Canonical. So all\r\n beans will be spilled on one of the most popular Linux distros out there. Like its past, present\r\n and future. Never mind how Canonical makes its moolah and where this goes... Plus an interesting\r\n infomercial on old big iron (IBM, if you\'re listening: the mail address is sponsor@linuxinlaws.eu).\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Canonical: <a href=\"https://canonical.com\" target=_blank>https://canonical.com</a></li>\r\n<li>Ubuntu: <a href=\"https://ubuntu.com\" target=_blank>https://ubuntu.com</a></li>\r\n<li>Manjaro: <a href=\"https://manjaro.org\" target=_blank>https://manjaro.org</a></li>\r\n<li>WSL: <a href=\"https://wiki.ubuntu.com/WSL\" target=_blank>https://wiki.ubuntu.com/WSL</a></li>\r\n<li>Snapcraft: <a href=\"https://snapcraft.io\" target=_blank>https://snapcraft.io</a></li>\r\n<li>Ubuntu community reboot: <a href=\"https://ubuntu.com/blog/reintroducing-the-community-team\" target=_blank>https://ubuntu.com/blog/reintroducing-the-community-team</a></li>\r\n<li>Chromium as a snap: <a href=\"https://snapcraft.io/blog/chromium-in-ubuntu-deb-to-snap-transition\" target=_blank>https://snapcraft.io/blog/chromium-in-ubuntu-deb-to-snap-transition</a></li>\r\n<li>Ubuntu podcast episode on this issue: <a href=\"https://ubuntupodcast.org/2020/06/04/s13e11-inside-out-clothes\" target=_blank>https://ubuntupodcast.org/2020/06/04/s13e11-inside-out-clothes</a></li>\r\n<li>Canonical\'s transition from upstart to systemd: <a href=\"https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039465.html\" target=_blank>https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039465.html</a></li>\r\n<li>LinuxONE and Ubuntu: <a href=\"https://ubuntu.com/blog/tag/linuxone\" target=_blank>https://ubuntu.com/blog/tag/linuxone</a></li>\r\n<li>Rhys\' presentation at the Linux App Summit: <a href=\"https://conf.linuxappsummit.org/event/3/contributions/65\" target=_blank>https://conf.linuxappsummit.org/event/3/contributions/65</a></li>\r\n<li>Critical Role: <a href=\"https://critrole.com\" target=_blank>https://critrole.com</a></li>\r\n<li>Hazy Jane: <a href=\"https://www.brewdog.com/eu_de/hazy-jane-440-eu\" target=_blank>https://www.brewdog.com/eu_de/hazy-jane-440-eu</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Debian, Ubuntu, IBM, mainframes, snaps, Canonical',0,0,1),
|
|||
|
(3451,'2021-10-25','Bricklink',837,'Custom 3rd Part Lego Shops','<ul>\r\n<li>beware shipping prices</li>\r\n<li>always use Instant Checkout</li>\r\n<li>be sure to check USA</li>\r\n<li>2-3x the cost of lego.com set</li>\r\n<li>paying 3-5 people via paypal ....</li>\r\n<li>no way to easy share wanted list ...</li>\r\n<li>LOST :( https://rmccurdy.com/.scripts/downloaded/CL4P-TP%20Claptrap%20Borderlands%20Bricklink.xml</li>\r\n<li>7 missing out of 216 on one shipment</li>\r\n</ul>\r\n<!-- Photo: -->\r\n<!-- https://drive.google.com/file/d/16r1dyJZzqbLRfx0iKB2orj0MdNC_8yXl/view?usp=sharing -->\r\n<p><em>Photo</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3451/20210829_212454.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3451/20210829_212454_thumbnail.jpg\" alt=\"Photo\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>',36,0,0,'CC-BY-SA','lego',0,0,1),
|
|||
|
(3432,'2021-09-28','Reading a license: Creative Commons Attribution ShareAlike 4.0 International',1956,'We jump into the future of 2013 and see how content licensing has changed','<p>Previous episode: <a href=\"https://hackerpublicradio.org/eps.php?id=3412\">https://hackerpublicradio.org/eps.php?id=3412</a><br><em>hpr3412 :: Reading a license: Creative Commons Attribution ShareAlike 3.0 Unported</em></p>\r\n<p>Timeline</p>\r\n<ul>\r\n<li>2007-02-23 <a href=\"https://creativecommons.org/2007/02/23/version-30-launched/\">https://creativecommons.org/2007/02/23/version-30-launched/</a></li>\r\n<li>2007-09-26 <a href=\"https://www.gnu.org/licenses/gpl-3.0.html\">https://www.gnu.org/licenses/gpl-3.0.html</a></li>\r\n<li>2011-11-03 <a href=\"https://creativecommons.org/2011/11/03/copyright-experts-discuss-cc-license-version-4-0-at-the-global-summit/\">https://creativecommons.org/2011/11/03/copyright-experts-discuss-cc-license-version-4-0-at-the-global-summit/</a><ul>\r\n<li>Internationalization</li>\r\n<li>Interoperability</li>\r\n<li>Long-lasting</li>\r\n<li>Data/PSI (Public Sector Information?)/Science/Education</li>\r\n<li>Supporting Existing Adoption Models and Frameworks</li>\r\n</ul>\r\n</li>\r\n<li>2013-11-25 <a href=\"https://creativecommons.org/2013/11/25/ccs-next-generation-licenses-welcome-version-4-0/\">https://creativecommons.org/2013/11/25/ccs-next-generation-licenses-welcome-version-4-0/</a><ul>\r\n<li>30-day violation grace period<br><a href=\"https://creativecommons.org/faq/#how-can-i-lose-my-rights-under-a-creative-commons-license-if-that-happens-how-do-i-get-them-back\">https://creativecommons.org/faq/#how-can-i-lose-my-rights-under-a-creative-commons-license-if-that-happens-how-do-i-get-them-back</a></li>\r\n</ul>\r\n</li>\r\n<li>2013-12-06 16Z--18Z CC site moves to 4.0 -- last snapshot with 3.0 is <a href=\"https://web.archive.org/web/20131206155520/https://creativecommons.org/\">https://web.archive.org/web/20131206155520/https://creativecommons.org/</a></li>\r\n<li>2014-10-21 CC-by-SA 4.0 and Free Art License 1.3 defined as two-way compatible licenses<br><a href=\"https://creativecommons.org/2014/10/21/big-win-for-an-interoperable-commons-by-sa-and-fal-now-compatible/\">https://creativecommons.org/2014/10/21/big-win-for-an-interoperable-commons-by-sa-and-fal-now-compatible/</a></li>\r\n<li>2015-10-08 GPLv3 defined as a one-way compatible license for CC-by-SA 4.0<br><a href=\"https://creativecommons.org/2015/10/08/cc-by-sa-4-0-now-one-way-compatible-with-gplv3/\">https://creativecommons.org/2015/10/08/cc-by-sa-4-0-now-one-way-compatible-with-gplv3/</a></li>\r\n</ul>\r\n<p>Links to license and deed and links from within the texts</p>\r\n<ul>\r\n<li><a href=\"https://creativecommons.org/licenses/by-sa/4.0/\">https://creativecommons.org/licenses/by-sa/4.0/</a></li>\r\n<li><a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\">https://creativecommons.org/licenses/by-sa/4.0/legalcode</a><ul>\r\n<li><em>The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication.</em></li>\r\n</ul>\r\n</li>\r\n<li><a href=\"https://freedomdefined.org/\">https://freedomdefined.org/</a><br>Definition of <em>Free Cultural Works</em></li>\r\n<li><a href=\"https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart\">https://wiki.creativecommons.org/License_Versions#Detailed_attribution_comparison_chart</a><br>How to give credit</li>\r\n<li><a href=\"https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such\">https://wiki.creativecommons.org/License_Versions#Modifications_and_adaptations_must_be_marked_as_such</a><br>How to mark a work as modified</li>\r\n<li><a href=\"https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F\">https://wiki.creativecommons.org/FAQ#If_I_derive_or_adapt_material_offered_under_a_Creative_Commons_license.2C_which_CC_license.28s.29_can_I_use.3F</a><br>How and when you ca
|
|||
|
(3433,'2021-09-29','A Squirrels thoughts about RMS',2565,'RMS and the subject of freedom','<hr />\r\n<p>\r\n<strong><em>\r\nThis podcast was provided by <a href=\"https://hackerpublicradio.org/correspondents/0377.html\">Zen_Floater2</a> in his personal capacity. The opinions expressed in this podcast are the author\'s own and do not reflect the view of Hacker Public Radio.<br />\r\n<small><a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#not_moderated\">Shownotes Edited by Ken</a> on 2021-09-11T14:35:19Z to <a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#explicit\">include disclaimer</a>.</small>\r\n</em></strong>\r\n</p>\r\n<hr />\r\n\r\n\r\n\r\n<p>\r\nA Squirrels thoughts about freedom and RMS.\r\n</p>\r\n<p>\r\nI also cover guns on aircraft. I cover smoking on aircraft.\r\n</p>\r\n<p>\r\nAnd I cover drinking beer on aircraft.\r\n</p>\r\n<p>\r\nAnd COBOL as well.\r\n</p>\r\n',377,0,1,'CC-BY-SA','RMS,Pedophilia,BEER',0,0,1),
|
|||
|
(3434,'2021-09-30','From 0 to K8s in 30 minutes',1938,'Build a Kubernetes cluster, run a website, route traffic to website','<p><a href=\"https://people.centos.org/pgreco/\">Install CentOS</a> <a href=\"https://www.raspberrypi.org/software/\">or Debian</a> on a Raspberry Pi. I\'m using CentOS, but I\'ll admit that Debian is the easier option by far.</p>\r\n<p>Do this on 3 separate Pi units, each with the same specs.</p>\r\n<h2 id=\"set-hostnames\">Set hostnames</h2>\r\n<p>You must have unique hostnames for each Pi. Without unique hostnames, your cluster cannot function.</p>\r\n<p>There are several \"kinds\" of hostnames, so to avoid confusion I change all of them.</p>\r\n<p>I use a simple naming scheme: <code>k</code> for \"kubernetes\" + an integer, starting at 100 + <code>c</code> for \"cluster\":</p>\r\n<pre class=\"bash\"><code>$ sudo hostname k100c\r\n$ sudo sysctl kernel.hostname=k100c\r\n$ sudo hostnamectl set-hostname k100c\r\n$ sudo reboot\r\n</code></pre>\r\n<p>Do this for each Pi. At a minimum, you end up with Pi computers named k100c, k101c, and k102c.</p>\r\n<h2 id=\"set-verbose-prompts\">Set verbose prompts</h2>\r\n<p>When working with many different hosts, it\'s helpful to have a very verbose prompt as a constant reminder of which host you\'re connected to. Add this to the <code>~/.bashrc</code> of each Pi:</p>\r\n<pre><code>export PS1=\'\\[\033[1;32m\\]\\! \\d \\t \\h:\\w \\n% \\[\033[00m\\]\' \r\n</code></pre>\r\n<h2 id=\"install-a-pi-finder-script\">Install a Pi finder script</h2>\r\n<p>Install an LED blinker so you can find a specific Pi when you need one. This brilliant script is by Chris Collins for his article <a href=\"https://opensource.com/article/20/6/find-raspberry-pi\">Use this script to find a Raspberry Pi on your network</a>, which explains how to run it.</p>\r\n<pre class=\"bash\"><code>#!/bin/bash\r\n\r\nset -o errexit\r\nset -o nounset\r\n\r\ntrap quit INT TERM\r\n\r\nCOUNT=0\r\nLED="/sys/class/leds/led0"\r\n\r\nif ! [ $(id -u) = 0 ]; then\r\n echo "Must be run as root."\r\n exit 1\r\nfi\r\n\r\nif [[ ! -d $LED ]]\r\nthen\r\n echo "Could not find an LED at ${LED}"\r\n echo "Perhaps try '/sys/class/leds/ACT'?"\r\n exit 1\r\nfi\r\n\r\nfunction quit() {\r\n echo mmc0 >"${LED}/trigger"\r\n}\r\n\r\necho -n "Blinking Raspberry Pi's LED - press CTRL-C to quit"\r\necho none >"${LED}/trigger"\r\n\r\nwhile true\r\ndo\r\n let "COUNT=COUNT+1"\r\n if [[ $COUNT -lt 30 ]]\r\n then\r\n echo 1 >"${LED}/brightness"\r\n sleep 1\r\n echo 0 >"${LED}/brightness"\r\n sleep 1\r\n else\r\n quit\r\n break\r\n fi\r\ndone\r\n</code></pre>\r\n<h2 id=\"install-k3s-on-your-control-plane\">Install K3s on your control plane</h2>\r\n<p>K3s is Kubernetes for IoT and Edge computing. It\'s the easiest, cleanest, and most serious method of getting Kubernetes on an ARM device. You can try other solutions (Microk8s, Minikube, OXD, and so on), but the best support comes from k3s.</p>\r\n<p>First, you must install k3s on one Pi. You can use any of your Pi units for this, but I use host k100c because it\'s the first in the sequence, so it feels logical.</p>\r\n<pre class=\"bash\"><code>[k100c]$ curl -sfL https://get.k3s.io -o install_k3s.sh\r\n[k100c]$ chmod 700 install_k3s.sh\r\n</code></pre>\r\n<p>Read the script to ensure that it seems to do what you expect, and then:</p>\r\n<pre class=\"bash\"><code>[k100c]$ ./install_k3s.sh\r\n</code></pre>\r\n<p>After installation, you\'re prompted to add some arguments to your bootloader. Open <code>/boot/cmdline.txt</code> in a text editor and add <code>cgroup_memory=1 cgroup_enable=memory</code> to the end of it.</p>\r\n<pre class=\"text\"><code>console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait cgroup_memory=1 cgroup_enable=memory\r\n</code></pre>\r\n<p>Reboot:</p>\r\n<pre class=\"bash\"><code>[k100c]$ sudo reboot\r\n</code></pre>\r\n<p>Once the Pi is back up, verify that yo
|
|||
|
(3438,'2021-10-06','Ten privacy friendly Google search alternatives.',551,'Google search is monopolistic here are some alternatives','<p>Here are links to all the search engines and related stuff discussed during this podcast,</p>\r\n<ul>\r\n<li>Searx: <a href=\"https://www.searx.me/\" class=\"uri\">https://www.searx.me/</a>\r\n<ul>\r\n<li>Searx public instances: <a href=\"https://searx.space/\" class=\"uri\">https://searx.space/</a></li>\r\n</ul></li>\r\n<li>Whoogle: <a href=\"https://github.com/benbusby/whoogle-search\" class=\"uri\">https://github.com/benbusby/whoogle-search</a>\r\n<ul>\r\n<li>Whoogle public instances: <a href=\"https://github.com/benbusby/whoogle-search#public-instances\" class=\"uri\">https://github.com/benbusby/whoogle-search#public-instances</a></li>\r\n</ul></li>\r\n<li>MetaGer: <a href=\"https://metager.org/\" class=\"uri\">https://metager.org/</a>\r\n<ul>\r\n<li>MetaGer browser extensions: <a href=\"https://metager.org/plugin\" class=\"uri\">https://metager.org/plugin</a></li>\r\n<li>MetaGer mobile apps: <a href=\"https://metager.org/app\" class=\"uri\">https://metager.org/app</a></li>\r\n<li>MetaGer privacy policy: <a href=\"https://metager.org/datenschutz\" class=\"uri\">https://metager.org/datenschutz</a></li>\r\n</ul></li>\r\n<li>Gigablast: <a href=\"https://gigablast.com/\" class=\"uri\">https://gigablast.com/</a>\r\n<ul>\r\n<li>Gigablast privacy policy: <a href=\"https://gigablast.com/privacy.html\" class=\"uri\">https://gigablast.com/privacy.html</a></li>\r\n</ul></li>\r\n<li>Private.sh: <a href=\"https://private.sh/\" class=\"uri\">https://private.sh/</a>\r\n<ul>\r\n<li>Private.sh privacy policy: <a href=\"https://private.sh/extension.html\" class=\"uri\">https://private.sh/extension.html</a></li>\r\n</ul></li>\r\n<li>Ecosia: <a href=\"https://www.ecosia.org/\" class=\"uri\">https://www.ecosia.org/</a>\r\n<ul>\r\n<li>Ecosia mobile apps: <a href=\"https://info.ecosia.org/mobile\" class=\"uri\">https://info.ecosia.org/mobile</a></li>\r\n<li>Ecosia privacy policy: <a href=\"https://info.ecosia.org/privacy\" class=\"uri\">https://info.ecosia.org/privacy</a></li>\r\n</ul></li>\r\n<li>Startpage: <a href=\"https://www.startpage.com/\" class=\"uri\">https://www.startpage.com/</a>\r\n<ul>\r\n<li>Startpage privacy policy: <a href=\"https://www.startpage.com/en/search/privacy-policy.html\" class=\"uri\">https://www.startpage.com/en/search/privacy-policy.html</a></li>\r\n</ul></li>\r\n<li>Qwant: <a href=\"https://www.qwant.com/\" class=\"uri\">https://www.qwant.com/</a>\r\n<ul>\r\n<li>Qwant Junior: <a href=\"https://www.qwantjunior.com/\" class=\"uri\">https://www.qwantjunior.com/</a></li>\r\n<li>Qwant browser extensions: <a href=\"https://help.qwant.com/help/qwant-search/add-qwant-on-desktop/\" class=\"uri\">https://help.qwant.com/help/qwant-search/add-qwant-on-desktop/</a></li>\r\n<li>Qwant privacy policy: <a href=\"https://about.qwant.com/en/legal/confidentialite/\" class=\"uri\">https://about.qwant.com/en/legal/confidentialite/</a></li>\r\n</ul></li>\r\n<li>Brave Search: <a href=\"https://search.brave.com/\" class=\"uri\">https://search.brave.com/</a>\r\n<ul>\r\n<li>Brave Search privacy policy: <a href=\"https://search.brave.com/help/privacy-policy\" class=\"uri\">https://search.brave.com/help/privacy-policy</a></li>\r\n</ul></li>\r\n<li>DuckDuckGo: <a href=\"https://duckduckgo.com/\" class=\"uri\">https://duckduckgo.com/</a>\r\n<ul>\r\n<li>DuckDuckGo browser extensions & apps: <a href=\"https://duckduckgo.com/app\" class=\"uri\">https://duckduckgo.com/app</a></li>\r\n<li>DuckDuckGo privacy policy: <a href=\"https://duckduckgo.com/privacy\" class=\"uri\">https://duckduckgo.com/privacy</a></li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0773\">hpr0773 :: Interview with Gabriel Weinberg of DuckDuckGo</a></p>\r\n',397,74,0,'CC-BY-SA','searx, whoogle, metager, gigablast, private.sh, ecosia, startpage, qwant, brave, duckduckgo',0,0,1),
|
|||
|
(3446,'2021-10-18','Speech To Text',1378,'I talk about converting HPR audio to text and tagging','<ul>\r\n<li><p>speech recognition</p></li>\r\n<li><p>machine_learning (ML)</p></li>\r\n<li><p>artificial_intelligence (AI)</p></li>\r\n<li><p>speech_recognition</p></li>\r\n<li><p>Natural Language Processing (NLP)</p></li>\r\n<li><p><a href=\"https://rmccurdy.com/stuff/NLP/\" class=\"uri\">https://rmccurdy.com/stuff/NLP/</a> ( example files )</p></li>\r\n<li><p>Some higher maf here that is above my head for now ...<br />\r\n<a href=\"https://towardsdatascience.com/using-keyword-extraction-for-unsupervised-text-classification-in-nlp-10433a1c0cf9\" class=\"uri\">https://towardsdatascience.com/using-keyword-extraction-for-unsupervised-text-classification-in-nlp-10433a1c0cf9</a></p></li>\r\n<li><p><a href=\"https://www.interviewquery.com/blog-keyword-extraction/\" class=\"uri\">https://www.interviewquery.com/blog-keyword-extraction/</a></p></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','AI,ML,scripting,audio',0,0,1),
|
|||
|
(3721,'2022-11-07','HPR Community News for October 2022',3248,'HPR Volunteers talk about shows released and comments posted in October 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/0411.html\" target=\"_blank\">Paul J</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0412.html\" target=\"_blank\">m0dese7en</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0413.html\" target=\"_blank\">CCHits.net Team</a>.\n</p>\n\n<h2>Last Month\'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=3696\" target=\"_blank\">3696</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3696\" target=\"_blank\">HPR Community News for September 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=3697\" target=\"_blank\">3697</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3697\" target=\"_blank\">Mis-information, Dis-information, and Fake News. You are a product and target for all of it.</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=3698\" target=\"_blank\">3698</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3698\" target=\"_blank\">Spectrogram</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=3699\" target=\"_blank\">3699</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-10-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3699\" target=\"_blank\">Old and new videogames/board games with guest binrc</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3700\" target=\"_blank\">3700</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-10-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3700\" target=\"_blank\">Introduction to Batch Files</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=3701\" target=\"_blank\">3701</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-10-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3701\" target=\"_blank\">ReiserFS - the file system of the future</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0411.html\" target=\"_blank\">Paul J</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3702\" target=\"_blank\">3702</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-10-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3702\" target=\"_blank\">Easter Ogg</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://hackerpublicradio.org/eps.php?id=3703\" target=\"_blank\">3703</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-10-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3703\" target=\"_blank\">McCurdy House Tour</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/ep
|
|||
|
(3439,'2021-10-07','Linux Inlaws S01E40: The One with the BSDs',5834,'The other One Operating System to Rule them all','<p>In this episode, Martin and Chris host an eclectic panel of contributors to\r\nthe *other* major FLOSS operating system family - you guessed it: the\r\nflavours of the Berkeley Software Distribution (aka BSD among friends).\r\nDisclaimer: you may be tempted to diverge from the Path of the\r\nRighteousness also known as Linux and give this alternative a spin. So\r\nthis episode is *not* for the faint-hearted - listen at your own\r\ndiscretion! Also: the true defective nature of our beloved (?) hosts\' past\r\nwill be revealed - an episode not be missed despite the caveat! Plus\r\na refresher on spaced-out operating system concepts including library\r\noperating systems and a rant on Android and friends. In addition to some\r\ncool BSD trolling... </p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenBSD: <a href=\"https://www.openbsd.org\" target=_blank>https://www.openbsd.org</a></li>\r\n<li>FeeBSD: <a href=\"https://www.freebsd.org\" target=_blank>https://www.freebsd.org</a></li>\r\n<li>NetBSD: <a href=\"https://www.netbsd.org\" target=_blank>https://www.netbsd.org</a></li>\r\n<li>DragonFlyBSD: <a href=\"https://www.dragonflybsd.org\" target=_blank>https://www.dragonflybsd.org</a></li>\r\n<li>386BSD: <a href=\"https://www.386bsd.org\" target=_blank>https://www.386bsd.org</a></li>\r\n<li>RUMP kernel: <a href=\"https://en.wikipedia.org/wiki/Rump_kernel\" target=_blank>https://en.wikipedia.org/wiki/Rump_kernel</a></li>\r\n<li>Library operating systems: <a href=\"https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems\" target=_blank>https://www.sigarch.org/leave-your-os-at-home-the-rise-of-library-operating-systems</a></li>\r\n<li>Free BSD Linux Compatibility: <a href=\"https://docs.freebsd.org/en/books/handbook/linuxemu\" target=_blank>https://docs.freebsd.org/en/books/handbook/linuxemu</a></li>\r\n<li>BSD Jails (original paper): <a href=\"https://papers.freebsd.org/2000/phk-jails.files/sane2000-jail.pdf\" target=_blank>https://papers.freebsd.org/2000/phk-jails.files/sane2000-jail.pdf</a></li>\r\n<li>FeeBSD Ports: <a href=\"https://www.freebsd.org/ports\" target=_blank>https://www.freebsd.org/ports</a></li>\r\n<li>NetBSD pkgsrc: <a href=\"https://www.netbsd.org/docs/pkgsrc\" target=_blank>https://www.netbsd.org/docs/pkgsrc</a></li>\r\n<li>ZFS: <a href=\"https://en.wikipedia.org/wiki/ZFS\" target=_blank>https://en.wikipedia.org/wiki/ZFS</a></li>\r\n<li>BSD\'s pledge: <a href=\"https://unix.stackexchange.com/questions/410056/what-is-openbsds-pledge-in-short\" target=_blank>https://unix.stackexchange.com/questions/410056/what-is-openbsds-pledge-in-short</a></li>\r\n<li>FreeBSD and Netflix: <a href=\"https://papers.freebsd.org/2019/fosdem/looney-netflix_and_freebsd\" target=_blank>https://papers.freebsd.org/2019/fosdem/looney-netflix_and_freebsd</a></li>\r\n<li>BSD Firewalls: <a href=\"https://docs.freebsd.org/en/books/handbook/firewalls\" target=_blank>https://docs.freebsd.org/en/books/handbook/firewalls</a></li>\r\n<li>Michael W. Lucas\' \"Savaged by Systemd\": <a href=\"hhttps://www.goodreads.com/book/show/36190710-savaged-by-systemd\" target=_blank>hhttps://www.goodreads.com/book/show/36190710-savaged-by-systemd</a></li>\r\n<li>Linux vs. Minix: <a href=\"https://www.oreilly.com/openbook/opensources/book/appa.html\" target=_blank>https://www.oreilly.com/openbook/opensources/book/appa.html</a></li>\r\n<li>Pegasus spyware: <a href=\"https://en.wikipedia.org/wiki/Pegasus_(spyware)\" target=_blank>https://en.wikipedia.org/wiki/Pegasus_(spyware)</a></li>\r\n<li>BSD History presentation: <a href=\"https://www.youtube.com/watch?v=DEEr6dT-4uQ\" target=_blank>https://www.youtube.com/watch?v=DEEr6dT-4uQ</a></li>\r\n<li>The tragedy of systemd: <a href=\"https://www.youtube.com/watch?v=o_AIw9bGogo\" target=_blank>https://www.youtube.com/watch?v=o_AIw9bGogo</a></li>\r\n<li>The Rise and Fall of Copyleft: <a href=\"https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_
|
|||
|
(3442,'2021-10-12','What is this thing called science',790,'Critical thinking is only part of the equation. Here\'s the other part.','<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=3414\">hpr3414 :: Critical Thinking may make You Critical of the Covid Crisis</a>\r\n</p>\r\n<hr />\r\n\r\n<p>Some time ago, I did some Hacker Public Radio episodes in which I ostensibly demonstrated how to create a PDF with Scribus. Secretly, I was actually demonstrating how unexpected payloads could be embedded into a PDF. Did the PDF I uploaded as part of that episode no longer contain a payload if the listener who downloaded it wasn\'t aware that the payload existed?</p>\r\n<p>I\'ve been diagnosed by educators as a \"life long learner,\" which as far as I can tell is a buzzword referring to someone who takes pleasure in learning new things. In our world of technology, dear listener, I think this term is just \"hacker.\" And that\'s appropriate, because this is Hacker Public Radio you\'re listening to now, and listeners of this show tend to be people who enjoy learning and exploring new ideas, taking apart gadgets to see what makes them tick, reverse engineering code and data to understand how it gets processed, and so on.</p>\r\n<p>The thing about being a hacker or a life-long learner is that there\'s a lot of stuff out there that wants to be hacked, or learnt. And it turns out that it\'s just not possible to learn everything. Sometimes, you\'re out of your depth. It can be tricky to recognize when you\'re out of your depth, and I think there\'s a certain learn-able skill to knowing that you don\'t know something. There\'s a lot of value to this skill, because when you can recognize you don\'t have expertise on something, you\'re able to look around you and find someone who has. That\'s significant because you can learn from someone with expertise.</p>\r\n<p>In my own humdrum life, before getting a full-time job at a tech company, I was commissioned on several occasions to build out infrastructure for a video game development project, an indie radio station, a few different multimedia projects, and so on. When I took on those roles, I became the resident expert. People turned to me for the authoritative word on what technological solutions should be used. When I told them, they were more or less obligated to listen, because that was the role I\'d been hired for. If they were to ask me what a workstation should run, and I said Linux, but they bought a Mac instead, then my role would be unarguably redundant. They could just as easily type the question into a search engine on the Internet, and ignore the result. Or they could roll a die, or whatever.</p>\r\n<p>In those cases, though, it\'s a question of my opinion compared to someone else\'s opinion. Both are valid. Because I was the architect, my opinion mattered more to the long-term plan, but if the long-term plan were to change from having a highly-available cluster for fast 3d model rendering to having workstations with a familiar desktop, then my opinion would be less valid.</p>\r\n<p>But there are some areas in life where opinions don\'t matter. Specifically, that area is science. But what is science, anyway? People talk about science a lot, but it took me a long time, especially as someone who largely came from an artistic background, to comprehend the significance of the term, much less how it worked.</p>\r\n<p>Forget about all the high school classes and pop dietitians and physicists. Science is a framework. It\'s a set of principles designed to help our human brains hack the world around us in a methodical and precise way. Instead of letting our opinions, which may or may not be relevant, influence conclusions and decisions we make, science looks at the results of controlled input and output. Wait a minute. \"Input and output\"? Those are words I understand. Those are computer terms!</p>\r\n<p>Yeah it turns out that computers are the product of science, and in fact building computers and programming comput
|
|||
|
(3443,'2021-10-13','Neuton battery replacement',593,'Rho`n describes replacing the battery in his Neuton EM 4.1 electric lawn mower','<h1 id=\"audio-notes\">Audio Notes</h1>\r\n<p>During the audio I repeatedly called it the Neutron mower instead of the Neuton mower. I was too lazy edit those mispronunciations.</p>\r\n<h1 id=\"introduction\">Introduction</h1>\r\n<p>After recently reclaiming my Neuton EM 4.1 electric lawn mower from my parents, I needed to replace the battery to make it operational. This mower was purchased in the early 2000s, and replacement batteries for it are no longer available from the manufacturer. Thankfully replacement 12V 10A batteries are available through third parties.</p>\r\n<h1 id=\"replacing-parts\">Replacing Parts</h1>\r\n<p>I faced two issues with finding replacement parts. The Neuton mowers run at 24V and need batteries that can provide 10 amps of current. They come with a battery case that holds two 12V 10A batteries connected in series. The case holds the batteries and provides a connector and circuitry for a 24V DC charger. When I received the mower back from my parents, it didn\'t have a battery case with it. While the <a href=\"https://www.neutonpower.com/\">Neuton website</a> is still online, and looks like you can order some accessories still, they no longer carry replacement battery cases or batteries. I was able to find just the case on EBay. I then found replacement batteries on Amazon.</p>\r\n<p>Installing the batteries in the case is simple. One side of the case has a lid. The lid is held in place by plastic notches on the bottom and two screws at the top. The screws have size 10 star heads. The batteries sit side by side in the case, with their terminals facing the lid. I connected the inner terminals (negative of one battery to positive of the other) with the jumper wire that came with the case. I then connected the outer terminals to the battery case terminal wires, slid the batteries all the way into case, closed, and fastened the lid.</p>\r\n<h1 id=\"conclusion\">Conclusion</h1>\r\n<p>The batteries are currently charging. The red charging light did come on when I plugged in the 24V DC charger, and nothing has exploded yet, so I am optimistic I will be able to use the mower again shortly.</p>\r\n<h1 id=\"references\">References</h1>\r\n<ul>\r\n<li>Neuton CE5.4 24 volt rechargeable battery CASE ONLY - <a href=\"https://www.ebay.com/itm/114952181341\">EBay item</a></li>\r\n<li>Mighty Max Battery 12V 10AH Replaces HE12V127 HGL1012 LCRB1210P NEUTON CE5 POWPS12100 Battery - 2 Pack Brand Product - <a href=\"https://www.amazon.com/gp/product/B00K9713L4/ref=ppx_od_dt_b_asin_title_s00?ie=UTF8&psc=1\">Amazon item</a></li>\r\n</ul>\r\n<h1 id=\"attribution\">Attribution</h1>\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br />\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br />\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br />\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
|
|||
|
(3445,'2021-10-15','True critical thinking seems to be the key',4328,'A response to HPR 3414','<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=3414\">hpr3414 :: Critical Thinking may make You Critical of the Covid Crisis</a>\r\n</p>\r\n<hr />\r\n<h2 id=\"a-response-to-critical-thinking-may-make-you-critical-of-the-covid-crisis\">A response to <em>Critical Thinking may make You Critical of the Covid Crisis</em></h2>\r\n<p><strong>(HPR episode 3414, produced by CoGo and released on 2021-09-02)</strong></p>\r\n<h2 id=\"defining-terms\">Defining terms</h2>\r\n<ul>\r\n<li>What is <em>Critical Thinking</em>?\r\n<ul>\r\n<li>The Wikipedia definition begins: \"<em>Critical thinking is the analysis of facts to form a judgment.</em>\"</li>\r\n<li>It goes on to say: \"<em>The subject is complex, and several different definitions exist, which generally include the rational, skeptical, unbiased analysis, or evaluation of factual evidence.</em>\"</li>\r\n<li>See the references below.</li>\r\n</ul></li>\r\n</ul>\r\n<blockquote>\r\n<p>Note the use of the terms <strong>fact</strong>, <strong>factual evidence</strong> and <strong>unbiased analysis</strong>. It is my contention that HPR episode 3414 fails in these regards in several places.</p>\r\n</blockquote>\r\n<ul>\r\n<li>What is an \"<em>experiment</em>\"?\r\n<ul>\r\n<li>Wikipedia’s definition begins: \"<em>An experiment is a procedure carried out to support or refute a hypothesis. Experiments provide insight into cause-and-effect by demonstrating what outcome occurs when a particular factor is manipulated.</em>\"</li>\r\n</ul></li>\r\n</ul>\r\n<blockquote>\r\n<p>The term <strong>experiment</strong> is often used incorrectly in episode 3414. A better term would be <strong>observation</strong> or <strong>anecdote</strong></p>\r\n</blockquote>\r\n<ul>\r\n<li>The virus:\r\n<ul>\r\n<li>The virus is a <em>coronavirus</em>. There are many viruses classified in this way.</li>\r\n<li>The name of the virus is <em>SARS-CoV-2</em>. The <em>SARS</em> part stands for <em>Severe Acute Respiratory Syndrome</em>, the type of disease caused by the virus. <em>CoV</em> signifies that it is a <em>coronavirus</em> and the <em>2</em> means it’s the second SARS-type corona virus to have caused problems in the recent past. The other one, just called <em>SARS</em> occurred in 2003.</li>\r\n<li>The name of the disease caused by SARS-CoV-2 is <em>COVID-19</em>. The letters <em>COVID</em> define it as a coronavirus disease. The <em>19</em> part is because it was first discovered in 2019.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><strong>References</strong>:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Critical_thinking\" title=\"Wikipedia article: Critical thinking\">Wikipedia article on Critical Thinking</a></li>\r\n<li><a href=\"https://www.gre.ac.uk/articles/ils/critical-thinking\" title=\"University of Greenwich article. What is critical thinking?\">University of Greenwich: What is critical thinking?</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Experiment\" title=\"Wikipedia article: Experiment\">Wikipedia article on Experiments</a></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3445/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"collected-references\">Collected references:</h2>\r\n<ol type=\"1\">\r\n<li>Wikipedia article: Critical thinking:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Critical_thinking\">https://en.wikipedia.org/wiki/Critical_thinking</a></li>\r\n</ul></li>\r\n<li>University of Greenwich article. What is critical thinking?:\r\n<ul>\r\n<li><a href=\"https://www.gre.ac.uk/articles/ils/critical-thinking\">https://www.gre.ac.uk/articles/ils/critical-thinking</a></li>\r\n</ul></li>\r\n<li>Wikipedia article: Experiment:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Experiment\">https://en.wikipedia.org/wiki/Experiment</a></li>\r\n</ul></li
|
|||
|
(3444,'2021-10-14','The Psion series 5mx',1178,'A show where I talk about my experiences of the Psion 5mx, a portable computer from the late 90s','<p>The psion series 5mx is a portable computer from the late 90s, here\'s my episode talking about it.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Series_5\" class=\"uri\">https://en.wikipedia.org/wiki/Psion_Series_5</a></li>\r\n<li>PLPTools (syncing with modern linux): <a href=\"https://github.com/rrthomas/plptools\" class=\"uri\">https://github.com/rrthomas/plptools</a></li>\r\n<li>Nconvert (file converter): <a href=\"https://web.archive.org/web/20161130192611/https://neuon.com/downloads/nconvert/\" class=\"uri\">https://web.archive.org/web/20161130192611/https://neuon.com/downloads/nconvert/</a></li>\r\n<li>Programming book: <a href=\"https://archive.org/details/book_20210531\" class=\"uri\">https://archive.org/details/book_20210531</a></li>\r\n<li>psion linux SDK: <a href=\"https://github.com/static-void/psion_cpp_sdk_linux.git\" class=\"uri\">https://github.com/static-void/psion_cpp_sdk_linux.git</a></li>\r\n<li>Eric Lindsey\'s site, with lots of psion software: <a href=\"https://ericlindsay.com/epoc/index.htm\" class=\"uri\">https://ericlindsay.com/epoc/index.htm</a></li>\r\n</ul>\r\n<p>Apologies for talking quickly!</p>',381,0,0,'CC-BY-SA','retro, psion, programming, pdas',0,0,1),
|
|||
|
(3452,'2021-10-26','Neuton battery test',324,'Rho`n describes testing the battery in his Neuton EM 4.1 electric lawn mower','<h2 id=\"introduction\">Introduction</h2>\r\n<p>On today\'s show I test whether the battery replacement for my Neuton mower is a success. This is a follow up to <a href=\"https://hackerpublicradio.org/eps.php?id=3443\">episode 3443</a>. After some audio recording difficulties with the blue tooth headset I used with my phone, we hear if the replacement was successful. Before I could test the battery, I needed to replace the mower key. I think it would have been simple to just jump the terminals with a wire and maybe some alligator clips to hold the wire to the key terminals, but I was worried this would not guarantee the wire shaking loose as I moved. I looked on EBay and found a replacement key for about fifteen dollars US, and decided it was worth the cost and the wait before trying out the mower.</p>\r\n<h2 id=\"testing-the-mower\">Testing the mower</h2>\r\n<p>After putting the key in the mower, pulling and holding the safety levers, and then pressing the start button. The mower wouldn\'t start. I checked the key was set properly, and saw the green LED on the handle lit and indicating that power was available. I pulled the key and battery out, and then reseated both of them, checking once again that the power indicator was lit. After some fooling around with the safety levers and start button, I realized you had to push the start button and then pull and hold the safety levers for the mower to start. The mower runs well, and the cost of the batteries and key will even out over time from the savings on not paying for a lawn service.</p>\r\n<h2 id=\"references\">References</h2>\r\n<ul>\r\n<li>DR Neuton Cordless Walk Behind 14\" Lawn Mower CE2 CE3 CE5 Reset Security Key - <a href=\"https://www.ebay.com/itm/184176055409?ViewItem=&item=184176055409\">EBay item</a></li>\r\n</ul>\r\n<h2 id=\"attribution\">Attribution</h2>\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br />\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br />\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br />\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,rechargeable battery',0,0,1),
|
|||
|
(3447,'2021-10-19','BlacKernel\'s Journey Into Technology: Episode 2',1249,'In which BlacKernel struggles to talk about Windows','<h2>Talking Points</h2>\r\n<ul>\r\n <li>W*ndows Power User\r\n <ul>\r\n <li>Programmed a few Visual BASIC programs, but was underwhelmed with how BASIC the programming language was</li>\r\n <li>Tried installing Python and Ruby to much frustration</li>\r\n <li>Tried installing Cygw*n to make Python/Ruby easier to work with</li>\r\n <li>Read on the Cygw*n site about something called <b><a href=\"#show-notes\">Linux</a></b></li>\r\n <li>Started working with C and C++</li>\r\n </ul></li>\r\n <li>Customizing my deck\r\n <ul>\r\n <li>Tried to customize as much as I could about my W*ndows install</li>\r\n <li>Utilized tools to change the boot logo, the start menu, the init scripts, etc.</li>\r\n <li>Hit a few snags with problems boot-looping, not loading graphically, etc</li>\r\n <li>Tried editing the W*ndows registry and realized that the programs I was using to edit the operating system necessarily break the security and stability of the OS</li>\r\n <li>Didn\'t really know/care about open source, but was getting frustrated that I wasn\'t able to just reach in to my system\'s code to fix it.</li>\r\n </ul></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<h2 id=\"show-notes\">Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n <li>I couldn\'t really find any of the stuff that I used and, at this point, I\'m not super motivated to find them.</li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Thomas_Hobbes\">https://en.wikipedia.org/wiki/Thomas_Hobbes</a></li>\r\n</ul>\r\n\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n\r\n',396,0,1,'CC-BY-SA','technology, windows, w*ndows, losedows, introductions, linux, dos',0,0,1),
|
|||
|
(3449,'2021-10-21','Linux Inlaws S01E41: The Halloween Documents',3956,'The Halloween Documents','<p>In this infomercial on Microsoft, our hosts discuss the infamous Halloween\r\ndocuments (\'tis the season after all), a set of ancient scrolls dating back\r\nmore than twenty years and giving an overview of the behemoth\'s then strategy\r\non open source and how to possibly combat it. But fear not, ye of little faith\r\n:-), all is well now as the episode shows also the long way Microsoft has come\r\nsince then and its adoption (and giving back!) as an enterprise technology.</p>\r\n\r\n<p>Plus: How to increase your market cap by using FLOSS. And last but not least:\r\nThe Dark Side is back by popular demand! With a special episode on the usual\r\nHalloween stuff including vampires, Transylvania, politicians, QAnon, Zoom,\r\nTeams and other horror topics (Ever wondered what happened to Angela Merkel\r\nafter she stepped down as Germany\'s chancelorette in 2021? Then don\'t miss out\r\non this episode!).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Little Britain: <a href=\"https://www.bbc.co.uk/programmes/b006q2zd\" target=_blank>https://www.bbc.co.uk/programmes/b006q2zd</a></li>\r\n<li>SCO Group: <a href=\"https://en.wikipedia.org/wiki/SCO_Group\" target=_blank>https://en.wikipedia.org/wiki/SCO_Group</a></li>\r\n<li>SCO vs. IBM: <a href=\"https://en.wikipedia.org/wiki/SCO_Group,_Inc._v._International_Business_Machines_Corp.\" target=_blank>https://en.wikipedia.org/wiki/SCO_Group,_Inc._v._International_Business_Machines_Corp.</a></li>\r\n<li>Halloween documents: <a href=\"https://en.wikipedia.org/wiki/Halloween_documents\" target=_blank>https://en.wikipedia.org/wiki/Halloween_documents</a></li>\r\n<li>Microsoft and open source: <a href=\"https://en.wikipedia.org/wiki/Microsoft_and_open_source\" target=_blank>https://en.wikipedia.org/wiki/Microsoft_and_open_source</a></li>\r\n<li>Monsters of Man: <a href=\"https://www.imdb.com/title/tt6456326\" target=_blank>https://www.imdb.com/title/tt6456326</a></li>\r\n<li>Breeders: <a href=\"https://en.wikipedia.org/wiki/Breeders_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Breeders_(TV_series)</a></li>\r\n<li>Permanent penis for the Welsh Dragon: <a href=\"https://www.dailymail.co.uk/news/article-9932657/Hilarious-campaigners-demand-famous-red-dragon-given-permanent-penis-Welsh-flags.html\" target=_blank>https://www.dailymail.co.uk/news/article-9932657/Hilarious-campaigners-demand-famous-red-dragon-given-permanent-penis-Welsh-flags.html</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Microsoft, Google, The Dark Side, Halloween, Transylvania, Carmesine-colored Soy Milk, vegan vampire',0,0,1),
|
|||
|
(3471,'2021-11-22','The Sony Walkman WM-F41',531,'A quick talk about one of my favorite Legacy Audio devices, a genuine Sony FM/AM cassette Walkman.','<p>This episode is just a quick talk about one of my favorite legacy audio devices, my Sony FM/AM cassette Walkman, model WM-F41.</p>\r\n\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://retrospekt.com/products/sony-walkman-wm-f31-f41\">Sony Walkman WM-F41</a></li>\r\n<li><a href=\"https://www.behringer.com/product.html?modelCode=P0576\">Behringer Xenyx 502 Mixer</a></li>\r\n<li>Music is from Kimiko Ishizaka\'s <em>The Open Art of Fugue</em>: <a href=\"https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080\">https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080</a>, used by permission of its <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n</ul>\r\n\r\n',238,0,0,'CC-BY-SA','audio, vintage audio, cassette tapes, tape players, portable stereos, audio repair',0,0,1),
|
|||
|
(3468,'2021-11-17','Distro upgrade intervals on my Raspberry Pi',786,'In this episode I discuss Debian distro upgrade intervals for my raspberry Pi','<h2 id=\"a-discussion-about-debian-lts-distro-upgrade-intervals-on-my-raspberry-pi\">A discussion about Debian LTS distro upgrade intervals on my Raspberry Pi</h2>\r\n<h3 id=\"relevant-links-below\">Relevant links below</h3>\r\n<p><a href=\"https://wiki.debian.org/DebianReleases\">Debian release information</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3266\">My previous episode from last year where I covered the upgrade on my raspberry Pi from Debian Jessie 8 to Stretch 9</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2901\">A previous episode where I describe my raspberry Pi add-on board and what I use it for</a></p>\r\n',201,0,1,'CC-BY-SA','Linux, Distros, Raspberry Pi, Debian',0,0,1),
|
|||
|
(3741,'2022-12-05','HPR Community News for November 2022',3276,'HPR Volunteers talk about shows released and comments posted in November 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/0414.html\" target=\"_blank\">Kinghezy</a>.\n</p>\n\n<h2>Last Month\'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=3717\" target=\"_blank\">3717</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3717\" target=\"_blank\">Video editing with Shotcut on a low end PC</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=3718\" target=\"_blank\">3718</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3718\" target=\"_blank\">Making Ansible playbooks to configure Single Sign On for popular open source applications</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3719\" target=\"_blank\">3719</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3719\" target=\"_blank\">HPR News</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=3720\" target=\"_blank\">3720</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3720\" target=\"_blank\">Practicing Batch Files With ECHO</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=3721\" target=\"_blank\">3721</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-11-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3721\" target=\"_blank\">HPR Community News for October 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=3722\" target=\"_blank\">3722</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3722\" target=\"_blank\">Bash snippet - plurals in messages</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://hackerpublicradio.org/eps.php?id=3723\" target=\"_blank\">3723</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-11-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3723\" target=\"_blank\">HPR News</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=3724\" target=\"_blank\">3724</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-11-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3724\" target=\"_blank\">My top Android apps</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3725\" target=\"_blank\">3725</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3725\" target=\"_blank\">How to use OS
|
|||
|
(3464,'2021-11-11','Being irrational',777,'Being irrational is rational.','<p>When listening to <a href=\"https://hackerpublicradio.org/eps.php?id=3442\">HPR 3442</a> by Klaatu, which I recommend, some thoughts about how we think started rattling about in my head. In this show I riff on that and talk about the importance of our irrational mode of thought.</p>\r\n',268,0,0,'CC-BY-SA','philosophy,mathematics,science,chess,logic,music',0,0,1),
|
|||
|
(3465,'2021-11-12','Walmart Onn 7 inch tablet gen 2',863,'Podcast about a new Android go Tablet I purchased ','<p>Just a basic podcast about a tablet.</p>\r\n<p><a href=\"https://www.walmart.com/ip/onn-7-Tablet/930669857\">https://www.walmart.com/ip/onn-7-Tablet/930669857</a></p>\r\n',129,0,0,'CC-BY-SA','Walmart, Android Go, Tablet',0,0,1),
|
|||
|
(3466,'2021-11-15','Why HPR has less downloads',551,'A short summary on why podcast listening might be on decline.','<p>I did a show about why I do not listen to non-mainstream podcasts as much as I used to. For me two things happened: I switched from being in the car for 16 hours a week to being a remote sales person at home. So the 16 hours I listened to podcasts every week in the car went away. The second reason I reduced was that many of the podcasts I was listening to were presented by people who do not share my values. So I stopped listening to them. The third reason I listen less is the Army opened up the online book library to retired service members and I do a lot of audio books in the moment.</p>\r\n',129,0,0,'CC-BY-SA','podcasts, dowloads',0,0,1),
|
|||
|
(3469,'2021-11-18','Linux Inlaws S01E43: The Great Battle or not',4138,'The Great Battle nor Not','<p>In this episode Martin and one of the Grumpies (as in Grumpy Old Coders)\r\nbattle it out: SQL or NoSQL - which technology is better? If you ever wondered\r\nwhy the Structured Query Language was invented in the first place and why the\r\nhipster abandoned ship for the latest (?) rage of the likes of the NoSQL\r\nvariety, this is for you. Plus: A whole family of never-heard-of sound effects\r\nmake their debut on this bumper of an episode.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>SQL: <a href=\"https://www.iso.org/standard/63555.html\" target=_blank>https://www.iso.org/standard/63555.html</a></li>\r\n<li>NoSQL: <a href=\"https://en.wikipedia.org/wiki/NoSQL\" target=_blank>https://en.wikipedia.org/wiki/NoSQL</a></li>\r\n<li>NoSQL Geek: <a href=\"https://www.nosqlgeek.org\" target=_blank>https://www.nosqlgeek.org</a></li>\r\n<li>ACID compliance: <a href=\"https://en.wikipedia.org/wiki/ACID\" target=_blank>https://en.wikipedia.org/wiki/ACID</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>CAP theorem: <a href=\"https://en.wikipedia.org/wiki/CAP_theorem\" target=_blank>https://en.wikipedia.org/wiki/CAP_theorem</a></li>\r\n<li>TorroDB: <a href=\"https://github.com/gordol/torrodb-server\" target=_blank>https://github.com/gordol/torrodb-server</a></li>\r\n<li>Grumpy Old Coders episode on the Dark Side: <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-11-the-dark-side\" target=_blank>https://soundcloud.com/user-498377588/grumpy-old-coders-ep-11-the-dark-side</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','SQL, NoSQL, Grumpy Old Coders, Hipster databases, mainframes, Execution planners',0,0,1),
|
|||
|
(3448,'2021-10-20','Installing GuixSD',2679,'Rho`n records installing GuixSD to an external USB drive to be run on a Mac Mini computer','<h2>Synopsis</h2>\r\n\r\n<p>In this episode Rho`n records his adventure in installing GuixSD on an external USB drive which will be run on a Mac Mini computer. After overcoming the initial difficulty of finding a keyboard that would connect wirelessly to the Mac Mini while using the Guix installer and some network difficulties, he describes the installation steps.</p>\r\n\r\n<p>Guix has a graphical text based installer. It is reminiscent of the mid to late 90s Debian installers. Even with its old school feel, the installer is very nice. It is well laid out, has good onscreen description for each step of the installation process, and provides ample configuration selections from language, to to key board layout, to desktop and software selection.</p>\r\n\r\n<h2>References</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://guix.gnu.org/\">Guix website</a></li>\r\n <li><a href=\"https://guix.gnu.org/en/manual/en/html_node/System-Installation.html#System-Installation\">Instructions for installing Guix</a> as the main OS</li>\r\n <li><a href=\"https://www.riitek.com/product/k12x.html\">Rii 2.4G Mini Wireless Keyboard with Touchpad Mouse</a>,Lightweight Portable Wireless Keyboard Controller with USB Receiver Remote Control for Windows/ Mac/ Android/ PC/Tablets/ TV/Xbox/ PS3. X1-Black - <a href=\"https://www.amazon.com/gp/product/B00I5SW8MC/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&th=1\">EBay item</a></li>\r\n</ul>\r\n\r\n<h2>Attribution</h2>\r\n\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',293,0,0,'CC-BY-SA','Guix,GuixSD,installer,install,USB drive,Mac Mini,grub rescue',0,0,1),
|
|||
|
(3461,'2021-11-08','Changes to HPR Branding',2441,'Rho\'n, Dave and Ken read the entire email thread related to changing the HPR theme','<p>\r\nWe didn\'t have time to tackle the discussion in last months community news so today we dedicate an entire show to reading out all the comments relating to the HPR Branding.\r\n<br />\r\nSee <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-October/thread.html</a>\r\n</p>\r\n<p>\r\nYour comments are appreciated !\r\n</p>',159,47,0,'CC-BY-SA','HPR, Branding, Intro, Outro',0,0,1),
|
|||
|
(3453,'2021-10-27','Rust 101: Episode 1 - Hello, World!',1348,'In which BlacKernel introduces the cargo tool and goes into detail on the rust hello world program','<h2>Talking Points</h2>\r\n<ul>\r\n <li>main.rs\r\n <ul>\r\n <li>Like main.cpp in C++ or main.c in C</li>\r\n <li>Tells the compiler which file to start with</li>\r\n <li>Can link to other \"<i>crates</i>\" and \"<i>modules</i>\"</li>\r\n </ul></li>\r\n <li>Cargo.toml\r\n <ul>\r\n <li>Keeps track of application metadata</li>\r\n <li>This includes dependencies!</li>\r\n </ul></li>\r\n <li>Functions\r\n <ul>\r\n <li>Strictly typed, like everything in Rust</li>\r\n <li>Declared by <code>fn</code></li>\r\n <li>Argument typed with <code>argument: Type</code></li>\r\n <li>Return typed with <code>-> Type</code> otherwise assumed to return nothing</li>\r\n </ul></li>\r\n <li>The Main Function\r\n <ul>\r\n <li>Like the main functions in C and C++</li>\r\n <li>Where the program starts within the main.rs file</li>\r\n <li>CLI arguments handled by <code>std::env</code>, rather than <code>argv</code> and <code>argc</code> in C</li>\r\n <li>Can return nothing or a <code>Result<()></code></li>\r\n </ul></li>\r\n <li>Macros\r\n <ul>\r\n <li><i>Metafunctions</i> or functions for functions</li>\r\n <li>More general than functions, having flexibility in the number of arguments, etc, but harder to write</li>\r\n </ul></li>\r\n <li>The println! Macro\r\n <ul>\r\n <li>Can take any number of arguments that implement the <code>display</code> trait</li>\r\n <li>Usually things like strings or character literals</li>\r\n <li>Will format them into a string and display it on the terminal</li>\r\n <li>Similar to printf in C</li>\r\n </ul></li>\r\n <li>The Hello World program\r\n <ul>\r\n <li>Can be automagically generated with <code>cargo new</code> and then the name of your application</li>\r\n <li>Located in <code>Name-Of-Application/src/main.rs</code></li>\r\n </ul></li>\r\n\r\n</ul>\r\n\r\n<br>\r\n\r\n<pre>\r\nfn main() {\r\n  println!(\"Hello, world!\");\r\n}\r\n</pre>\r\n\r\n<br>\r\n\r\n\r\n<hr>\r\n\r\n<h2 id=\"show-notes\">Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n <li><a href=\"https://gitlab.com/BlacKernel/rust-101\">Git repo for this miniseries</a></li>\r\n <li><a href=\"https://doc.rust-lang.org/std/\">The Rust Standard Library</a></li>\r\n <li><a href=\"https://doc.rust-lang.org/std/macro.format.html\">The format! macro</a></li>\r\n <li><a href=\"https://doc.rust-lang.org/std/macro.println.html\">The println! macro</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Rust_(programming_language)\">The Rust Programming Language</a></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n\r\n',396,25,1,'CC-BY-SA','rust, programming, hello world, macros, functions',0,0,1),
|
|||
|
(3455,'2021-10-29','Podcast Recommendation: IBM and Quantum computing',193,'Highlights of a podcast from Moore\'s Lobby','<h2 id=\"moores-lobby\">Moore\'s Lobby</h2>\r\n<h3 id=\"ep.-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next\">Ep. 34 | The Latest from the Lab: How IBM Research Is Inventing What\'s Next</h3>\r\n<p><a href=\"https://www.allaboutcircuits.com/podcast/ep-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next\" class=\"uri\">https://www.allaboutcircuits.com/podcast/ep-34-the-latest-from-the-lab-how-ibm-research-is-inventing-whats-next</a></p>\r\n<ol type=\"1\">\r\n<li>Rss feed: <a href=\"https://eetech.libsyn.com/rss\" class=\"uri\">https://eetech.libsyn.com/rss</a></li>\r\n<li>Interview with Dr. Jeffrey Welser\r\n<ul>\r\n<li>VP of Exploratory Science at IBM Research</li>\r\n<li>IBM Release first 2nm chip this year</li>\r\n</ul></li>\r\n<li>Engineers vs Scientists and how they drive innovations</li>\r\n<li>Goal to replace the transistor when Moore\'s Law stops scaling</li>\r\n<li>Managing thermal loads</li>\r\n<li>Finding new structures and materials to control current</li>\r\n<li>Neural nets, image recognition and AI</li>\r\n<li>Quantum computing\r\n<ul>\r\n<li>Discussion starts at 34:35 into the podcast</li>\r\n<li>Richard Feynman, Early 80\'s\r\n<ul>\r\n<li><a href=\"https://www.feynman.com\" class=\"uri\">https://www.feynman.com</a></li>\r\n</ul></li>\r\n<li>qubits\r\n<ul>\r\n<li>superposition state</li>\r\n<li>\"Spooky action at a distance\"</li>\r\n</ul></li>\r\n<li>Encryption\r\n<ul>\r\n<li>Need millions of qubits to break current encryption\r\n<ul>\r\n<li>Only currently over 100 qubits</li>\r\n<li>At least a decade from having enough qubits</li>\r\n<li>Currently have classical systems that cannot be broken by quantum computers\r\n<ul>\r\n<li>The math does not map onto a quantum system</li>\r\n<li>Currently working with NIST to create quantum safe cryptography\r\n<ul>\r\n<li><a href=\"https://csrc.nist.gov/Projects/Cryptographic-Standards-and-Guidelines\" class=\"uri\">https://csrc.nist.gov/Projects/Cryptographic-Standards-and-Guidelines</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Quantum chemistry</li>\r\n<li>Quantum chip - cooling and superconducting\r\n<ul>\r\n<li>Dilution refrigerator\r\n<ul>\r\n<li>Low temperature and pressure</li>\r\n<li>Top is 4 Kelvin, bottom gets to 15 milli Kelvin</li>\r\n<li><a href=\"https://phys.org/news/2019-06-superconducting-quantum-refrigerator.html\" class=\"uri\">https://phys.org/news/2019-06-superconducting-quantum-refrigerator.html</a></li>\r\n<li><a href=\"https://www.nist.gov/si-redefinition/kelvin-introduction\" class=\"uri\">https://www.nist.gov/si-redefinition/kelvin-introduction</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Josephson junction\r\n<ul>\r\n<li>It is the reference Volt as defined by NIST</li>\r\n<li><a href=\"https://www.sciencedirect.com/topics/physics-and-astronomy/josephson-junctions\" class=\"uri\">https://www.sciencedirect.com/topics/physics-and-astronomy/josephson-junctions</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Josephson_voltage_standard\" class=\"uri\">https://en.wikipedia.org/wiki/Josephson_voltage_standard</a></li>\r\n</ul></li>\r\n<li>Use an IBM quantum computer online\r\n<ul>\r\n<li>May 2016 the first quantum computer was put on the \'Net\r\n<ul>\r\n<li><a href=\"https://quantum-computing.ibm.com\" class=\"uri\">https://quantum-computing.ibm.com</a></li>\r\n<li><a href=\"https://newsroom.ibm.com/2016-05-03-IBM-Makes-Quantum-Computing-Available-on-IBM-Cloud-to-Accelerate-Innovation\" class=\"uri\">https://newsroom.ibm.com/2016-05-03-IBM-Makes-Quantum-Computing-Available-on-IBM-Cloud-to-Accelerate-Innovation</a></li>\r\n<li>300,000 users</li>\r\n<li><a href=\"https://qiskit.org/documentation\" class=\"uri\">https://qiskit.org/documentation</a>\r\n<ul>\r\n<li>Qiskit is open-source software for working with quantum computers at the level of circuits, pulses, and algorithms.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ol>\r\n',318,0,0,'CC
|
|||
|
(3463,'2021-11-10','Clonezilla: A backup story',2046,'Rho`n walks through the process of backing up his laptop with Clonezilla','<h2>Notes on the audio quality</h2>\r\n<p>I have been looking into the audio quality issues of my shows. I think I have found a solution to them. Unfortunately, this show was recorded before I discovered it.</p>\r\n<h2>Synopsis</h2>\r\n<p>In today\'s episode, I take the audience along my adventure in backing up my laptop\'s hard drives. During recent OS updates, the kernel updates started to fall. In my efforts to resolve the problem, I made things worse – to the point I decided it was time to reinstall the operating system. To prevent any data loss, I chose Clonezilla to image the drives.</p>\r\n\r\n<p>The Clonezilla Live edition lets you boot into a ncurses menu driven system that walks you through the process of either backing up your hard drives or restoring a Clonezilla backup. Clonezilla backups save space by imaging only the data on your drives (for those filesystems it recognizes – otherwise it uses <a href=\"#dd\">dd</a> to do a sector-by-sector copy)</p>\r\n\r\n<p>Overall the process was very smooth, and, at the end, I was confident to move forward with wiping my main hard drive and reinstalling the operating system knowing I had a way to restore any lost data.</p>\r\n\r\n<h2>References</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://clonezilla.org/\">Clonzilla website</a></li>\r\n <li><a href=\"https://unetbootin.org/\">UNETBOOTIN website</a></li>\r\n <li><a id=\"dd\" href=\"https://en.wikipedia.org/wiki/Dd_(Unix)\">dd</a>, command line utility for *nix like operating systems</li>\r\n</ul>\r\n\r\n<h2>Attribution</h2>\r\n\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n\r\n',293,0,0,'CC-BY-SA','Clonezilla,backup,backups,cloning,hard drives',0,0,1),
|
|||
|
(3454,'2021-10-28','Engineering Notation',736,'Ken runs through the most common Engineering Notation used in HAM radio.','<h1 id=\"engineering-notation\">Engineering Notation</h1>\r\n<h3 id=\"learn-this-table\">Learn this table</h3>\r\n<pre>\r\n giga G 10<sup>9</sup> 1,000,000,000\r\n mega M 10<sup>6</sup> 1,000,000\r\n kilo k 10<sup>3</sup> 1,000\r\n 1\r\nmilli m 10<sup>−3</sup> 0.001\r\nmicro μ 10<sup>−6</sup> 0.000,001\r\n nano n 10<sup>−9</sup> 0.000,000,001\r\n pico p 10<sup>−12</sup> 0.000,000,000,001\r\n</pre>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Engineering_notation\">Engineering notation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Metric_prefix#List_of_SI_prefixes\">List of International System of Units (SI)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3087\">hpr3087 :: Phonetic alphabet</a></li>\r\n</ul>\r\n',30,43,0,'CC-BY-SA','giga,mega,kilo,milli,micro,nano,pico,SI, International System of Units',0,0,1),
|
|||
|
(3457,'2021-11-02','Tables',2260,'How and why I convert tables to lists','<p>\nMobile devices don\'t display them nicely.\nMost tables can be converted into a list:\n</p>\n\n<table>\n <tr>\n <th>OS</th><th>Init</th><th>Pkg</th>\n </tr>\n<tr>\n<td>Fedora</td><td>systemd</td><td>dnf</td>\n</tr>\n<tr>\n<td>Slackware</td><td>BSD-style</td><td>slackpkg</td>\n</tr>\n<tr>\n<td>Gentoo</td><td>OpenRC</td><td>emerge</td>\n</tr>\n</table>\n\n<p>Can be represented as a list. In YAML terms, this is a <em>sequence</em> of <em>mappings</em>.\n</p>\n\n<ul><li>Fedora\n<ul><li>Init system: systemd</li>\n<li>Package manager: dnf</li>\n</ul></li>\n<li>Slackware\n<ul>\n<li>Init system: BSD-style</li>\n<li>Package manager: slackpkg</li>\n</ul></li>\n\n<li>Gentoo\n<ul>\n<li>Init system: OpenRC</li>\n<li>Package manager: emerge</li>\n</ul></li>\n</ul>\n\n<p>A table doesn\'t always translate exactly to a list, but it probably can be restructured. </p>\n\n<table>\n<tr>\n<th>OS</th><th>Open source</th><th>Landed on Mars</th></tr>\n<tr>\n<td>Linux</td><td>Yes</td><td>Yes</td>\n</tr>\n<tr>\n<td>BSD</td><td>Yes</td><td>No</td>\n</tr>\n<tr>\n<td>macOS</td><td>No</td><td>No</td>\n</tr>\n</table>\n\n<p>Could be written like this instead:</p>\n\n<p>Linux and BSD are open source operating systems, while macOS is not. Of these POSIX-compliant systems, only Linux has landed on Mars so far.</p>\n\n<p>That\'s pretty casual and loses the visual impact of a table or a list. So alternately, you could summarize what\'s common and highlight differences:</p>\n\n<p>\nThere are a few Linux systems on Mars.\nNeither BSD or macOS have yet landed on Mars.\n</p>\n\n<ul>\n<li>Linux and BSD are both open source.</li>\n<li>macOS is based partially on open source and includes components from the BSD, KDE, GNU, and other projects.</li>\n</ul>\n',78,4,0,'CC-BY-SA','data,tables,communication',0,0,1),
|
|||
|
(3458,'2021-11-03','Living in the Terminal 2: The Obligatory Sequel',3648,'A very tired BlacKernel tries to handle feedback from the previous episode','<h2>Talking Points</h2>\r\n<ul>\r\n <li>Listener Feedback\r\n <ul>\r\n <li>Dave Morriss and the Markdown/HTML debacle\r\n <ul>\r\n <li>Using validate_html</li>\r\n <li>Podcast logistics etc.</li>\r\n </ul>\r\n </li>\r\n <li>hackerdefo\'s suggestions\r\n <ul>\r\n <li>.less_termcap:<br/>\r\n <pre>\r\nexport LESS_TERMCAP_mb=$(tput bold; tput setaf 2)\r\nexport LESS_TERMCAP_md=$(tput bold; tput setaf 6)\r\nexport LESS_TERMCAP_me=$(tput sgr0)\r\nexport LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4)\r\nexport LESS_TERMCAP_se=$(tput rmso; tput sgr0)\r\nexport LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7)\r\nexport LESS_TERMCAP_ue=$(tput rmul; tput sgr0)\r\nexport LESS_TERMCAP_mr=$(tput rev)\r\nexport LESS_TERMCAP_mh=$(tput dim)\r\nexport LESS_TERMCAP_ZN=$(tput ssubm)\r\nexport LESS_TERMCAP_ZV=$(tput rsubm)\r\nexport LESS_TERMCAP_ZO=$(tput ssupm)\r\nexport LESS_TERMCAP_ZW=$(tput rsupm)\r\n </pre><br/>\r\n .bashrc:<br/>\r\n <pre>\r\nif [ -f $HOME/.less_termcap ];then\r\n . $HOME/.less_termcap\r\nfi\r\n </pre></li>\r\n <li>poca, castero, and gpodder cli</li>\r\n <li>My opinion on Python and Java</li>\r\n <li>ProtonMail Bridge with mutt</li>\r\n </ul>\r\n </li>\r\n <li>Comments from the last episode\r\n <ul>\r\n <li>(Please go to the last episode to read the full comments)</li>\r\n <li>NOTE: If you want a timely response, please email me or mention me on Mastodon</li>\r\n <li>Operat0r: Kids these days! https://www.nethack.org/</li>\r\n <li>b-yeezi: +1 for cnus</li>\r\n <li>sesamemucho: The text</li>\r\n <li>Dave Morriss: Very enjoyable</li>\r\n <li>Gumnos: Using \"c\" to pause in cmus</li>\r\n </ul>\r\n </li>\r\n </ul>\r\n </li>\r\n <li>New Talking Points\r\n <ul>\r\n <li>Here Documents\r\n <pre>\r\ncat > text.txt <<EOF\r\nHello, World!\r\nEOF\r\n </pre>\r\n </li>\r\n <li>NetHack</li>\r\n </ul>\r\n </li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h2>Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=3431\">HPR Episode 3431: Living in the Terminal by BlacKernel</a></li>\r\n <li><a href=\"https://brian-thompson.medium.com/setting-up-the-mutt-mail-client-with-protonmail-49c042486b3\">ProtonMail Bridge with Mutt by Medium</a></li>\r\n <li><a href=\"https://github.com/brokkr/poca/\">poca by brokkr</a></li>\r\n <li><a href=\"https://github.com/xgi/castero\">castero by xgi</a></li>\r\n <li><a href=\"https://gpodder.github.io/docs/user-manual.html#command-line-interface\">gpodder CLI interface</a></li>\r\n <li><a href=\"https://www.nethack.org/\">NetHack (The best game ever)</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n <li>None</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,0,1,'CC-BY-SA','cli, linux, terminal, applications, picks, tired',0,0,1),
|
|||
|
(3459,'2021-11-04','Linux Inlaws S01E42: The Open Source Initiative',4396,'The Open Source Initiative','<p>In this episode our two OAPs host Deb Nicholson, the general manager of the\r\nOpen Source Initiative (OSI). Apart from riveting insights into open source\r\nlicensing we discuss the greater FLOSS ecosystem and Deb\'s views on why\r\nwearing shoes is important in certain contexts, open source standards, law\r\nsuits and the differences between US and Europe among other things.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OSI: <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI\'s FLOSS definition: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Commons Clause license: <a href=\"https://commonsclause.com\" target=_blank>https://commonsclause.com</a></li>\r\n<!-- <li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li> -->\r\n<li>TerminusDB license change: <a href=\"https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/\" target=_blank>https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/</a></li>\r\n<li>Open source licenses: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences\" target=_blank>https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences</a></li>\r\n<li>Open Core model: <a href=\"https://en.wikipedia.org/wiki/Open-core_model\" target=_blank>https://en.wikipedia.org/wiki/Open-core_model</a></li>\r\n<li>Software Freedom Conservancy: <a href=\"https://sfconservancy.org\" target=_blank>https://sfconservancy.org</a></li>\r\n<li>Bruce Perens: <a href=\"https://en.wikipedia.org/wiki/Bruce_Perens\" target=_blank>https://en.wikipedia.org/wiki/Bruce_Perens</a></li>\r\n<li>Loki TV series: <a href=\"https://en.wikipedia.org/wiki/Loki_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Loki_(TV_series)</a></li>\r\n<li>Luca movie: <a href=\"https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1</a></li>\r\n<li>The Internet is made of cats: <a href=\"https://www.youtube.com/watch?v=zi8VTeDHjcM\" target=_blank>https://www.youtube.com/watch?v=zi8VTeDHjcM</a></li>\r\n<li>Gnome and systemd: <a href=\"https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd\" target=_blank>https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd</a></li>\r\n<li>Apparmor Profile: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles</a></li>\r\n<li>Apparmor Profile Extra: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles-extra\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles-extra</a></li>\r\n</ul>\r\n\r\n<p><small><em>Editor\'s Note, 2021-12-09</em>: TerminusDB link changed as requested</small></p>\r\n',384,111,1,'CC-BY-SA','OSI, RMS, Open Core, the Cat Internet, Luca, Loki, open source licensing',0,0,1),
|
|||
|
(3462,'2021-11-09','Metal marbles.',618,'Introduction of new host, with reference to semantic playgrounds.','<h2 id=\"title-metal-marbles.\">Title: Metal marbles.</h2>\r\n<h3 id=\"summary-introduction-of-host-with-reference-to-semantic-playgrounds.\">Summary: Introduction of host, with reference to semantic playgrounds.</h3>\r\n<p>Link to the rust converter recipe, which I found to be cheaper, and more sprayable than buckets of gel or paint-like substances which you might find elsewhere:</p>\r\n<p><a href=\"https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html\" class=\"uri\">https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html</a></p>\r\n<p>In case that link moves, search for tannic acid rust converters, then choose your buffers.</p>\r\n<p>Email:<br />\r\nhpr@spoons.one</p>\r\n<p>Mastodon, though very very rarely:<br />\r\n<span class=\"citation\" data-cites=\"one_of_spoons\">@one_of_spoons</span><span class=\"citation\" data-cites=\"hispagatos.space\">@hispagatos.space</span></p>',398,0,1,'CC-BY-SA','host zen',0,0,1),
|
|||
|
(3472,'2021-11-23','consuming an AQI API',386,'just because the sky is clear, doesn\'t mean the air is safe to breathe','<h2>AQI</h2>\r\n<p>Air Quality Index - measures particles in the air</p>\r\n<ul>\r\n<li>\r\n<p>Ozone </p>\r\n<ul>\r\n<li>good at high altitudes</li>\r\n<li>bad on the earth surface <a href=\"https://en.wikipedia.org/wiki/Ozone#Low_level_ozone\">https://en.wikipedia.org/wiki/Ozone#Low_level_ozone</a></li>\r\n</ul>\r\n</li>\r\n<li>\r\n<p>PM2.5 </p>\r\n<ul>\r\n<li>Particulate Matter, 2.5 micrometers <a href=\"https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter\">https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter</a></li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk\">https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk</a></p>\r\n<h2>Getting AQI data</h2>\r\n<p>Determining air quality in my area is as simple as visiting <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a> and entering my zip code. Although my zip code covers 139.56 square miles, the result is accurate enough for my needs. When my zip code was submitted, the web page did not refresh. This means that the client interface made an API call to the backend server. </p>\r\n<p>It sure would be nice if the AQI status was emailed to my phone every hour, if the AQI was above a certain threshold. </p>\r\n<p>In order to get the data from the API, it is necessary to emulate the request made by the client to the API. This can be accomplished using Firefox.</p>\r\n<ul>\r\n<li>open Firefox</li>\r\n<li>go to <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a></li>\r\n<li>open the Firefox developer tools, either through the menu or with CTRL+SHIFT+i</li>\r\n<li>in the dev tools, select the Network tab</li>\r\n<li>enter the zip code in the form and submit</li>\r\n<li>watch the Network tab for a POST request to https://airnowgovapi.com/reportingarea/get</li>\r\n<li>click on the request in the network tab</li>\r\n</ul>\r\n<p>Another set of tabs are now available to display various bits of information regarding the request. From this data, it is possible to recreate the query. \r\nHowever, I took an even easier route, and right-clicked on the query in the Network tab, and selected <code>Copy > Copy as cURL</code> to get the request as a curl command complete with all necessary arguments prefilled. Since I didn\'t want to write my entire AQI fetching script in bash, I copied the curl command into a text file and ported the request to Ruby. </p>\r\n<h2>The Finished Script</h2>\r\n<pre><code>#!/usr/bin/env ruby\r\nrequire \'net/http\'\r\nrequire \'uri\'\r\nrequire \'json\'\r\n\r\nuri =\"https://airnowgovapi.com/reportingarea/get\"\r\nparsed_uri = URI.parse(uri)\r\npayload={latitude:39.88,longitude:-120.76,stateCode:\'CA\',maxDistance:50}\r\nresponse = Net::HTTP.post_form(parsed_uri, payload)\r\ndata = JSON.parse(response.body)[0]\r\naqi=data[\"aqi\"].to_i\r\ncategory=data[\'category\']\r\nparameter=data[\'parameter\']\r\n\r\noutput= \"#{parameter}: #{aqi} - #{category}\"\r\nputs output\r\n\r\n\r\n/opt/textjezra \"#{output}\"` if aqi > 70\r\n</code></pre>\r\n',243,25,0,'CC-BY-SA','ruby, api, programming',0,0,1),
|
|||
|
(3473,'2021-11-24','My journey into Amateur Radio',616,'Dave explains his journey into Amateur Radio, initial setup and successes.','<h2 id=\"opening\">Opening</h2>\r\n<p>Hello, my name is Dave, and welcome to another exciting episode of Hacker Public Radio. It\'s been a couple of years since my last episode, and I know that HPR is running low on shows. As I have had this one in planning for some time now, I though this was the right time to get it finished.</p>\r\n<h2 id=\"main\">Main</h2>\r\n<p>At the time of recording this, I\'ve been an <a href=\"https://en.m.wikipedia.org/wiki/Amateur_radio\">Amateur Radio</a> licence holder for 6 months. I took the notion of studying and applying for my Foundation licence (the first of three stages to a Full licence) when I read a blog post by Jon Spriggs G7VRI, back in March, entitled <a href=\"https://jon.sprig.gs/blog/post/2184\">Might Amateur Radio be a hobby for you?</a> I saw a <a href=\"https://jon.sprig.gs/blog/post/slideshow/amateur-radio\">presentation</a> by Jon at OggCamp in 2018 in Sheffield where he gave a whistle-stop tour of what Amateur Radio actually is, and how easy it is to get involved in it.</p>\r\n<p>As a bit of background, I was quite involved in the <a href=\"https://en.m.wikipedia.org/wiki/Citizens_band_radio\">CB Radio</a> scene back in the late 80s and early 90s - I was introduced to CB by my dad, whose handle was \"Screwball\", in the 70s... he had a CB rig in his car since as far back as I can remember. I picked up the hobby from him, by actually liberating him of his rig when he stopped using it. Unfortunately it got stolen from my car. C\'est la vie. Yes, my handle back then was \"The Love Bug\" - in fact, it was whilst looking for an alternative to \"Kool Kat\" as a handle that I first used the moniker \"The Love Bug\" - probably in the mid-80s - and it just stuck.</p>\r\n<p>So, after reading Jon\'s blog post, and doing some research into Amateur Radio myself, a whole bunch of things happened at the same time: I bought my first radio - a <a href=\"https://www.baofengradio.com/products/uv-5rtp\">Baofeng UV-5RTP</a> [<a href=\"https://www.amazon.co.uk/dp/B07PWGMT13\">Amazon UK</a>], I joined the <a href=\"https://rsgb.org/\">Radio Society of Great Britain</a> (not a requirement, but I would recommend it), signed up for Essex Ham\'s <a href=\"https://www.essexham.co.uk/train/online-exams/\">Foundation Training Course</a> (not a requirement, but strongly recommended as it\'s geared around the examination, and it\'s free!)</p>\r\n<p>The training took 3 weeks (in my own time), and I applied for my exam as soon as the training was complete. The exam was an hour long, under as close to exam conditions as an online exam would allow, and I was told by the online system that I\'d passed as soon as I submitted my answers. It then took a few days to get the confirmation of passing (and a certificate) in the post, which then allowed me to apply to <a href=\"https://en.m.wikipedia.org/wiki/Ofcom\">Ofcom</a> (the authority for the radio spectrum here in the UK) for my licence and callsign. I was able to choose the suffix of my callsign, and - as BUG was taken - I opted for TLB (for The Love Bug), and thus my callsign is - currently - M7TLB (Mike Seven Tango Lima Bravo). I say \"currently\" - I\'m not allowed to change my callsign, however the callsign is specific not only to me but also to the fact that I\'m a Foundation Licence holder. Therefore, when I go for my Intermediate and then Full licence, I\'ll get new callsigns for each one, each superseding the previous.</p>\r\n<p>Anyhoo, once I got my Foundation licence, I went out that Sunday to log some contacts, or <a href=\"https://en.m.wikipedia.org/wiki/Contact_(amateur_radio)\">QSO</a>s. So I parked up at a high point near to here, put a small aerial on the roof of the car (so that I didn\'t warm up my head when transmitting), and started calling <a href=\"https://en.m.wikipedia.org/wiki/CQ_(call)\">CQ</a> - essentially a way of saying \"I want to talk to somebody\" - \"Seek You\". As part of the licence condi
|
|||
|
(3476,'2021-11-29','My mutt email setup',765,'My humble mutt email setup','\r\n<ol type=\"1\">\r\n<li>Get app password and enter it in a file call pass</li>\r\n</ol>\r\n<pre><code> set my_gpass= "MyAppPassword"</code></pre>\r\n<ol start=\"2\" type=\"1\">\r\n<li><p>Encrypt pass file with <code>\'gpg -e pass\'</code></p></li>\r\n<li><p>Shred pass file with \'shred -uv pass\', which uses verbose mode</p></li>\r\n</ol>\r\n<pre><code> shred - overwrite a file to hide its contents, and optionally delete it\r\n -u deallocate and remove file after overwriting\r\n -v, --verbose, show progress</code></pre>\r\n<ol start=\"4\" type=\"1\">\r\n<li><p>Use gpg encrypted key to open Gmail</p>\r\n<ul>\r\n<li>in .muttrc <code> source \"gpg -d ~/.mutt/pass.gpg |\" </code></li>\r\n</ul></li>\r\n<li><p>Source colors file: Custom color scheme</p></li>\r\n</ol>\r\n<pre><code> ## Custom - Shows a gray line on tagged emails\r\n color index yellow brightblack "~T ~N | ~T"</code></pre>\r\n<p><em>Tagged emails</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3476/tagged_emails.png\" alt=\"Tagged emails\" /></p>\r\n<ol start=\"6\" type=\"1\">\r\n<li>Source hooks file: Redirect default save path for email sorting</li>\r\n</ol>\r\n<pre><code> ## Newsletters - Technology ##\r\n save-hook '~f lists.linuxjournal.com' ='Linux'\r\n save-hook '~f arch-dev-public' =Newsletters\r\n save-hook '~f noreply@mmorpg.com' =Newsletters\r\n save-hook '~f ocw@mit.edu'|'~b Opencourseware' =Newsletters\r\n save-hook '~s Linux'|'~s Foundation' ='Newsletters'\r\n save-hook '~f weekly@raspberrypi.org' =Newsletters\r\n save-hook '~f hackspace@raspberrypi.org' =Newsletters\r\n save-hook '~f @pragmaticbookshelf.com' =Newsletters\r\n save-hook '~f comixology@e.comixology.com' =Newsletters\r\n save-hook '~f mrgroove@groovypost.com' =Newsletters\r\n save-hook '~f oreilly@post.oreilly.com' =Newsletters\r\n save-hook '~f mark ~s arduino' =Bookmarks/Arduino\r\n save-hook '~f smith@torproject.org' =Newsletters/TorProject\r\n save-hook '~f info@torproject.org' =Newsletters/TorProject\r\n save-hook '~f editor@eff.org' =Newsletters.EFFdotOrg\r\n save-hook '~f contact@diyodemag.com' =Newsletters/DIYODE-Magazine\r\n save-hook '~f weekly-update@allaboutcircuits.com' =Newsletters/Circuits\r\n\r\n ## Recipes ##\r\n save-hook '~f dora ~s Recipe | ~s Recipe | ~B recipe | ~B casserole | ~B bake | ~B "omaha steaks" ' ='dabrat1972/Recipes'</code></pre>\r\n<ol start=\"7\" type=\"1\">\r\n<li>Source aliases file: Frequently used contacts</li>\r\n</ol>\r\n<pre><code> alias tags tags@hackerpublicradio.org\r\n alias Dave_Morriss Dave Morriss <perloid@autistici.org></code></pre>\r\n<ul>\r\n<li>HTML email\r\n<ul>\r\n<li>Install lynx</li>\r\n</ul></li>\r\n<li>Open URL\'s\r\n<ul>\r\n<li>Install urlscan</li>\r\n<li>Capital \'U\' open URL dialog</li>\r\n</ul></li>\r\n<li>Open pictures\r\n<ul>\r\n<li>Install feh</li>\r\n</ul></li>\r\n<li>PDF reader\r\n<ul>\r\n<li>Zathura\r\n<ul>\r\n<li><a href=\"https://bbs.archlinux.org/viewtopic.php?id=220572\" class=\"uri\">https://bbs.archlinux.org/viewtopic.php?id=220572</a></li>\r\n<li>Install zathura-pdf-mupdf and zathura-pdf-poppler\r\n<ul>\r\n<li>Just needed zathura-pdf-mupdf, zathura-pdf-poppler was included with zathura.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>mailcap - metamail capabilities file\r\n\r\nDESCRIPTION\r\n The mailcap file is read by the metamail program to determine how to display non-text at the local site.</code></pre>\r\n<pre><code> image/*; feh %s; test=test -n "$DISPLAY";\r\n text/html; lynx -nonumbers -dump %s; copiousoutput; nametemplate=%s.html\r\n application/pdf; zathura /dev/stdin</code></pre>\r\n<h2 id=\"more-reading\">More readin
|
|||
|
(3485,'2021-12-10','50 years since the 1st Edition of Unix was published',747,'Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist.','<h1 id=\"top-ten-of-the-first-unix-commands\">top ten of the first unix commands</h1>\r\n<p>50 years after the 1st Edition of Unix was published, Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist (38) and how many are not installed by default (23).</p>\r\n<p>Thanks to <a href=\"https://twitter.com/bsdimp\">@bsdimp</a> on twitter for the post. Also to <a href=\"https://fosstodon.org/@atoponce/107219163009353638\">@atoponce@fosstodon.org</a> and <a href=\"https://mastodon.social/@obra/107217491430371868\">@obra@mastodon.social</a> for the tip.</p>\r\n<h3 id=\"packages-i-dont-have-installed\">Packages I don\'t have installed</h3>\r\n<p>Many are available under another name but I have not installed them. Seven of the of the twenty two relates to tapes.</p>\r\n<pre>\r\nB -- language\r\nbas -- basic\r\nbcd -- binary coded decimal conversion\r\nboot -- reboot system\r\nchdir -- change working directory\r\ncheck -- file system consistency check\r\ndb -- debug\r\ndbppt -- dump binary paper tape\r\ndsw -- delete interactively\r\ndtf -- DECtape format\r\nfor -- fortran\r\nform -- form letter generator\r\nhup -- hang up typewriter\r\nlbppt -- load binary paper tapes\r\nrew -- rewind tape\r\nrkd -- dump RK disk to tape\r\nrkf -- format RKO3 disk pack\r\nrkl -- reload RK disk from tape\r\nroff -- format text\r\nsdate -- set date and time\r\ntap -- manipulate DECtape\r\ntm -- provide time information\r\nun -- undefined symbols\r\n</pre>\r\n\r\n<h3 id=\"top-10-most-popular-50-year-old-commands-\">Top 10 most popular 50 year old commands !</h3>\r\n<pre>\r\n 1 10108 ls\r\n 2 2847 find\r\n 3 1985 rm\r\n 4 1482 mv\r\n 5 887 cat\r\n 6 649 for\r\n 7 544 mkdir\r\n 8 341 cp\r\n 9 280 rmdir\r\n 10 202 df\r\n</pre>\r\n',30,0,1,'CC-BY-SA','unix, unix commands',0,0,1),
|
|||
|
(3474,'2021-11-25','H P R and Audio Fun',671,'Comments on show and audio processing ','<p><a href=\"https://matrix.to/#/#HPR:matrix.org\" class=\"uri\">https://matrix.to/#/#HPR:matrix.org</a></p>\r\n<ul>\r\n<li><p>media > text > keywords<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/Stream_to_Text_with_Keywords.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/Stream_to_Text_with_Keywords.sh</a></p></li>\r\n<li><p>NICE !<br />\r\n<a href=\"https://hackerpublicradio.org/rss-future.php\" class=\"uri\">https://hackerpublicradio.org/rss-future.php</a></p></li>\r\n<li><p>broken ?<br />\r\n<a href=\"https://gitlab.anhonesthost.com/HPR/HPR_Public_Code/\" class=\"uri\">https://gitlab.anhonesthost.com/HPR/HPR_Public_Code/</a> ( broken ? )</p></li>\r\n<li><p>Donate!<br />\r\n<a href=\"https://secure.anhonesthost.com/store/hpr-hosting-cost-donations\" class=\"uri\">https://secure.anhonesthost.com/store/hpr-hosting-cost-donations</a></p></li>\r\n<li><p>android compressor / limiter<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=io.github.kushiheim.glycox\" class=\"uri\">https://play.google.com/store/apps/details?id=io.github.kushiheim.glycox</a></p></li>\r\n<li><p>notes on Linux Audio<br />\r\n<a href=\"https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY/edit#heading=h.wp1n4j8ybidv\" class=\"uri\">https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY/edit#heading=h.wp1n4j8ybidv</a></p></li>\r\n<li><p>possible automated silence detection to be used for noise profile !!!! ( let\'s talk about it ! )<br />\r\n<a href=\"https://stackoverflow.com/questions/45526996/split-audio-files-using-silence-detection/46001755\" class=\"uri\">https://stackoverflow.com/questions/45526996/split-audio-files-using-silence-detection/46001755</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','audio',0,0,1),
|
|||
|
(3491,'2021-12-20','My Github and flickmetrix',1553,'Bear with me as I go though my github over the past year some real gems in here','<ul>\r\n<li><p>main github (other stuff one there like SC_BADGER etc)<br />\r\n<a href=\"https://github.com/freeload101\" class=\"uri\">https://github.com/freeload101</a></p></li>\r\n<li><p>flickmetrix script<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/7279338b610c914812169e107cbbea45e4ca5254/fu.txt#L102\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/7279338b610c914812169e107cbbea45e4ca5254/fu.txt#L102</a></p></li>\r\n<li><p>High_Contrast_Toggle_AutoHotkey.ahk<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey\" class=\"uri\">https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey</a></p></li>\r\n<li><p>smart nmap<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/NMAP_SMART_FAST.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/NMAP_SMART_FAST.sh</a></p></li>\r\n<li><p>clean up script for media cool find regex here<br />\r\n<a href=\"https://raw.githubusercontent.com/freeload101/SCRIPTS/master/Bash/RMEMPTY.sh\" class=\"uri\">https://raw.githubusercontent.com/freeload101/SCRIPTS/master/Bash/RMEMPTY.sh</a></p></li>\r\n<li><p>good movies page<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/flickmetrix_good_movies.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/flickmetrix_good_movies.sh</a></p></li>\r\n<li><p>mobile mass SSL depinning script<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/JS/universal-android-ssl-pinning-bypass-with-frida.js\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/JS/universal-android-ssl-pinning-bypass-with-frida.js</a></p></li>\r\n<li><p>android debloat and dump app names/ with file names<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_Debloat_N_Dump.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_Debloat_N_Dump.bat</a></p></li>\r\n<li><p>help debug CPU hogging apps in android logs<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_logcat_cat.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_logcat_cat.sh</a></p></li>\r\n<li><p>script that kills all processes and then cleans temp files etc<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/BleachBit_Quickkill.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/BleachBit_Quickkill.bat</a></p></li>\r\n<li><p>Cool script that debloats,hardends,installs cygwin and chocolatey apps<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Chocolatey_Cygwin.cmd\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Chocolatey_Cygwin.cmd</a></p></li>\r\n<li><p>dump windows system info ,dxdiag info and battery info<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/DUMP_WINDOWS_INFO.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/DUMP_WINDOWS_INFO.bat</a></p></li>\r\n<li><p>youtube downloader (now yt-dlp) script to mass download multi threaed media all at the same time.<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></p></li>\r\n<li><p>bunch of \'old\' one liners etc<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/fu.txt\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/fu.txt</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','scripts,hacking,github,windows,linux',0,0,1),
|
|||
|
(3467,'2021-11-16','Protonmail in the terminal',2262,'One way of doing Protonmail in the terminal.','<p>I use email in the terminal with a combination of:</p>\r\n<dl>\r\n<dt>protonmail-bridge-cli</dt>\r\n<dd>local IMAP server to fetch Protonmail mails\r\n</dd>\r\n<dt>tmux</dt>\r\n<dd>to run protonmail-bridge in\r\n</dd>\r\n<dt>isync (or offlineimap etc)</dt>\r\n<dd>to sync IMAP with maildirs\r\n</dd>\r\n<dt>notmuch</dt>\r\n<dd>to tag and search mails\r\n</dd>\r\n<dt>afew</dt>\r\n<dd>to move mails found by certain notmuch queries in certain maildirs\r\n</dd>\r\n<dt>alot</dt>\r\n<dd>to read, compose, search and tag mails\r\n</dd>\r\n<dt>msmtp</dt>\r\n<dd>to send mails\r\n</dd>\r\n<dt>w3m (or lynx etc)</dt>\r\n<dd>to read HTML mails in the terminal\r\n</dd>\r\n<dt>rsync</dt>\r\n<dd>to copy archived mails\r\n</dd>\r\n<dt>a shell function and an alias</dt>\r\n<dd>to make it all less ridiculous\r\n</dd>\r\n</dl>\r\n<p>To most, Thunderbird will be suitable, the target audience here is unreasonable people.</p>\r\n<h3>Complete Show Notes</h3>\r\n<p>\r\nFollow this link for the complete show notes: <a href=\"https://hackerpublicradio.org/eps/hpr3467/\">https://hackerpublicradio.org/eps/hpr3467/</a>\r\n</p>',399,0,1,'CC-BY-SA','email,protonmail,alot,afew,notmuch,mbsync',0,0,1),
|
|||
|
(3475,'2021-11-26','How I Watch Everything Using Open Source Software',878,'Using Libreelec, Kodi, a tuner, and a Raspberry Pi to create a great media center','<p>I\'ve been using this setup or one similar for several years now and it has worked out very well.</p>\r\n<p>Hardware:</p>\r\n<ul>\r\n<li>Clearstream TV antenna</li>\r\n<li>Coax cable</li>\r\n<li>Hauppage WinTV-dual HD USB Dual Tuner</li>\r\n<li>Raspberry Pi 4 4GB</li>\r\n<li>1 TB SSD connected via USB 3</li>\r\n<li>HDMI cable</li>\r\n</ul>\r\n<p>Software:</p>\r\n<ul>\r\n<li>Libreelec OS</li>\r\n<li>Kodi</li>\r\n<li>TVheadend server</li>\r\n<li>TVheadend client</li>\r\n<li>Debrid addon media streamer</li>\r\n</ul>\r\n<p>Any questions or comments you can reach me at minnix at minnix dot dev</p>\r\n',375,0,0,'CC-BY-SA','libreelec,kodi,raspberry pi,tvheadend',0,0,1),
|
|||
|
(3477,'2021-11-30','Picking a Forth',1313,'Available forths, old and new','<ul>\r\n<li><p>arduino as a sketch download pdf at <a href=\"https://wiki.forth-ev.de\">wiki.forth-ev.de</a>, then cut and paste $</p></li>\r\n<li><p>the arduino controlled by eforth, search for this ter$</p></li>\r\n<li><p>amforth<br />\r\n<a href=\"https://amforth.sourceforge.net\">amforth.sourceforge.net</a></p></li>\r\n<li><p>flashforth<br />\r\n<a href=\"https://flashforth.com\">flashforth.com</a></p></li>\r\n<li><p>resources<br />\r\n<a href=\"https://arduino-forth.com\">arduino-forth.com</a><br />\r\n<a href=\"https://forth.org\">forth.org</a><br />\r\n<a href=\"https://forth.org/eforth.html\">forth.org/eforth.html</a><br />\r\n</p></li>\r\n</ul>\r\n',326,0,0,'CC-BY-SA','forth, arduino, history',0,0,1),
|
|||
|
(3478,'2021-12-01','Audio Wiring Hack on a Classroom Podium',1093,'Listen in while I hack the wiring on our classroom podium for custom audio routing.','<p>In this episode I take you along for the ride as I hack the wiring in a classroom podium so that I can show musical scores on the Elmo document camera while playing audio through the podium\'s laptop VGA audio source. Without this hack, the students could either see the score, or they could hear the music, but not both. This simple hack installing two jumper wires allows them to see the score and hear the music at the same time, which is important in my classes. I could already do this by using a PDF music score on my laptop while playing the audio file, but this allows me to use a paper score and audio from my laptop at once. It essentially acts as an audio splitter, sending the audio signal to two channels at once.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li>Music from Kimiko Ishizaka\'s <em>The Open Well-Tempered Clavier</em>: <a href=\"https://www.welltemperedclavier.org/\">https://www.welltemperedclavier.org/</a>, used by permission of its <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n <li><a href=\"https://www.flickr.com/gp/137675441@N05/0K3EVq\">Pictures of the <em>Podium Audio Wiring Hack</em></a></li>\r\n</ul>\r\n\r\n',238,0,0,'CC-BY-SA','audio, wiring, higher education',0,0,1),
|
|||
|
(3484,'2021-12-09','My vim setup with GnuPG',501,'My vim setup with the GnuPG vim plugin','<h2 id=\"using-the-gnupg-vim-plugin-to-edit-encrypted-files.\">Using the GnuPG vim plugin to edit encrypted files.</h2>\r\n<ul>\r\n<li><p>See show hpr3476 My mutt email setup<br />\r\n<a href=\"https://www.hackerpublicradio.org/eps.php?id=3476\" class=\"uri\">https://www.hackerpublicradio.org/eps.php?id=3476</a></p></li>\r\n<li><p>GnuPG Vim Plugin on vim.org<br />\r\n<a href=\"https://www.vim.org/scripts/script.php?script_id=3645\" class=\"uri\">https://www.vim.org/scripts/script.php?script_id=3645</a></p></li>\r\n<li><p>GnuPG Vim Plugin on Github<br />\r\n<a href=\"https://github.com/vim-scripts/gnupg.vim\" class=\"uri\">https://github.com/vim-scripts/gnupg.vim</a></p></li>\r\n</ul>\r\n<p><em>Line to directly clone from github</em></p>\r\n<pre><code> git clone https://github.com/vim-scripts/gnupg.vim</code></pre>\r\n<p>From <code>man 1 gpg-agent</code>:</p>\r\n<blockquote>\r\n<p>You should always add the following lines to your <code>.bashrc</code> or whatever initialization file is used for all shell invocations:</p>\r\n<pre><code>GPG_TTY=`tty`\r\nexport GPG_TTY</code></pre>\r\n<p>It is important that this environment variable always reflects the output of the tty command.</p>\r\n</blockquote>\r\n<p><em>.bashrc snippet</em></p>\r\n<pre><code> ## GPG Vim\r\n GPG_TTY=`tty`\r\n export GPG_TTY\r\n export EDITOR=vim</code></pre>\r\n<p><em>GnuPG folder structure</em></p>\r\n<pre><code> [mark@fedora-lt ~]$ tree .vim\r\n .vim\r\n ├── plugin\r\n │ └── vim-gnupg\r\n │ ├── autoload\r\n │ │ └── gnupg.vim\r\n │ ├── doc\r\n │ │ └── gnupg.txt\r\n │ ├── plugin\r\n │ │ └── gnupg.vim\r\n │ └── README.md\r\n └── spell\r\n ├── en.utf-8.add\r\n └── en.utf-8.add.spl</code></pre>\r\n<p><em>vimrc</em></p>\r\n<pre><code>set tabstop=2 softtabstop=0 expandtab shiftwidth=2 smarttab textwidth=80\r\nsyntax on\r\nautocmd BufRead,BufNewFile *.log set filetype=logtalk\r\nset spell spelllang=en_us</code></pre>\r\n<p>Generate gpg full key<br />\r\n<code>gpg --full-generate-key</code></p>\r\n<p>or just a regular one, with less options<br />\r\n<code>gpg --gen-key</code></p>\r\n<p>Encrypt the file in question, with -r as the recipient<br />\r\nIn this case, I used part of the comment as the recipient</p>\r\n<p><em>Picture 1</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3484/picture001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3484/picture001_thumbnail.png\" alt=\"Picture 1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p>This is more like it.<br />\r\n<code>gpg -e -r test thisIsMyTestFile.txt</code></p>\r\n<p>Now test edit the file<br />\r\n<code>vim thisIsMyTestFile.txt.gpg</code></p>\r\n<p><em>Picture 2</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3484/picture002.png\" alt=\"Picture 2\" /></p>\r\n<p>It is a good idea to shred the original text file</p>\r\n<pre><code> shred - overwrite a file to hide its contents, and optionally delete it\r\n -u deallocate and remove file after overwriting\r\n -v, --verbose, show progress</code></pre>\r\n<p>Example: <code>shred -u -v foo.txt</code></p>\r\n',318,11,0,'CC-BY-SA','vim, plugin, lightweight',0,0,1),
|
|||
|
(3486,'2021-12-13','Unleash the true potential of GNU nano text editor',516,'Turn GNU nano text editor into a fancy, good looking & powerful editor','<p>Text editors are highly subjective and highly opinionated commodities. Everyone is aware of infamous rivalry between users of Emacs and Vi/Vim. Every single text editor has its own strengths and weaknesses. At the end of the day it\'s the question of your personal preferences and muscle memory when it comes to default key-bindings. Both Emacs and Vim have a learning curve. Steepness of that curve depends on the person\'s background and interests. Hey, but today I\'m not here to talk about Emacs and Vim. I\'m here to talk about a simple, easy to use and almost ever present text editor called <code>GNU nano</code>. So what exactly is this <code>nano</code> text editor? Well, according to documentation available on <code>GNU nano</code>\'s <a href=\"https://nano-editor.org/\">website</a>,</p>\r\n<blockquote>\r\n<p>GNU nano was designed to be a free replacement for the Pico text editor, part of the Pine email suite from The University of Washington. It aimed to \"emulate Pico as closely as is reasonable and then include extra functionality\".</p>\r\n</blockquote>\r\n<p>Pico and Pine email suites are still around so what was the need to create <code>nano</code> in the first place? The answer is license. Pico and Pine email suites nowadays are available under Apache-2.0 license but that always wasn\'t the case and this ambiguity in the original licensing terms of the Pico editor led to the creation of <code>nano</code>. It was first created in 1999 with the name TIP (an acronym for TIP Isn\'t Pico), by Chris Allegretta. The name was changed to <code>nano</code> on January 10th, 2000 to avoid a naming conflict with the existing Unix utility tip. The name comes from the system of SI prefixes, in which <code>nano</code> is 1000 times larger than pico. In February 2001, <code>nano</code> became a part of the GNU Project. BTW if you want to know more about SI prefixes, I\'d highly recommend you to listen to <a href=\"https://hackerpublicradio.org/eps.php?id=3454\">HPR episode 3453 - Engineering notation</a> by Ken Fallon.</p>\r\n<p><code>nano</code> is really small in footprint and is relatively easy to use compared to Emacs and Vim and perhaps this is the reason why you\'d invariably find it already installed on almost all GNU/Linux distributions. If you have ever used <code>nano</code> before you might have noticed that it looks kinda boring; there are no line-numbers nor there is any syntax highlighting and spell-checking also seems absent. But this is not true. <code>nano</code> has all of these features and even some more like regex searches, indentation, multiple buffers, available at its disposal. Then why does it come across as a plain Jane? The short answer is, I honestly don\'t know! For some unknown and obscure reasons many of <code>nano</code>\'s cool features are disabled by default. This results in <code>nano</code> coming across as a plain Jane little text editor that is uncool. And as I mentioned earlier, that is not true. But worry not! It is so darn easy to unleash the true potential of <code>nano</code> and make it shine. Are you ready? Great! Let\'s do it together then!</p>\r\n<p>First thing we need to to do is create a file with the name <code>.nanorc</code> in the <code>$HOME</code> directory. Open your terminal emulator and run,</p>\r\n<pre class=\"text\"><code>touch $HOME/.nanorc\r\n</code></pre>\r\n<p>We\'d also need to create a directory called <code>Nano_Backups</code> in our <code>Documents</code> directory. To do so run the following command,</p>\r\n<pre class=\"text\"><code>mkdir -p $HOME/Documents/Nano_Backups\r\n</code></pre>\r\n<p>Next open that <code>.nanorc</code> file and simply paste the following content in it,</p>\r\n<pre class=\"text\"><code>set atblanks\r\nset autoindent\r\nset backup\r\nset backupdir "/home/USERNAME/Documents/Nano_Backups"\r\nset boldtext\r\nset constantshow\r\nset cutfromcursor\r\nset indicator\r\nset linenumber
|
|||
|
(3488,'2021-12-15','Binaural 3d audio recording, please listen at normal speed with good head phones.',302,'recorded November 19 2021 quick storm.','<p>Recorded November 19 2021 quick storm. Please search Binaural on HPR for similar recordings and description of procedure, enjoy and have a glorious 2022.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=0785\">hpr0785 :: binaural recording</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=0792\">hpr0792 :: Binaural Recording</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2338\">hpr2338 :: Binaural recording 2 off to work</a></li>\r\n</ul>\r\n',110,101,0,'CC-BY-SA','Binaural, storm, thunder',0,0,1),
|
|||
|
(3479,'2021-12-02','Linux Inlaws S01E49: Version Control Systems and why bother',3414,'Version Control Systems and why bother','<p>In this episode our two heroes contemplate the ins and outs of version\r\ncontrol systems (VCS) and how to maintain sanity using them. Particular focus\r\nis on the newer generation of such as git which enabled large-scale community\r\nprojects such as the Linux kernel, programming languages like Rust and Python\r\nand other shenanigans. Including a crash course on version control systems\r\n- you may credits at your local third-level education facility for listening\r\nto this episode. Just tell them the Inlaws sent you :-). Plus Martin reveals\r\nhis favourite Pay TV channel and his gun-buying habits being a minor. Don\'t\r\nmiss this episode if you\'re a minor and want to buy a gun in certain countries\r\n(details as part of the episode! :-).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>V-Model: <a href=\"https://en.wikipedia.org/wiki/V-Model\" target=_blank>https://en.wikipedia.org/wiki/V-Model</a></li>\r\n<li>Mercurial: <a href=\"https://www.mercurial-scm.org\" target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>Concurrent Version Control System (CVS): <a href=\"https://cvs.nongnu.org\" target=_blank>https://cvs.nongnu.org</a></li>\r\n<li>Minix: <a href=\"https://www.minix3.org\" target=_blank>https://www.minix3.org</a></li>\r\n<li>Bazaar: <a href=\"https://bazaar.canonical.com/en\" target=_blank>https://bazaar.canonical.com/en</a></li>\r\n<li>Subversion (SVN): <a href=\"https://subversion.apache.org\" target=_blank>https://subversion.apache.org</a></li>\r\n<li>Git: <a href=\"https://git-scm.com\" target=_blank>https://git-scm.com</a></li>\r\n<li>Bitkeeper: <a href=\"https://www.bitkeeper.org\" target=_blank>https://www.bitkeeper.org</a></li>\r\n<li>IBM 390: <a href=\"https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP9000.html\" target=_blank>https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP9000.html</a></li>\r\n<li>gitea: <a href=\"https://gitea.io\" target=_blank>https://gitea.io</a></li>\r\n<li>Special K: <a href=\"https://en.wikipedia.org/wiki/Special_K\" target=_blank>https://en.wikipedia.org/wiki/Special_K</a></li>\r\n<li>Special K (song): <a href=\"https://en.wikipedia.org/wiki/Special_K_(song)\" target=_blank>https://en.wikipedia.org/wiki/Special_K_(song)</a></li>\r\n<li>Special K (former country, the Wikipedia page is slightly outdated): <a href=\"https://en.wikipedia.org/wiki/United_Kingdom\" target=_blank>https://en.wikipedia.org/wiki/United_Kingdom</a></li>\r\n<li>Imperium: <a href=\"https://www.imdb.com/title/tt4781612/?ref_=fn_al_tt_2\" target=_blank>https://www.imdb.com/title/tt4781612/?ref_=fn_al_tt_2</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Version control systems, git, subversion, mercurial, bazaar, how to buy guns as a minor in NL',0,0,1),
|
|||
|
(3483,'2021-12-08','Pinephone64 review',563,'Sigflup got a pinephone and wants to talk about it. ','<p>ringtone location: <code>/usr/share/sounds/freedesktop/stereo</code></p>\r\n\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3483/hpr_pine.jpg\" /><br />\r\nGimp on a cellphone, for obvious reasons.</p>\r\n\r\n\r\n<h3>Links</h3>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/PinePhone\">wikipedia: https://en.wikipedia.org/wiki/PinePhone</a></li>\r\n<li><a href=\"https://www.pine64.org/pinephone/\">Official website: https://www.pine64.org/pinephone/</a></li>\r\n<li><a href=\"https://wiki.pine64.org/index.php/PinePhone\">PinePhone Wiki: https://wiki.pine64.org/index.php/PinePhone</a></li>\r\n</ul>\r\n',115,0,0,'CC-BY-SA','linux,cellphone,pinephone,mobie phone',0,0,1),
|
|||
|
(3505,'2022-01-07','A DX with Hotel Bravo 9 Hotel November Tango',2890,'Ken (PA7KEN) and Beni (HB9HNT) talk about getting your HAM ticket in Switzerland','<h3>HAM Radio Organizations</h3>\r\n<p>\r\nThe HAM Page of the Swiss Federal Office of Communications, BAKOM: <a href=\"https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/frequenznutzung-mit-oder-ohne-konzessionen/amateurfunk.html\">https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/frequenznutzung-mit-oder-ohne-konzessionen/amateurfunk.html</a>\r\n</p>\r\n<p>\r\nUnion of Swiss Short Wave Amateurs, they manage the local associations and the use of the frequencies for relays and automated stations: <a href=\"https://www.uska.ch/en/\">https://www.uska.ch/en/</a>\r\n</p>\r\n\r\n<h3>Training</h3>\r\n\r\n<p>\r\nMost likely the best way to prepare for the exam is attending a preparation course from a local Association, of have a brother who did and forwarded all the background info and documents to me. ;) But apart from having a brother I did the following:\r\n</p>\r\n<p>\r\nThe online version of the books I read: <a href=\"https://www.darc.de/der-club/referate/ajw/darc-online-lehrgang/\">https://www.darc.de/der-club/referate/ajw/darc-online-lehrgang/</a> - again in German. They\'re mainly geared towards the German exams but the knowledge contained is useful for the Swiss exams, too.\r\n</p>\r\n<p>\r\nI mainly used the HamRadioTrainer to prepare for the exam. This is a Windows application which however works pretty well in wine. I was told that the Swiss questions are rather old, 2017ish.\r\n</p>\r\n<p>\r\nI was told that there are mobile apps with more recent questions but I couldn\'t be bothered to check whether they exist on F-Droid.\r\n</p>\r\n<p>\r\nThe BAKOM also has a site about the exams, containing PDFs with example questions, of course again everything in German: <a href=\"https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/funkerpruefungen/amateurfunk-pruefungen.html\">https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/funkerpruefungen/amateurfunk-pruefungen.html</a>\r\n</p>',288,43,0,'CC-BY-SA','Swiss,BAKOM,HamRadioTrainer,HB9',0,0,1),
|