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, 11 months, 7 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 16 days.

Meet the team

Please help out tagging older shows !


Latest Shows


hpr2881 :: Automatically split album into tracks in Audacity

Inspired by a Jon Kulp show, Ken splits a large recording based on silence between tracks


Hosted by Ken Fallon on 2019-08-19 is flagged as Explicit and released under a CC-BY-SA license.
Tags: Audacity, hpr1771, Detect Silence, Split Track, Label.
Listen in ogg, spx, or mp3 format. Comments (0)

In this show Ken, recalls hpr1771 :: Audacity: Label Tracks by Jon Kulp to add Labels to an large audio file.

  • Tidy up the audio to the point where you are happy with it, but do not truncate silence.
  • Find the first break in the audio and check how long it is. In my case it was 4 seconds.
  • Select the entire track and select Analyze>Silence Finder
  • Change Maximum duration of silence to just under the length of the break. In my case I set it to 3 seconds
  • This will then create a series of labels on a new Label track
  • Edit the names of each as desired.
  • Select File > Export > Export Multiple
  • Select Split Files based on Labels
  • Name files using Label/Track Name

hpr2880 :: Evaluating a Study

We've developed the standards to judge, so now let's do an example!


Hosted by Ahuka on 2019-08-16 is flagged as Clean and released under a CC-BY-SA license.
Tags: Health, Medicine, Evidence, Science, Studies.
Listen in ogg, spx, or mp3 format. Series: Health and Healthcare | Comments (0)

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


hpr2879 :: Describing how I listen to podcasts PART 1

This episode badly covers the console audio player moc.

Hosted by MrX on 2019-08-15 is flagged as Explicit and released under a CC-BY-SA license.
Tags: Audio, Podcasts, Linux, Ncurses.
Listen in ogg, spx, or mp3 format. Comments (0)

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


hpr2878 :: Type classes in Haskell

tuturto explains what type classes are and how to use them

Hosted by tuturto on 2019-08-14 is flagged as Clean and released under a CC-BY-SA license.
Tags: type class.
Listen in ogg, spx, or mp3 format. Series: Haskell | Comments (0)

Background

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.

Equality

In Haskell there’s no default equality, it has to be defined.

There’s two parts to the puzzle. First is type class Eq that comes with the standard library and defines function signatures for equality and non-equality comparisons. There’s type parameter a in the definition, which is filled by user when they define instance of Eq for their data. In that instance definition, a is filled with concrete type.

class  Eq a where
  (==) :: a -> a -> Bool
  (/=) :: a -> a -> Bool

  x /= y = not (x == y)

Definition above can be read as “class Eq a that has two functions with following signatures and implementations”. In other words, given two a, this function determines are they equal or not (thus Bool as return type). /= is defined in terms of ==, 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).

If we define our own Size type, like below, we can compare sizes:

data Size = Small | Medium | Large
    deriving (Show, Read)

instance Eq Size where
    Small == Small = True
    Medium == Medium = True
    Large == Large = True
    _ == _ = False

And here’s couple example comparisons.

> Small == Small
True
> Large /= Large
False

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 deriving (Show, Read, Eq).

data Size = Small | Medium | Large
    deriving (Show, Read, Eq)

Hierarchy between type classes

There can be hierarchy between type classes, meaning one requires presence of another. Common example is Ord, which is used to order data.

class Eq a => Ord a where
    compare :: a -> a -> Ordering
    (<) :: a -> a -> Bool
    (>=) :: a -> a -> Bool
    (>) :: a -> a -> Bool
    (<=) :: a -> a -> Bool
    max :: a -> a -> a
    min :: a -> a -> a

This definition can be read as “class Ord a, where a has instance of Eq, with pile of functions as follows”. Ord has default implementation for quite many of these, in terms of others, so it’s enough to implement either compare or <=.

For our Size, instance of Ord could be defined as:

instance Ord Size where
    Small <= _ = True
    Medium <= Small = False
    Medium <= _ = True
    Large <= Large = True
    Large <= _ = False

Writing generic code

There’s lots and lots of type classes in standard library:

  • Num for numeric operations
  • Integral for integer numbers
  • Floating for floating numbers
  • Show for turning data into strings
  • Read for turning strings to data
  • Enum for sequentially ordered types (these can be enumerated)
  • Bounded for things with upper and lower bound
  • and so on…

