Site Map - skip to main content - dyslexic font - mobile - text - print

Hobby Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.

Welcome to HPR the Community Podcast Network

We started producing shows as Today with a Techie on 2005-09-19, 13 years, 4 months, 5 days ago. Our shows are produced by listeners like you and can be on any topic that "are of interest to hobbyists". If you listen to HPR then please consider contributing one show a year. If you record your show now it could be released in 10 days.

Meet the team

Please help out tagging older shows !

Latest Shows

hpr2730 :: Resizing images for vcard on Android

Automating the steps needed to get images formatted for VCard import into Android phones

Hosted by Ken Fallon on 2019-01-18 is flagged as Explicit and released under a CC-BY-SA license.
Tags: GraphicsMagick, ImageMagick, VCard, Android, LinageOS.
Listen in ogg, spx, or mp3 format. Comments (0)

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.

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 stackoverflow that hinted that the aspect ratio was important. And sure enough it was.

starting with jelly bean (4.1), android now supports contact images that are 720x720.
before, starting with ICS (4.0), android has supported contact images that are 256x256.
and before that, contact photos had just a size of a thumbnail - 96x96.

Stack exchange

I tried a 720x720 on a few phones but decided to settle on 256x256 for now.

To do image manipulation, I tend to use the GraphicsMagick tools instead of the more popular ImageMagick suite. You should be able to achieve the same result in either.

My requirements were:

  • The images should be scaled so that the maximum height/width shrinks to 256, maintaining the aspect ratio.
  • The images should always be 256x256 in size.
  • Scaled images should be padded and centered on a white background.
  • All color profile information should be removed.

To use an example I took the following image and saved it as Linus_Torvalds.jpg

By Krd (photo)Von Sprat (crop/extraction) - File:LinuxCon Europe Linus Torvalds 03.jpg, CC BY-SA 4.0, Link

Step one is to use the -size 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.

$ gm convert -size 256x256 "Linus_Torvalds.jpg" Linus_Torvalds_1.jpg
$ gm identify Linus_Torvalds_1.jpg Linus_Torvalds_1.jpg JPEG 366x509+0+0 DirectClass 8-bit 56.1Ki 0.000u 0m:0.000002

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 -resize option.

$ gm convert -size 256x256 "Linus_Torvalds.jpg" -resize 256x256 Linus_Torvalds_2.jpg
$ gm identify Linus_Torvalds_2.jpg
Linus_Torvalds_2.jpg JPEG 184x256+0+0 DirectClass 8-bit 47.7Ki 0.000u 0m:0.000001s

So this has done a good job at scaling the image down. It's now scaled correctly so that the biggest edge is scaled down to 256. In this case it was the height but the width is now shorter than what we need. We do want to maintain the aspect ratio so that we don't distort the image but 184x256 is not 1:1 aspect ratio nor is it the needed dimensions of 256x256.

The solution to this is to use the -extent command.

$ gm convert -size 256x256 "Linus_Torvalds.jpg" -resize 256x256 -extent 256x256 Linus_Torvalds_3.jpg
$ gm identify Linus_Torvalds_3.jpg
Linus_Torvalds_3.jpg JPEG 256x256+0+0 DirectClass 8-bit 48.0Ki 0.000u 0m:0.000001s

This gives us the correct size and a 1:1 aspect ratio, but the image is left justified. To fix this we need to use the -gravity command. That needs to be the first argument of the command. Finding the correct order of the commands took some trial and error.

$ gm convert -gravity center -size 256x256 "Linus_Torvalds.jpg" -resize 256x256 -extent 256x256 Linus_Torvalds_4.jpg
$ gm identify Linus_Torvalds_4.jpg
Linus_Torvalds_4.jpg JPEG 256x256+0+0 DirectClass 8-bit 48.5Ki 0.000u 0m:0.000001s

Finally we remove all profile information using +profile which should make the image more generic.

$ gm convert -gravity center -size 256x256 "Linus_Torvalds.jpg" -resize 256x256 -extent 256x256 +profile "*" Linus_Torvalds_5.jpg
$ gm identify Linus_Torvalds_5.jpg
Linus_Torvalds_5.jpg JPEG 256x256+0+0 DirectClass 8-bit 5.7Ki 0.000u 0m:0.000001s