Type classes allow you to write really generic code. Following is contrived example using Ord and Show:

check :: (Ord a, Show a) => a -> a -> String
check a b =
    case compare a b of
        LT ->
            show a ++ " is smaller than " ++ show b
        GT ->
            show a ++ " is greater than " ++ show b
        EQ ->
            show a ++ " and " ++ show b ++ " are equal"

Check takes two parameters that are same type and that type has to have Ord and Show instances. Ord is for ordering and Show is for turning data into string (handy for displaying it). The end result is string telling result of comparison. Below is some examples of usage. Note how our function can handle different types of data: Size, Int and [Int].

> check Medium Small
"Medium is greater than Small"
> check Small Large
"Small is smaller than Large"
> check 7 3
"7 is greater than 3"
> check [1, 2] [1, 1, 1]
"[1, 2] is greater than [1, 1, 1]"

There are many extensions to type classes that add more behaviour. These aren’t part of standard Haskell, but can be enabled with a pragma definition or compiler flag. They can be somewhat more complicated to use, have special cases that need careful consideration, but offer interesting options.

In closing

Thank you for listening. Question, comments and feedback welcome. Best way to catch me nowadays is either by email or in fediverse, where I’m tuturto@mastodon.social.


hpr2877 :: Using Zenity with Pdmenu

Zenity is a rather cool program that will display GTK+ dialogs from a script


Hosted by Dave Morriss on 2019-08-13 is flagged as Explicit and released under a CC-BY-SA license.
Tags: zenity,Bash scripting,pdmenu,GTK+.
Listen in ogg, spx, or mp3 format. Series: Bash Scripting | Comments (0)

Overview

I use pdmenu a lot to help me do work on my main desktop PC. I did an HPR show on pdmenu on 13 December 2017 and the author Joey Hess responded in show 2459.

In the intervening time I have also integrated Zenity into my menus. This is a GUI tool which generates a number of different pop-up windows known as dialogs, which can display information, or into which information can be typed. The capabilities provided by pdmenu are a little too basic to enable me to do what I need to do.

I thought it might be of interest to show some examples of how I use this tool with pdmenu.

Long notes

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


hpr2876 :: Sausage Orzotto

A favorite recipe, dictated while it is cooked.


Hosted by Windigo on 2019-08-12 is flagged as Explicit and released under a CC-BY-SA license.
Tags: food,cooking.
Listen in ogg, spx, or mp3 format. Comments (2)

This recipe has been heavily adapted from one I received from Hello Fresh - credit where credit's due!

Ingredients:

  • 1 lb (500g) Sausage (chicken or pork works)
  • 1 ½ cups (192g) Orzo
  • 2 tbsp (40g) Butter
  • Olive oil
  • Zucchini
  • Shallot
  • 1 - 2 tbsp (20-40g) Italian Seasoning
  • Pepper
  • 2 cups (475ml) water
  • 1 tsp (4g) stock concentrate
  • 16oz (450g?? One normal can, whatever that is) Crushed or diced tomatoes
  • 1 cup (226g) Mozzarella cheese (shredded)
  • Panko Breadcrumbs
  • Salt (Optional)
  1. 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.
  2. Preheat oven to 500 F
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. Drain excess liquid from the zucchini and sausage.
  8. Mix sausage & zucchini into orzo mixture, with 1 tbsp of butter. Season with salt & pepper, if you want.
  9. 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.
  10. Cover the mixture in mozzarella cheese and panko breadcrumbs - in that order!
  11. Place dish in the oven for 2-3 minutes, until the breadcrumbs are toasted.

Note: If these metric measurements seem crazy, they probably are.


hpr2875 :: cutting up the frames

you've got to crack some eggs to make an omelette

Hosted by Brian in Ohio on 2019-08-09 is flagged as Clean and released under a CC-BY-SA license.
Tags: bicycle, recumbent, recycle.
Listen in ogg, spx, or mp3 format. Comments (0)

Drawings

https://sites.google.com/site/recycledrecumbents/ez-clone-drawings

Pictures

picture01-one-of-the-donors.jpg
One of the donors

picture02-dross.jpg
Dross

picture03-the-gold.jpg
The gold

picture04-first-cut.jpg
First cut

picture05-cutting-tubes.jpg
Cutting tubes

picture06-workmate.jpg
Workmate

picture07-frame2-parts.jpg
Frame 2 parts

picture08-frame1-parts.jpg
Frame 1 parts


hpr2874 :: Repair of G.E. Variable Speed Cassette Recorder

I talk about repairing a 1997 handheld cassette recorder and demonstrate its use.


Hosted by Jon Kulp on 2019-08-08 is flagged as Clean and released under a CC-BY-SA license.
Tags: Recording, Audio, Tape, Cassette, Recording Devices, Tape Speeds, Electronics, Repair.
Listen in ogg, spx, or mp3 format. Comments (0)

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.

G.E. Variable Speed Cassette Recorder Repair

Links to Stuff Mentioned in the Episode


hpr2873 :: Death Angel - Card game

Short description of Death Angel card game

Hosted by tuturto on 2019-08-07 is flagged as Clean and released under a CC-BY-SA license.
Tags: cardgame.
Listen in ogg, spx, or mp3 format. Series: Tabletop Gaming | Comments (0)

For more information, have a look at BoardGameGeek: https://boardgamegeek.com/boardgame/71721/space-hulk-death-angel-card-game


hpr2872 :: Shoe Lace Tips

In this episode I give some shoe lace tips

Hosted by MrX on 2019-08-06 is flagged as Explicit and released under a CC-BY-SA license.
Tags: hacks, tips.
Listen in ogg, spx, or mp3 format. Comments (0)

In this episode I give some shoe lace tips


Previous five weeks

hpr2871 :: HPR Community News for July 2019 hosted by HPR Volunteers

Released: 2019-08-05. Duration: 01:03:14. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
HPR Volunteers talk about shows released and comments posted in July 2019

hpr2870 :: Hierarchy of Evidence hosted by Ahuka

Released: 2019-08-02. Duration: 00:14:25. Flag: Clean. Series: Health and Healthcare.
Tags: Health, Medicine, Evidence, Science, Studies.
All studies are not the same. Some are better than others.

hpr2869 :: building a bike, following in John Kulp's footsteps hosted by Brian in Ohio

Released: 2019-08-01. Duration: 00:11:34. Flag: Clean.
Tags: bicycle, recumbent, recycle.
turning a couple of old bikes into a long wheel base recumbent

hpr2868 :: Custom data with Persistent hosted by tuturto

Released: 2019-07-31. Duration: 00:20:02. Flag: Clean. Series: Haskell.
Tags: haskell, persistent, database.
tuturto explains how to serialize custom data with Persistent

hpr2867 :: The Kenwood TS940S Automatic Tuning Unit hosted by MrX

Released: 2019-07-30. Duration: 00:13:04. Flag: Explicit. Series: HAM radio, QSK.
Tags: Amateur, Radio, Ham.
I cover the Automatic Tuning unit on my Kenwood TS940S, re comment from HPR2668

hpr2866 :: Intro to Bitcoin for techies hosted by mightbemike

Released: 2019-07-29. Duration: 00:31:55. Flag: Clean.
Tags: bitcoin, blockchain, cryptocurrency.
Survey of Bitcoin: blockchains, blocks, transactions, miners, PoW, hashing, addresses, wallets

hpr2865 :: The YouTube channels I really like hosted by Jeroen Baten

Released: 2019-07-26. Duration: 00:14:17. Flag: Clean.
Tags: apollo,agc,youtube.
Just some random thoughts on some random youtube channels

hpr2864 :: One weird trick to add a --help option to your awk scripts hosted by klaatu

Released: 2019-07-25. Duration: 00:20:13. Flag: Clean. Series: Learning Awk.
Tags: awk,option,help,arg.
Klaatu demonstrates two ways to add a --help message to your awk scripts

hpr2863 :: Simplified application architectures for improved security hosted by Beeza

Released: 2019-07-24. Duration: 00:15:55. Flag: Clean.
Tags: Application development, Application architecture, Security.
A thought experiment in whether reducing runtime dependencies can improve security and how to do it.