Putting it all together we get.

gm convert -gravity center -size 256x256 "big-image.jpg" -resize 256x256 -extent 256x256 +profile "*" "256x256_image.jpg"

You should now be able to add these images to vcards without any problem.

Here is a one liner to create 96x96 256x256 and 720x720 thumbnails of all the jpg images in a directory.


for image in *jpg;do for size in 96x96 256x256 720x720; do gm convert -gravity center -size ${size} "${image}" -resize ${size} -extent ${size} +profile "*" "thumbnail-${size}-${image}";done;done

Also available here

hpr2729 :: Bash Tips - 18

Arrays in Bash (part 3)

Hosted by Dave Morriss on 2019-01-17 is flagged as Explicit and released under a CC-BY-SA license.
Tags: Bash,array,indexed array,associative array,parameter expansion.
Listen in ogg, spx, or mp3 format. Series: Bash Scripting | Comments (0)

Bash Tips - 18 (Extra auxiliary Bash tips)

Arrays in Bash

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 Bash Tips sub-series.

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.

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 declare built in command and at some of the commands that assist with loading data into arrays.

Long notes

I have provided detailed notes as usual for this episode, and these can be viewed here.

hpr2728 :: The Unreliable Narrator In Storytelling

Lostnbronx looks at unreliable narrators and narrative techniques in stories.

Hosted by lostnbronx on 2019-01-16 is flagged as Clean and released under a CC-BY-SA license.
Tags: stories,storytelling,narration,lostnbronx.
Listen in ogg, spx, or mp3 format. Series: Random Elements of Storytelling | Comments (1)

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

hpr2727 :: Passwords

How to do passwords better.

Hosted by Edward Miro / c1ph0r on 2019-01-15 is flagged as Clean and released under a CC-BY-SA license.
Tags: Information Security for Everyone.
Listen in ogg, spx, or mp3 format. Series: Privacy and Security | Comments (0)


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.


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?

For me personally I employ and advise a three faceted approach:

  1. Complex passwords
  2. Unique passwords
  3. Two-factor authentication (where available)

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:

Password Managers

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.

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.

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.

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:

Take a poem, song lyrics or phrase that is easy for you to remember. For this example I’ll use the phrase:

"The stars at night are big and bright. Deep in the heart of Texas."

Then I take the first letters from each word and that gives me:


Then I swap out the vowels for some numbers/special characters. And that gives me:


I checked that password on Dashlane’s Password Strength Checker, and got the following results:

It would take a computer about 204 million years to crack your password

And that’s just an example of a very secure password that I thought up in just a few seconds that I probably won’t ever be able to forget it.

2FA (two-factor authentication)

Another very important recommendation I want to touch on in this episode is using two-step authentication. I use it for all accounts that offer it and it’s very easy to set-up and use. It works in tandem with an application on my mobile device called Google Authenticator(though there are others and like LastPass this is just the one I use) and it’s available for Android and iOS. After you install the app, you access the security settings for the account you want to protect and register it with your device.

What it does is provide a “second” password when logging it that is only used one time. When you log in, the site will prompt for the two-step authentication code, you then open the Google Authenticator app and the code for the session will be listed. The codes are only available for a short time and are constantly changing. This makes someone gaining unauthorized access to your account VERY difficult.

A few closing thoughts

Some information security professionals see a password manager as insecure due to it being a single point of failure. I can understand this and would respond that although this might be true, having a complex master password and using the manager in conjunction with two-step authentication makes it a pretty safe and solid system. And even if there is a breach, none of my passwords are the same and changing them is incredibly fast and easy with a manager.

Also, I usually don’t recommend keeping hard copies of passwords, but if you can guarantee the physical security of your password list, this in my opinion is preferable to using the same, insecure password for all your accounts.

Please remember, if you’re like most people on the internet and you use an easy to crack password or the same password on all your sites, all it takes is one compromised account to give bad guys access to everything.