hpr2862 :: Art vs. Commerce In Storytelling hosted by lostnbronx

Released: 2019-07-23. Duration: 00:13:50. Flag: Clean. Series: Random Elements of Storytelling.
Tags: stories, storytelling, art, commerce, lostnbronx.
Lostnbronx examines stories as both art and products.

hpr2861 :: Safety Razors hosted by operat0r

Released: 2019-07-22. Duration: 00:14:30. Flag: Clean.
Tags: shaving,safety,razor,health,grooming.
I go over some of my thoughts on Safety Razors Etc

hpr2860 :: Encryption and Quantum Computing hosted by Ahuka

Released: 2019-07-19. Duration: 00:12:37. Flag: Clean. Series: Privacy and Security.
Tags: Encryption, Quantum Computing.
How will quantum computing affect the security of encryption?

hpr2859 :: HPR NYE Show 2018-2019 part 7 hosted by Honkeymagoo

Released: 2019-07-18. Duration: 02:58:34. Flag: Explicit.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2858 :: Vehicle designer for a space game hosted by tuturto

Released: 2019-07-17. Duration: 00:23:24. Flag: Clean. Series: Haskell.
Tags: haskell.
tuturto talks about modeling vehicle designer for their space game

hpr2857 :: Creating CounterParty Collectible Tokens for the Bitcorn Game hosted by mightbemike

Released: 2019-07-16. Duration: 00:16:35. Flag: Clean.
Tags: bitcorn, bitcoin, collectibles.
How to create Bitcorn collectibles: tokens issued on Bitcoin blockchain, used in Bitcorn Farms game

hpr2856 :: Mint Mobile Security Rant hosted by operat0r

Released: 2019-07-15. Duration: 00:19:45. Flag: Explicit.
Tags: Mint Mobile,ANdroid,Phones,4G,VoIP,google voice.
Settle in for a Mint Mobile Security Rant

hpr2855 :: HPR NYE Show 2018-2019 part 6 hosted by Honkeymagoo

Released: 2019-07-12. Duration: 02:21:26. Flag: Explicit.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2854 :: Telling myself something In The Morning hosted by Jezra

Released: 2019-07-11. Duration: 00:06:14. Flag: Clean. Series: Programming 101.
Tags: python, programming.
There was a need for some software, so I wrote some

hpr2853 :: Feeding the beast hosted by folky

Released: 2019-07-10. Duration: 00:07:04. Flag: Clean.
Tags: bankid, swish, cash, payment, digitalization, sweden.
How the swedes are killing their hardcash and feeding the beast

hpr2852 :: Gnu Awk - Part 16 hosted by Dave Morriss

Released: 2019-07-09. Duration: 00:42:44. Flag: Explicit. Series: Learning Awk.
Tags: Gnu Awk, advanced features.
Winding up the Gnu Awk series

hpr2851 :: An introduction to the work of fire fighters hosted by Jeroen Baten

Released: 2019-07-08. Duration: 00:30:47. Flag: Clean.
Tags: fire fighting, fire brigade.
A small introduction into the work of fire fighters

hpr2850 :: NIST Cybersecurity Framework hosted by Ahuka

Released: 2019-07-05. Duration: 00:28:22. Flag: Clean. Series: Privacy and Security.
Tags: Enterprise, Security.
What NIST suggests as a framework to improve security at the Enterprise level

hpr2849 :: HPR NYE Show 2018-2019 part 5 hosted by Honkeymagoo

Released: 2019-07-04. Duration: 02:09:19. Flag: Explicit.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2848 :: Random numbers in Haskell hosted by tuturto

Released: 2019-07-03. Duration: 00:32:37. Flag: Clean. Series: Haskell.
Tags: haskel, random numbers.
tuturto talks how to generate random numbers (and other values) in Haskell

hpr2847 :: earbuds hosted by operat0r

Released: 2019-07-02. Duration: 00:15:02. Flag: Clean.
Tags: earbuds,hacking,music,diy.
My trials with earbuds and custom setups

hpr2846 :: HPR Community News for June 2019 hosted by HPR Volunteers

Released: 2019-07-01. Duration: 00:56:04. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
HPR Volunteers talk about shows released and comments posted in June 2019