I’m also including a list of links in the bottom of the show notes to everything I mentioned and also a link to the site Have I Been Pwned. This is a service that collects accounts that have been involved in hacks and lets anyone search for their email address and see if their information is already compromised. If it is, do this NOW:

  1. Setup a password manager with a strong master password.
  2. Change all your passwords using the built in password generator in your password manager and save them in your vault as you go.
  3. In the future when breaches happen, it’s incredibly easy to change your password and you’ll also rest easy knowing that the password obtained can’t get them into anything else.

I know this will take a long time. But it’s worth it. Then, you only have to remember one master password and you will be exponentially safer online.

I also linked SplashData’s “The Top 100 Worst Passwords of 2018”. PLEASE don’t use anything on this list.

Well, thank you for taking the time to listen to my basic introduction to passwords. I hope this will help any non-hackers in your life and like I say in all my podcasts, I don’t claim to know all there is to know and love feedback and any opportunities to learn more or collaborate with others in the field. 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, or just wanna chat, feel free to email me.

Thank you and have a safe 2019!

hpr2726 :: Home Theater - Part 2 Software (High Level)

I go over a high level of my notes for the software on my Media box as it relates to TV/Movies/Music

Hosted by operat0r on 2019-01-14 is flagged as Clean and released under a CC-BY-SA license.
Tags: kodi, deluge,Sonarr,Plex,Subsonic,SpiderOakONE,Zoneminder,Borg Backup,rclone,Redshift,Audacity.
Listen in ogg, spx, or mp3 format. Comments (0)

  • Future Eps for Series:
    • Sonarr / Filename Fixes
    • SABnzbd
    • Subsonic / /Audio Fixes

Local copy of the shownotes

hpr2725 :: The Illumos Shutdown Command Explained

A short pod cast about the Illumos shutdown command

Hosted by klaatu on 2019-01-11 is flagged as Clean and released under a CC-BY-SA license.
Tags: sys admin,systems,unix,illumos.
Listen in ogg, spx, or mp3 format. Comments (1)

In response to JWP's episode 2697 and ClaudioM's comment, this show covers the shutdown command as it appeared in Sun Solaris and OpenSolaris, and currently appears in both Oracle Solaris and OpenIndiana.

The quick version:

  • shutdown
  • -i sets the destination init state (5 to shutdown, 6 to reboot, and so on; see man init for more)
  • -y to answer "yes" to the safeguard prompt asking you whether you really want to shutdown
  • -g to set how many seconds until shutdown. Default is 60.

In practise, I don't even use the shutdown command. I use poweroff, which does a shutdown and poweroff.

Both shutdown and poweroff require root permission. On OpenIndiana, you can either use sudo bash or pfexec bash to get a root prompt.

Some links:

OpenIndiana handbook

Sun Microsystem docs (with Oracle branding on it)

hpr2724 :: Using a DIN Rail to mount a Raspberry Pi

I created DIN rail fittings for attaching my RPi 3B+ and an SSD disk

Hosted by Dave Morriss on 2019-01-10 is flagged as Explicit and released under a CC-BY-SA license.
Tags: 3D printing,DIN rail,Raspberry Pi.
Listen in ogg, spx, or mp3 format. Comments (0)


A DIN Rail 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.

See the Wikipedia article on the subject for full details.

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.

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.

Long notes

I have provided detailed notes and pictures for this episode, and these can be viewed here.

hpr2723 :: Using Elm in context of 4X game client

tuturto talks their decisions on structuring Elm application

Hosted by tuturto on 2019-01-09 is flagged as Clean and released under a CC-BY-SA license.
Tags: elm.
Listen in ogg, spx, or mp3 format. Comments (0)

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.

Couple goals I had in my mind when I started this:

  • easy to work with
  • type safe
  • extensible
  • user authorization
    • regular player
    • administrator

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.

API Endpoints

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.

type Endpoint
    = ApiStarDate
    | ApiResources
    | ApiStarSystem
    | ApiStar
    | ApiPlanet
    | ApiPopulation PlanetId
    | ApiBuilding PlanetId
    | ApiConstructionQueue PlanetId
    | ApiConstruction Construction
    | ApiBuildingConstruction
    | ApiAvailableBuildings

For example, sending a GET request to retrieve all construction projects on a planet is done as:

Http.send (ApiMsgCompleted << ConstructionsReceived) (get (ApiConstructionQueue planetId) (list constructionDecoder))

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.

Update function

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).