hpr2845 :: HPR NYE Show 2018-2019 part 4 hosted by Honkeymagoo

Released: 2019-06-28. Duration: 02:51:05. Flag: Explicit.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2844 :: The Sony TC-222-A Portable Reel-To-Reel Tape Recorder hosted by Jon Kulp

Released: 2019-06-27. Duration: 00:31:08. Flag: Clean.
Tags: Music,Recording,Audio,Tape,Reel-To-Reel,Open-Reel,Recording Devices,Tape Speeds,Bash Scripting.
I talk about my latest thrift-store gadget, a 1969 Sony portable reel-to-reel tape recorder

hpr2843 :: Afrikan Tähti (or Star of Africa) hosted by tuturto

Released: 2019-06-26. Duration: 00:11:18. Flag: Clean. Series: Tabletop Gaming.
Tags: finnish, childhood favourite.
tuturto talks about one of the most important Finnish board game ever

hpr2842 :: What's in my Bag an update to hpr2065 hosted by Tony Hughes AKA TonyH1212

Released: 2019-06-25. Duration: 00:03:45. Flag: Clean.
Tags: Linux, PC's, Laptops, Geek Bag.
This is a short update show on what I carry in my Geek Bag

hpr2841 :: How I got into Linux (and then some...) hosted by Christopher M. Hobbs

Released: 2019-06-24. Duration: 00:31:04. Flag: Clean. Series: How I Found Linux.
Tags: linux, intro, story, discourse, bsd.
A response to the request for "how i got into linux" and a little of my history with Linux/BSD

hpr2840 :: HPR NYE Show 2018-2019 part 3 hosted by Honkeymagoo

Released: 2019-06-21. Duration: 02:01:33. Flag: Clean.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2839 :: Sample episode of the Distrohoppers Digest podcast hosted by Ken Fallon

Released: 2019-06-20. Duration: 00:37:11. Flag: Clean.
Tags: Distrohoppers Digest, mintCast, linux, bsd.
We bring you the first episode of the new Creative Commons show the Distrohoppers Digest

hpr2838 :: Why Haskell? hosted by tuturto

Released: 2019-06-19. Duration: 00:31:40. Flag: Clean. Series: Haskell.
Tags: haskell, response.
tuturto tries to answer Beeza's question on why would someone want to use Haskell

hpr2837 :: parallax live desktops in android hosted by operat0r

Released: 2019-06-18. Duration: 00:17:20. Flag: Explicit.
Tags: youtube downloader,systemd,linux,autohotkey.
Parallax_Wallpaper, mouse gigglers, system d Youtube background play and more !

hpr2836 :: Interview with Wendy Hill hosted by Yannick

Released: 2019-06-17. Duration: 00:26:16. Flag: Clean. Series: Interviews.
Tags: opensource, photography, lubuntu, darktable, rapidphotodownloader, displaycal, gimp.
In this episode, Yannick talks with Wendy Hill about her use of opensource software in her job

hpr2835 :: HPR NYE Show 2018-2019 part 2 hosted by Honkeymagoo

Released: 2019-06-14. Duration: 02:31:28. Flag: Clean.
Tags: HPR new years show, new years, community.
The HPR community comes together to say happy new year and chat

hpr2834 :: My favorite desktop and android applications hosted by Christopher M. Hobbs

Released: 2019-06-13. Duration: 00:29:17. Flag: Clean.
Tags: programs, linux, android, apps, applications, lists, favorites.
Moving right along with shows from the requests list, I combine two program lists.

hpr2833 :: Jeroen chats with Joep Piscaer hosted by Jeroen Baten

Released: 2019-06-12. Duration: 00:19:36. Flag: Clean. Series: Interviews.
Tags: loadays, ryan caligiuri, steve harvey.
Interviewing Joep Piscaer during Loadays in Antwerpen, Belgium

hpr2832 :: How I got started in Linux hosted by Shannon Wright

Released: 2019-06-11. Duration: 00:02:48. Flag: Clean. Series: How I Found Linux.
Tags: linux, introduction.
This is a very brief introduction on what got me into using Linux.

Older Shows

Get a full list of all our shows.