Same way as API end points are encoded in a type, pages are too:

type Route
    = HomeR
    | ProfileR
    | StarSystemsR
    | StarSystemR StarSystemId
    | PlanetR StarSystemId PlanetId
    | BasesR
    | FleetR
    | DesignerR
    | ConstructionR
    | MessagesR
    | AdminR
    | LogoutR
    | ResearchR

routeToString function is used to map Route into String, that can be placed in hyperlink. Below is an excerp:

routeToString : Route -> String
routeToString route =
    case route of
        HomeR ->

        StarSystemR (StarSystemId sId) ->
            "/starsystem/" ++ String.fromInt sId

        PlanetR (StarSystemId sId) (PlanetId pId) ->
            "/starsystem/" ++ String.fromInt sId ++ "/" ++ String.fromInt pId

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:

routes : Parser (Route -> a) a
routes =
        [ map HomeR top
        , map ProfileR (s "profile")
        , map ResearchR (s "research")
        , map StarSystemsR (s "starsystem")
        , map StarSystemR (s "starsystem" </> starSystemId)
        , map PlanetR (s "starsystem" </> starSystemId </> planetId)
        , map BasesR (s "base")
        , map FleetR (s "fleet")
        , map DesignerR (s "designer")
        , map ConstructionR (s "construction")
        , map MessagesR (s "message")
        , map AdminR (s "admin")
        , map LogoutR (s "logout")

Result of parsing is Maybe Route, meaning that failure will return Nothing. Detecting and handling this is responsibility of the calling code, usually I just default to HomeR.

Borrowing from Yesod, client uses recursive function to define breadcrumb path. This is hierarchical view of current location in the application, allowing user to quickly navigate backwards where they came.

Breadcrumb path consists of segments that are tuple of (String, Maybe Route). String tells text to display and Route is possible parent route of the segment. This allows hierarchical definition: “Home / Star systems / Sol / Earth”. Because route has only (for example) PlanetId, we need to pass Model too, so that the data retrieved from server can be used to figure out what name such a planet has.

{-| Build complete breadcrumb path and wrap it in enclosing HTML
breadcrumbPath : Model -> Html Msg

{-| Recursively build list of breadcrumbs from segments
Last one is plain text, while parents of it are links
breadcrumb : Model -> Bool -> Route -> List (Html Msg)

{-| Get segment of given route in form of ( String, Maybe Route )
String denotes text describing the segment, Maybe Route is possible parent
segment : Model -> Route -> ( String, Maybe Route )

hpr2721 :: HPR Community News for December 2018

HPR Volunteers talk about shows released and comments posted in December 2018

Hosted by HPR Volunteers on 2019-01-07 is flagged as Explicit and released under a CC-BY-SA license.
Tags: Community News.
Listen in ogg, spx, or mp3 format. Series: HPR Community News | Comments (2)

New hosts

Welcome to our new host:
Edward Miro / c1ph0r.

Last Month's Shows

Id Day Date Title Host
2696 Mon 2018-12-03 HPR Community News for November 2018 HPR Volunteers
2697 Tue 2018-12-04 The Linux Shutdown Command Explained JWP
2698 Wed 2018-12-05 XSV for fast CSV manipulations - Part 1 b-yeezi
2699 Thu 2018-12-06 Bash Tips - 15 Dave Morriss
2700 Fri 2018-12-07 Episode 3000 Ken Fallon
2701 Mon 2018-12-10 First impressions of the Odroid-go dodddummy
2702 Tue 2018-12-11 Audacity set up and response to episode 2658 Tony Hughes AKA TonyH1212
2703 Wed 2018-12-12 Fog of war in Yesod based game tuturto
2704 Thu 2018-12-13 Intro to Scribus klaatu
2705 Fri 2018-12-14 Evidence-based Medicine Ahuka
2706 Mon 2018-12-17 Why I love the IBM AS/400 computer systems Jeroen Baten
2707 Tue 2018-12-18 Steganalysis 101 Edward Miro / c1ph0r
2708 Wed 2018-12-19 Ghostscript klaatu
2709 Thu 2018-12-20 Bash Tips - 16 Dave Morriss
2710 Fri 2018-12-21 Youtube downloader for channels Ken Fallon
2711 Mon 2018-12-24 Raspberry Pi 3A+ Review Yannick the french guy from Switzerland
2712 Tue 2018-12-25 Steganography klaatu
2713 Wed 2018-12-26 Resources in 4x game tuturto
2714 Thu 2018-12-27 Airplane stalls and Angle of Attack Brian in Ohio
2715 Fri 2018-12-28 About ONAP JWP
2716 Mon 2018-12-31 Really Simple YouTube Thaj Sara

Comments this month

These are comments which have been made during the past month, either to shows released during the month or to past shows.
There are 34 comments in total.

There are 15 comments on 11 previous shows:

  • hpr1536 (2014-06-23) "The 150-in-1 Electronic Project Kit" by Curtis Adkins (CPrompt^).
    • Comment 9: Richard Harris on 2018-12-16: "Consultant, Licensed technical instructor"

  • hpr2378 (2017-09-13) "Why Docbook?" by klaatu.
    • Comment 10: Klaatu on 2018-12-22: "docbook rocks"

  • hpr2562 (2018-05-29) "I bought a laptop" by clacke.
    • Comment 3: clacke on 2018-12-05: "This is an episode"

  • hpr2619 (2018-08-16) "A Gentle Introduction to Quilt" by bjb.
    • Comment 2: Klaatu on 2018-12-22: "can't wait to try it"

  • hpr2635 (2018-09-07) "Running your own mainframe on Linux (for fun and profit)" by Jeroen Baten.
    • Comment 4: Klaatu on 2018-12-22: "Best explanation of what a mainframe is"

  • hpr2661 (2018-10-15) "My Music Production Setup" by Claudio Miranda.
    • Comment 1: Klaatu on 2018-12-22: "Nice look behind the scenes"

  • hpr2666 (2018-10-22) "Slackware Post-Install" by m1rr0r5h4d35.
    • Comment 3: Klaatu on 2018-12-22: "shameless self promotion"

  • hpr2672 (2018-10-30) "Porteus" by klaatu.
    • Comment 2: Klaatu on 2018-12-03: "Late response better than no response"

  • hpr2693 (2018-11-28) "Getting started with web based game in Haskell and Elm" by tuturto.

  • hpr2694 (2018-11-29) "Bandit Update" by NYbill.
    • Comment 1: Ken Fallon on 2018-12-03: "Use the website"
    • Comment 2: NYbill on 2018-12-03: "Huh?"
    • Comment 3: Ken Fallon on 2018-12-04: "I took it to be a hacking challange"
    • Comment 4: NYbill on 2018-12-04: "Webpage"

  • hpr2695 (2018-11-30) "Problems with Studies" by Ahuka.
    • Comment 1: Klaatu on 2018-12-20: "Required listening"
    • Comment 2: Kevin O'Brien on 2018-12-21: "Finding truth"

There are 19 comments on 10 of this month's shows:

  • hpr2697 (2018-12-04) "The Linux Shutdown Command Explained" by JWP.
    • Comment 1: ClaudioM on 2018-12-04: "shutdown on BSDs"
    • Comment 2: Klaatu on 2018-12-20: "another great jwp episode"
    • Comment 3: Klaatu on 2018-12-20: "episode 2725"

  • hpr2698 (2018-12-05) "XSV for fast CSV manipulations - Part 1" by b-yeezi.
    • Comment 1: Mike Ray on 2018-12-05: "Good timing"
    • Comment 2: Dave Morriss on 2018-12-16: "This is a great bit of software"
    • Comment 3: Klaatu on 2018-12-20: "Neato"

  • hpr2701 (2018-12-10) "First impressions of the Odroid-go" by dodddummy.
    • Comment 1: tuturto on 2018-12-10: "Particularly interesting"
    • Comment 2: Klaatu on 2018-12-20: "Particularly interesting +1"

  • hpr2704 (2018-12-13) "Intro to Scribus" by klaatu.
    • Comment 1: Ahuka on 2018-12-15: "Excellent show"

  • hpr2705 (2018-12-14) "Evidence-based Medicine" by Ahuka.
    • Comment 1: Klaatu on 2018-12-20: "smart"
    • Comment 2: Ahuka on 2018-12-21: "Follow your bliss"

  • hpr2706 (2018-12-17) "Why I love the IBM AS/400 computer systems" by Jeroen Baten.
    • Comment 1: Bob on 2018-12-18: "Novell not AS400"
    • Comment 2: Klaatu on 2018-12-20: "Intro music"
    • Comment 3: Windigo on 2018-12-31: "Certainly piqued my interest"

  • hpr2707 (2018-12-18) "Steganalysis 101" by Edward Miro / c1ph0r.
    • Comment 1: b-yeezi on 2018-12-18: "Great show"
    • Comment 2: Klaatu on 2018-12-19: "Great intro"

  • hpr2710 (2018-12-21) "Youtube downloader for channels" by Ken Fallon.

  • hpr2712 (2018-12-25) "Steganography" by klaatu.
    • Comment 1: Ken Fallon on 2018-12-28: "Did anyone win ?"

  • hpr2716 (2018-12-31) "Really Simple YouTube" by Thaj Sara.
    • Comment 1: b-yeezi on 2018-12-31: "Already put to use"

Mailing List discussions

Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mail List which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under Mailman.

The threaded discussions this month can be found here:

Any other business

Thanks to all HPR contributors in 2018!

Aaressaar, Ahuka, Al, Archer72, b-yeezi, bjb, bookewyrmm, Brian in Ohio, clacke, Claudio Miranda, Clinton Roy, Dave Morriss, David Whitman, desearcher, dodddummy, Edward Miro / c1ph0r, finux, folky, Honkeymagoo, HPR Volunteers, HPR_AudioBookClub, Jeroen Baten, Joey Hess, Jon Kulp, JWP, Ken Fallon, klaatu, knightwise, lostnbronx, m1rr0r5h4d35, MPardo, MrX, NYbill, operat0r, Philip, Quvmoh, Shane Shennan, sigflup, Steve Saner, swift110, Thaj Sara, The Alien Brothers Podcast (ABP), the_remora, TheDUDE, thelovebug, ToeJet, Tony Hughes AKA TonyH1212, tuturto, Various Creative Commons Works, Various Hosts, Xoke, Xtrato, Yannick the french guy from Switzerland.

Previous five weeks

hpr2720 :: Download youtube channels using the rss feeds hosted by Ken Fallon

Released: 2019-01-04. Duration: 00:24:07. Flag: Explicit.
Tags: youtube, youtube-dl, channels, playlists, xmlstarlet.
Ken shares a script that will allow you to quickly keep up to date on your youtube subscriptions

hpr2719 :: Bash Tips - 17 hosted by Dave Morriss

Released: 2019-01-03. Duration: 00:34:16. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,array,indexed array,associative array.
Arrays in Bash (part 2)

hpr2718 :: Genre In Storytelling hosted by lostnbronx

Released: 2019-01-02. Duration: 00:12:30. Flag: Clean.
Tags: stories,storytelling,genre,lostnbronx.
Lostnbronx takes a look at the importance of genre in storytelling.

hpr2717 :: Mobile Device Security hosted by Edward Miro / c1ph0r

Released: 2019-01-01. Duration: 00:10:21. Flag: Explicit.
Tags: Mobile Device Security.
Cell phone cyber security 101

hpr2716 :: Really Simple YouTube hosted by Thaj Sara

Released: 2018-12-31. Duration: 00:07:21. Flag: Clean.
Tags: RSS, YouTube, PeerTube, TInyTinyRSS, Internet Video.
Thaj explains how he makes YouTube come to him using RSS feeds

hpr2715 :: About ONAP hosted by JWP

Released: 2018-12-28. Duration: 00:10:18. Flag: Explicit. Series: Networking.
Tags: Networking,ONAP,Open Networking Automation Platform.
The Linux foundations ONAP project all about it

hpr2714 :: Airplane stalls and Angle of Attack hosted by Brian in Ohio

Released: 2018-12-27. Duration: 00:16:35. Flag: Clean.
Tags: aircraft,flight,stall.
A primer on why airplanes quit flying

hpr2713 :: Resources in 4x game hosted by tuturto

Released: 2018-12-26. Duration: 00:20:52. Flag: Clean.
Tags: haskell.
One way to implement data types for raw resources in Haskell

hpr2712 :: Steganography hosted by klaatu

Released: 2018-12-25. Duration: 00:21:30. Flag: Clean.
Tags: steganography,message,secret decoder ring.
Klaatu wraps up his miniseries about steganography.

hpr2711 :: Raspberry Pi 3A+ Review hosted by Yannick the french guy from Switzerland

Released: 2018-12-24. Duration: 00:05:36. Flag: Clean.
Tags: raspberry pi, review.
In this episode of HPR, I will do a quick review of the Raspberry Pi 3A+.

hpr2710 :: Youtube downloader for channels hosted by Ken Fallon

Released: 2018-12-21. Duration: 00:14:04. Flag: Explicit.
Tags: youtube, youtube-dl.
A followup to hpr2675 how you can download an entire youtube channel for local playout

hpr2709 :: Bash Tips - 16 hosted by Dave Morriss

Released: 2018-12-20. Duration: 00:24:00. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,array,indexed array,associative array.
Arrays in Bash (part 1)

hpr2708 :: Ghostscript hosted by klaatu

Released: 2018-12-19. Duration: 00:22:31. Flag: Clean. Series: Privacy and Security.
Tags: pdf, ebook, bloat, print.
Klaatu talks about manipulating PDFs with gs and pdf-stapler

hpr2707 :: Steganalysis 101 hosted by Edward Miro / c1ph0r

Released: 2018-12-18. Duration: 00:14:24. Flag: Clean.
Tags: Steganalysis, steganography.
Steganalysis is the process of identifying the presence of, and decrypting, steganography.

hpr2706 :: Why I love the IBM AS/400 computer systems hosted by Jeroen Baten

Released: 2018-12-17. Duration: 00:28:34. Flag: Explicit.
Tags: as400, ibm, computing, midrange.
A short talk about how I came to love the IBM As/400 systems and why.

hpr2705 :: Evidence-based Medicine hosted by Ahuka

Released: 2018-12-14. Duration: 00:16:53. Flag: Clean. Series: Health and Healthcare.
Tags: Health, Medicine, Evidence, Science.
Medicine should be based on objective scientific evidence

hpr2704 :: Intro to Scribus hosted by klaatu

Released: 2018-12-13. Duration: 00:39:40. Flag: Clean. Series: Privacy and Security.
Tags: design, steganography, scribus, layout.
Klaatu provides an overview of Scribus in part 1 of a mini-series about steganography

hpr2703 :: Fog of war in Yesod based game hosted by tuturto

Released: 2018-12-12. Duration: 00:25:15. Flag: Clean.
Tags: haskell, yesod.
How to implement fog of war system in turn based web game

hpr2702 :: Audacity set up and response to episode 2658 hosted by Tony Hughes AKA TonyH1212

Released: 2018-12-11. Duration: 00:01:47. Flag: Clean.
Tags: audio,Audacity.
Just a quick responce to Ep2658

hpr2701 :: First impressions of the Odroid-go hosted by dodddummy

Released: 2018-12-10. Duration: 00:32:06. Flag: Clean. Series: Hobby Electronics.
Tags: Odroid-go.
I ramble on about my first impressions of the odroid-go

hpr2700 :: Episode 3000 hosted by Ken Fallon

Released: 2018-12-07. Duration: 07:27:10. Flag: Clean.
Tags: TWaT, HPR, 3000.
We commemorate the 300 Today with a Techie and 2700 Hacker Public Radio shows

hpr2699 :: Bash Tips - 15 hosted by Dave Morriss

Released: 2018-12-06. Duration: 00:29:54. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,loop,ls,pipe,pipeline,find,extglob.
Some of the pitfalls when using loops in Bash

hpr2698 :: XSV for fast CSV manipulations - Part 1 hosted by b-yeezi

Released: 2018-12-05. Duration: 00:30:37. Flag: Clean.
Tags: CSV,XSV.
Written in Rust, xsv is my new favorite tool for manipulating csv files

hpr2697 :: The Linux Shutdown Command Explained hosted by JWP

Released: 2018-12-04. Duration: 00:06:42. Flag: Clean.
Tags: Linux,shutdown.
A short pod cast about the linux shutdown command

hpr2696 :: HPR Community News for November 2018 hosted by HPR Volunteers

Released: 2018-12-03. Duration: 01:11:57. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
HPR Volunteers talk about shows released and comments posted in November 2018

hpr2695 :: Problems with Studies hosted by Ahuka

Released: 2018-11-30. Duration: 00:13:18. Flag: Clean. Series: Health and Healthcare.
Tags: Health, Medicine, Medical Studies, Evaluating Studies.
Some principles for evaluating medical studies

hpr2694 :: Bandit Update hosted by NYbill

Released: 2018-11-29. Duration: 00:11:39. Flag: Clean.
Tags: Hacking, War games, Linux.
NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.

hpr2693 :: Getting started with web based game in Haskell and Elm hosted by tuturto

Released: 2018-11-28. Duration: 00:19:06. Flag: Clean.
Tags: haskell, yesod.
First steps in writing 4x space exploration game

hpr2692 :: YouTube URL tricks hosted by desearcher

Released: 2018-11-27. Duration: 00:07:16. Flag: Clean.
Tags: YouTube,URL,Chrome,Roku,Smart TV.
URL tricks for YouTube to enhance viewing experience and an overview of my viewing methodology

hpr2691 :: DerbyCon Interview - John Strand hosted by Xoke

Released: 2018-11-26. Duration: 00:02:40. Flag: Clean. Series: Interviews.
Tags: DerbyCon, Interview, Blockchain.
John Strand talks about behavoural analytics and blockchain

hpr2690 :: A chat about the HiveMQ Broker hosted by Ken Fallon

Released: 2018-11-23. Duration: 00:07:05. Flag: Clean. Series: Interviews.
Tags: MQTT, HiveMQ, dc-square GmbH.
Ken talks with Florian Raschbichler and Anja Helmbrecht-Schaar about HiveMQ

hpr2689 :: Bash Tips - 14 hosted by Dave Morriss

Released: 2018-11-22. Duration: 00:28:08. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,loop,for,break,continue.
More about loops - the 'for' loop, 'break' and 'continue'

hpr2688 :: Explaining the controls on my Amateur HF Radio Part 5 hosted by MrX

Released: 2018-11-21. Duration: 00:17:19. Flag: Explicit. Series: HAM radio, QSK.
Tags: HF, Ham, Amateur Radio.
In this episode I cover the remaining Receiver section controls of the TS940S.

hpr2687 :: Some Additional Talk About Characters -- 02 hosted by lostnbronx

Released: 2018-11-20. Duration: 00:12:30. Flag: Clean.
Tags: stories,storytelling,characters,lostnbronx.
Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 02.

hpr2686 :: (NOT) All About Blender - Part the Second hosted by m1rr0r5h4d35

Released: 2018-11-19. Duration: 00:40:13. Flag: Explicit.
Tags: Blender.
A meandering conversation to sooth the nerves, and warm the soul - part 2!!

hpr2685 :: Scientific and Medical Reports hosted by Ahuka

Released: 2018-11-16. Duration: 00:14:14. Flag: Clean. Series: Health and Healthcare.
Tags: Health, Medicine, Medical Studies, News Reports.
We need to be careful about evaluating news reports about medical studies

hpr2684 :: Making a remote control visible hosted by Ken Fallon

Released: 2018-11-15. Duration: 00:01:17. Flag: Explicit.
Tags: Life hacks.
Yet another amazing life hack !!!

hpr2683 :: Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild hosted by Jeroen Baten

Released: 2018-11-14. Duration: 00:31:51. Flag: Clean.
Tags: python, php, jquery, linux.
Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild

hpr2682 :: (NOT) All About Blender hosted by m1rr0r5h4d35

Released: 2018-11-13. Duration: 00:45:53. Flag: Explicit.
Tags: Blender.
A meandering conversation to sooth the nerves, and warm the soul.

hpr2681 :: DerbyCon Interview - Hackers for Charity hosted by Xoke

Released: 2018-11-12. Duration: 00:04:33. Flag: Clean. Series: Interviews.
Tags: DerbyCon, Charity, Interview.
Xoke interviews the amazing Hackers for Charity people

Older Shows

Get a full list of all our shows.