Site Map - skip to main content

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.



Welcome to HPR the Community Podcast

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

Meet the team

Please help out tagging older shows !


Latest Shows


hpr3394 :: Be an XML star with xmlstarlet

Parse XML from the terminal

Hosted by klaatu on 2021-08-05 is flagged as Clean and released under a CC-BY-SA license.
Tags: xml,data,markup,markdown.
Listen in ogg, spx, or mp3 format. Comments (1)

See the layout of an XML document


$ xmlstarlet elements planets.xml
xml
xml/sol
xml/sol/planet
xml/sol/planet/name
xml/sol/planet/albedo
xml/sol/planet
xml/sol/planet/name
xml/sol/planet/albedo
xml/sol/planet
xml/sol/planet/name
xml/sol/planet/albedo

See content of the planet node


$ xmlstarlet select -t --value-of '/xml/sol/planet' planets.xml

        Mercury
        0.11

        Venus
        0.7

        Terra
        0.39

Get the third instance of the planet node


$ xmlstarlet select -t --value-of '/xml/sol/planet[3]' planets.xml
Terra
0.39

Get only the planets with an albedo greater than 0.25


$ xmlstarlet select -t --value-of '/xml/sol/planet[albedo > 0.25]' planets.xml

Venus
0.7

Terra
0.39

Get only the planets closer to Sol than the third planet


$ xmlstarlet select -t --value-of '/xml/sol/planet[position() < 3]' planets.xml

Mercury
0.11

Venus
0.7

Learn more XPath functions at Mozilla Developer Network.

Download xmlstarlet from xmlstarlet.sourceforge.net.


hpr3393 :: We need to talk about XML

An extensible markup language? This is too good to be true!

Hosted by klaatu on 2021-08-04 is flagged as Clean and released under a CC-BY-SA license.
Tags: xml,data,markup,markdown.
Listen in ogg, spx, or mp3 format. Comments (0)

Klaatu introduces XML.

The sample XML document discussed in this episode is:


<xml>
  <sol>
    <planet>
      <name>
        Mercury
      </name>
      <albedo>
        0.11
      </albedo>
    </planet>
    <planet>
      <name>
        Venus
      </name>
      <albedo>
        0.7
      </albedo>
    </planet>
    <planet>
      <name>
        Terra
      </name>
      <albedo>
        0.39
      </albedo>
    </planet>
  </sol>
</xml>


hpr3392 :: Structured error reporting

tuturto talks about how she improved build times by breaking down error reporting to smaller parts

Hosted by tuturto on 2021-08-03 is flagged as Explicit and released under a CC-BY-SA license.
Tags: haskell, error reporting.
Listen in ogg, spx, or mp3 format. Series: Haskell | Comments (0)

Initial state

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:

-- | Error codes for all errors returned by API
data ErrorCode
    -- common error codes
    = ResourceNotFound
    | InsufficientRights
    | FailedToParseDataInDatabase
    -- errors specific to news
    | SpecialEventHasAlreadyBeenResolved
    | UnsupportedArticleType
    | SpecialNewsExtractionFailed
    | TriedToMakeChoiceForRegularArticle
    -- errors specific to simulation state
    | SimulationStatusNotFound
    | DeltaTIsTooBig
    | TurnProcessingAndStateChangeDisallowed
    | SimulationNotOpenForCommands
    | SimulationNotOpenForBrowsing
    -- errors specific to people
    | StatIsTooLow Text
    | CouldNotConfirmDateOfBirth
    | DateOfBirthIsInFuture
    | FirstNameIsEmpty
    | FamilyNameIsEmpty
    | CognomenIsEmpty
    | RegnalNumberIsLessThanZero
    -- errors specific to new person creation
    | AgeBracketStartIsGreaterThanEnd
    | PersonCreationFailed
    deriving (Show, Read, Eq)

Then I had some helper functions to turn any value of that type into a nice error message:

errorCodeToStatusCode :: ErrorCode -> Int
statusCodeToText :: Int -> ByteString
errorCodeToText :: ErrorCode -> Text
raiseIfErrors :: [ErrorCode] -> HandlerFor App ()

errorCodeToStatusCode was responsible for turning ErrorCode into http status code. For example StatIsTooLow "intrigue" would be 400. statusCodeToText would take this code and turn it into short error message given in http response. 400 would be Bad Request. errorCodeToText would give a bit more verbose explanation of what happened, StatIsTooLow "intrigue" would be mapped to "Stat intrigue is too low". Finally raiseIfErrors would take a list of ErrorCode 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:

[
    { code:
        { tag: "StatIsTooLow"
        , contents: "intrique"
        }
    , error: "Stat intrigue is too low"
    }
]

There’s two tags: code, which contains machine readable details about the error and error, which contains error message that can be shown to user.

While this worked fine, there was some problems with it. ErrorCode 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.

Solution

Breaking up the ErrorCode 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 raiseIfErrors :: [ErrorCode] -> HandlerFor App () wanted a list of ErrorCode and elements in a list have to be of same type.

I started by splitting ErrorCode to smaller types. Each of the smaller error types have automatically derived toJSON and fromJSON functions for serializing them to and from JSON:

data PersonCreationError =
    StatIsTooLow Text
    | CouldNotConfirmDateOfBirth
    | DateOfBirthIsInFuture
    | FirstNameIsEmpty
    | FamilyNameIsEmpty
    | CognomenIsEmpty
    | RegnalNumberIsLessThanZero
    deriving (Show, Read, Eq)

$(deriveJSON defaultOptions ''PersonCreationError)

That $(deriveJSON defaultOptions ''PersonCreationError) is template haskell call. Basically it invokes a deriveJSON function with PersonCreationError as parameter and compiles and splices the resulting code here. This is fast and easy way of generating ToJSON and FromJSON instances and avoiding having to write them by hand. It is very similar to how Lisp macros work.

Then I defined a type class, that has functions for getting a http status code and a error message that can be shown to user. statusCodeToText I could use as is, without any modifications:

class ErrorCodeClass a where
    httpStatusCode :: a -> Int
    description :: a -> Text

I have to have instance of ErrorCodeClass defined for each and every smaller error type. Here’s an excerpt of PersonCreationError showing how it would look like:

instance ErrorCodeClass PersonCreationError where
    httpStatusCode = \case
        StatIsTooLow _ -> 400
        CouldNotConfirmDateOfBirth -> 500
...

    description = \case
        StatIsTooLow s ->
            "Stat " ++ s ++ " is too low"
...

A little note: description = \case relies on lambda case extension. It is just a slightly different way of writing:

    description d =
        case d of

This allows me to turn values of these smaller error types into error messages that could be sent to the user.

The second part of the solution is to figure out a way to put values of these smaller error types into same list. If a list is of type [PersonCreationError], it can’t contain values of CommonError and vice versa. Creating a wrapper like:

data ECode a = ECode a

doesn’t work, because then I would have elements of type ECode PersonCreationError and ECode CommonError, which are of different type. What I need, is a way to wrap all these different types into a wrapper that loses the type of wrapped value. Another problem is that I need to place constraints on what kind of values can be wrapped. I need them to have instances for ErrorCodeClass (for getting error information) and ToJSON (for serializing them into JSON). There’s several ways of doing this, but I chose to use generalized algebraic data types (GADTs for short):

{-# LANGUAGE GADTs #-}

data ECode where
    ECode :: (ErrorCodeClass a, ToJSON a) => a -> ECode

Now type ECode has one value constructor, also named to ECode, which takes one parameter a. a can be anything, as long as there’s ErrorCodeClass and ToJSON instances defined for it. Calling this constructor will return ECode. If you compare this with the previous definition of ECode, you’ll notice two major differences:

  • a is constrained to have specific type class instances
  • resulting type is ECode, not ECode a

The second part means that I can wrap different types into ECode and place them into a same list without problems. Type of that list is simply [ECode].

But having a list of error codes wrapped in ECode isn’t going to do much to us. We need to be able to turn them into http status code, text and list of error messages. Luckily we have a type class just for that:

instance ErrorCodeClass ECode where
    httpStatusCode (ECode a) =
        httpStatusCode a

    description (ECode a) =
        description a

httpStatusCode of ECode is httpStatusCode of the value ECode wraps. Similarly description of ECode is description of the wrapped value.

For turning ECode into JSON, I opted for hand written instance:

instance ToJSON ECode where
    toJSON (ECode a) =
        object [ "HttpCode" .= httpStatusCode a
               , "FaultCode" .= toJSON a
               , "ErrorDescription" .= description a
               ]

This gives me complete control over how I want to report errors to the client.

Final piece of the puzzle is raiseIfErrors function:

raiseIfErrors :: [ECode] -> HandlerFor App ()
raiseIfErrors errors = do
    when (not $ null errors) $ do
        let code = fromMaybe 500 $ errors ^? ix 0 . to httpStatusCode
        let msg = statusCodeToText code
        sendStatusJSON (Status code msg) $ toJSON errors

If there are any elements in the passed in list, grab the http status code and text from the first element of the list. I was considering writing some sort of logic to deduce which error code to return in case there are more than one type in the list, but decided against it. There doesn’t seem to be any easy way to decide between HTTP 400 Bad Request and HTTP 500 Internal Server Error. So I just return the first one. Body of the response contains list of errors codes:

[
    { HttpCode: 400
    , FaultCode: {
        Tag: "StatIsTooLow"
        , Contents: "intrique"
        }
    , ErrorDescription: "Stat intrigue is too low"
    }
]

Since manually wrapping things in ECode gets tedious after a while, I defined function for each type of error that does that for me:

statIsTooLow :: Text -> ECode
statIsTooLow s = ECode $ StatIsTooLow s

Now, instead of writing ECode $ StatIsTooLow "intrigue", I can write statIsTooLow "intrigue". And if I ever decide to change internals of errors again, I can change how these functions are defined and hopefully don’t have to change each and every place where they’re being used.

Different solution

Another way to tackle this problem is to use records instead of algebraic data types:

data ECode = ECode
    { httpCode :: Int
    , description :: Text
    }

statIsTooLow :: Text -> ECode
statIsTooLow s =
    ECode
    { httpCode = 400
    , description = "Stat " ++ s ++ " is too low"
    }

hpr3391 :: HPR Community News for July 2021

HPR Volunteers talk about shows released and comments posted in July 2021


Hosted by HPR Volunteers on 2021-08-02 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 (0)

New hosts

There were no new hosts this month.

Last Month's Shows

Id Day Date Title Host
3369 Thu 2021-07-01 Linux Inlaws S01E33: The Return of the Rust monochromec
3370 Fri 2021-07-02 More Free Images? Ahuka
3371 Mon 2021-07-05 HPR Community News for June 2021 HPR Volunteers
3372 Tue 2021-07-06 HPR 2020 - 2021 New Years Eve Show Episode 8 Honkeymagoo
3373 Wed 2021-07-07 HPR RPG Club reviews Starfinder klaatu
3374 Thu 2021-07-08 Why I love the MacBook Mid 2010 swift110
3375 Fri 2021-07-09 Car ODB2 Fun and Fail operat0r
3376 Mon 2021-07-12 Making books with Linux - part 2 Dave Morriss
3377 Tue 2021-07-13 Chromebook support and more Zen_Floater2
3378 Wed 2021-07-14 A bit of my experience with Starlink internet service Jezra
3379 Thu 2021-07-15 Linux Inlaws S01E34: The one with the intelligence monochromec
3380 Fri 2021-07-16 Building a Better Goodreads with ActivityPub Ahuka
3381 Mon 2021-07-19 Learning to skate klaatu
3382 Tue 2021-07-20 How I fixed a fault on my car for free thanks to YouTube MrX
3383 Wed 2021-07-21 My gEeeky Experiment - Part 1 Claudio Miranda
3384 Thu 2021-07-22 Page Numbers in EPUB eBook Files Jon Kulp
3385 Fri 2021-07-23 DIY Cat feeder! operat0r
3386 Mon 2021-07-26 What's for dinner? Dave Morriss
3387 Tue 2021-07-27 Infosec Podcasts Part 5 Grab bag Trey
3388 Wed 2021-07-28 Linux Inlaws S01E35: The Free Software Foundation Europe monochromec
3389 Thu 2021-07-29 Tales of a Tagger Archer72
3390 Fri 2021-07-30 Intro to DOS Series Ahuka

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 18 comments in total.

Past shows

There are 5 comments on 3 previous shows:

  • hpr3357 (2021-06-15) "My terminal journey, part 02." by Some Guy On The Internet.
    • Comment 2: Some Guy On The Internet on 2021-07-08: "apt-mark hold"

  • hpr3367 (2021-06-29) "Making books with linux - part 1" by Andrew Conway.
    • Comment 1: Jon Kulp on 2021-07-11: "Page numbers"
    • Comment 2: dangerseeker on 2021-07-16: "Fonts and LaTeX"

  • hpr3368 (2021-06-30) "Infosec Podcasts Part 4 - Social Engineering Podcasts" by Trey.
    • Comment 1: Porkchop on 2021-07-01: "recommendation"
    • Comment 2: Trey on 2021-07-05: "Thanks for the feedback, Porkchop."

This month's shows

There are 13 comments on 8 of this month's shows:

  • hpr3369 (2021-07-01) "Linux Inlaws S01E33: The Return of the Rust" by monochromec.
    • Comment 1: Kevin O'Brien on 2021-07-01: "I loved the show"

  • hpr3371 (2021-07-05) "HPR Community News for June 2021" by HPR Volunteers.
    • Comment 1: frank on 2021-07-05: "A comment on your comment about my comment"
    • Comment 2: Trey on 2021-07-05: "Congrats on joining the Ham community!"
    • Comment 3: Ken Fallon on 2021-07-06: "Errors in comments"
    • Comment 4: b-yeezi on 2021-07-06: "Ranger previously on HPR"

  • hpr3372 (2021-07-06) "HPR 2020 - 2021 New Years Eve Show Episode 8" by Honkeymagoo.
    • Comment 1: Honkeymagoo on 2021-05-11: "Thanking"

  • hpr3377 (2021-07-13) "Chromebook support and more" by Zen_Floater2.
    • Comment 1: Clinton Roy on 2021-07-13: "Well,"

  • hpr3381 (2021-07-19) "Learning to skate" by klaatu.
    • Comment 1: Jon Kulp on 2021-07-21: "Consultant available"
    • Comment 2: Jon Kulp on 2021-07-21: "Skate Shoes"

  • hpr3383 (2021-07-21) "My gEeeky Experiment - Part 1" by Claudio Miranda.
    • Comment 1: Zen_floater2 on 2021-07-22: "Why I love OpenBSD"

  • hpr3388 (2021-07-28) "Linux Inlaws S01E35: The Free Software Foundation Europe" by monochromec.
    • Comment 1: Brian-in-ohio on 2021-07-30: "free speech"

  • hpr3390 (2021-07-30) "Intro to DOS Series" by Ahuka.
    • Comment 1: Brian-in-ohio on 2021-07-30: "great show"
    • Comment 2: Kevin O'Brien on 2021-07-30: "You are most welcome"

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:

http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-July/thread.html

Events Calendar

With the kind permission of LWN.net we are linking to The LWN.net Community Calendar.

Quoting the site:

This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.

Any other business

Older HPR shows on archive.org

This month 35 additional shows in the range 1-870 have been uploaded.

Since we don't want to upload shows without summaries or tags the old shows and tag and summary projects are now tied together. So we will be all the more welcoming of tag and summary updates submitted as described on the summary page.

Tags and Summaries

Thanks to the following contributors for sending in updates in the past month:
Archer72, Rho`n, Dave Morriss

Over the period tags and/or summaries have been added to 71 shows which were without them.

There are currently 222 shows which need a summary and/or tags.

If you would like to contribute to the tag/summary project visit the summary page at https://hackerpublicradio.org/report_missing_tags.php and follow the instructions there.


hpr3390 :: Intro to DOS Series

We begin some technological archeology to explore the old warhorse, DOS.


Hosted by Ahuka on 2021-07-30 is flagged as Clean and released under a CC-BY-SA license.
Tags: DOS, early PC computing.
Listen in ogg, spx, or mp3 format. Series: DOS | Comments (2)

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.


hpr3389 :: Tales of a Tagger

Adventures and mishaps tagging past shows


Hosted by Archer72 on 2021-07-29 is flagged as Clean and released under a CC-BY-SA license.
Tags: tags,mplayer,Android,Termux,vim,i3 window manager.
Listen in ogg, spx, or mp3 format. Comments (0)

https://hackerpublicradio.org/report_missing_tags.php

Shows without a summary and/or tags

Page generated on 2021-06-11 at 20:43:39 UTC

Sort order: id

Current counts

  • 323 shows without summaries
  • 306 shows without tags
  • 275 shows with neither summaries nor tags
  • 354 shows which need work

Instructions

  1. Find a show in the list below
  2. Check in the list which attributes are missing: summary and/or tags
  3. Click the show number or title to visit the show page
  4. Read the show notes and listen to the show to determine the missing information
  5. Submit your updates by email to tags at hackerpublicradio.org

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!

Format the message as follows:

show:12345
summary:Using Linux at Christmas to make tomato soup in a sporran
tags:linux,christmas,sporran,tomato soup

show: 12346
tags: sausage,clothing,hairpiece
  • Start with the show:XXXX line (just the show number, no 'hpr')
  • If either the summary or the tags are already present on the show you can omit them from the group
  • It's not possible to change existing summaries or tags by this route, only to add missing ones
  • Ensure the summary text isn't longer than 100 characters
  • The tags need to be separated by commas
  • If you need to add a tag with a comma in it enclose the tag in double quotes
  • The length of the tag list can't exceed 200 characters
  • You can update more than one show per email if you want
  • Blank lines between the groups of show/summary/tags lines are fine (as shown), as are comment lines beginning with '#'

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.

  1. Got carried away and broke the 100 character rule
    • 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.
  2. Went a little too far with tags, and went pretty far beyond the 200 character
  3. Found that these are reasonable limits, that if not followed, break the script
  4. Don't be like me. Gently use these tools and they will serve you well.
  5. Here are some of the tools I used when tagging was done right.
    1. i3 window manager
      • Use mplayer and vim
    2. Mplayer
      • Play audio file faster without pitch increase

      • https://kenfallon.com/speeding-up-speech-with-mplayer
        { key will slow down by 50% of the current rate
        [ key will slow down by 10% of the current rate
        Backspace will return the speed to normal
        ] key will speed up 10% of the current rate
        } key will speed up by 50% of the current rate
        9 key will decrease the volume
        0 key will increase the volume

        alias mplayer='mplayer -af scaletempo'

    3. Android - Termux
  6. Enjoy old shows and lend a hand at the same time. :)

hpr3388 :: Linux Inlaws S01E35: The Free Software Foundation Europe

An interview with Matthias Kirschner, Free Software Foundation Europe

Hosted by monochromec on 2021-07-28 is flagged as Explicit and released under a CC-BY-SA license.
Tags: FSFE, FSF, Stallman, Hackathon, Communism, Towel Day.
Listen in ogg, spx, or mp3 format. Series: Linux Inlaws | Comments (1)

In this episode our aging heroes host the Free Software Foundation Europe (FSFE). Its president, Matthias Kirschner talk about the past, the present and the future of free and open source software not only from an FSFE perspective. Never mind how he got into computers in the first place. Also, different opinions about communism in general and its implementations (and the flaws of the first rounds of implementations) are touched upon. So historians, FLOSS users and enthusiasts, communists and free spirits: This is your episode! Plus: Ever wondered what the Towel Day is all about? Check out the second half of the episode! At our guest's request: Please note that this episode was recorded on June 1st 2021.

Links:


hpr3387 :: Infosec Podcasts Part 5 Grab bag

Presenting my favorite podcasts related to various aspects of information security

Hosted by Trey on 2021-07-27 is flagged as Explicit and released under a CC-BY-SA license.
Tags: infosec, podcasts, security.
Listen in ogg, spx, or mp3 format. Series: Podcast recommendations | Comments (0)

Inoffensive in every region of the world.

Thank you to everyone who has listened to my previous episodes. I hope I am not boring you all to death!

Why am I recording this series?

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

Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:

  • Part 1 - News & Current Events
  • Part 2 - General Information Security
  • Part 3 - Career & Personal Development
  • Part 4 - Social Engineering
  • Part 5 -
    • Hacks & Attacks
    • Technical Information & Learning
    • Infosec Community / Social / History
  • Part 6 - Infosec Leadership

Part 5

Hacks & Attacks

  • Malicious Life Ran Levi sponsored by Cybereason (Periodically)

  • Darknet Diaries - Jack Rhysider (Bi-Weekly)

Technical information / learning

  • Digital Forensic Survival Podcast - Michael Leclair (Weekly)

  • The Offensive Security Podcast - TJ Null and Jeremy Miller (Harbinger) and sponsored by Offensive Security (Creators of the OSCP Offensive Security Certified Professional certification)

    • Probably belongs in the Career & Personal Development category, but I discovered it after I had already recorded that episode.
    • Interviews with Red team practitioners and other security professionals, related to the various certifications and training available with Offensive Security.
    • https://www.offensive-security.com/podcast/

Community / Social / History

  • Command Line Heroes - Saron Yitbarek and sponsored by Red Hat (Weekly with gaps between seasons)

  • Beers with Talos - Mitch Neff, Craig Williams, Joel Esler, Matt Olney all part of Cisco Talos Research Center (Periodically)

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.

The next and final episode of this series will be about Information Security Leadership podcasts.

Thank you for listening.


hpr3386 :: What's for dinner?

Some scripts and a database for randomly choosing which meal to cook


Hosted by Dave Morriss on 2021-07-26 is flagged as Explicit and released under a CC-BY-SA license.
Tags: Perl,SQLite3,database,food.
Listen in ogg, spx, or mp3 format. Comments (0)

Overview

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.

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 choose_meal, 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!

It wasn’t long before choose_meal was rewritten in Perl. This time I decided to use a database, and chose SQLite to create it. My database contained just two tables, one for the meals themselves (called slightly confusingly 'meal_history'), and another for a record of the choices made (called 'meal_log') – the ability to produce historical reports seemed like a desirable feature!

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.

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 GitLab repository and the preparation of this show was begun.

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.

I might rethink this in the future however.

Long notes

Follow this link to read the detailed notes associated with this episode.

  • Perl

    • Perl 5: (currently v5.35.0)
    • Raku: originally called Perl 6, a totally different scripting language.
    • Perl 7: updates to Perl 5, removal of some historical stuff
  • SQLite: a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.

  • GitLab repository for Weekly Menus



Previous five weeks

hpr3384 :: Page Numbers in EPUB eBook Files hosted by Jon Kulp

Released: 2021-07-22. Duration: 00:28:19. Flag: Clean.
Tags: ebooks, epub, scripting, calibre.
Response to HPR 3367 I describe how to specify page numbers in an EPUB eBook.

hpr3383 :: My gEeeky Experiment - Part 1 hosted by Claudio Miranda

Released: 2021-07-21. Duration: 00:17:09. Flag: Clean.
Tags: asus,eeepc,openbsd,bsd,linux.
ClaudioM talks about how he revived his lowly Asus Eee PC 901 netbook with OpenBSD.

hpr3382 :: How I fixed a fault on my car for free thanks to YouTube hosted by MrX

Released: 2021-07-20. Duration: 00:12:40. Flag: Explicit.
Tags: Car, Repair, Hack, DIY.
How I fixed a fault on my car for free and as an added bonus without injuring myself!

hpr3381 :: Learning to skate hosted by klaatu

Released: 2021-07-19. Duration: 00:35:52. Flag: Clean.
Tags: skateboard.
Klaatu goes for a walk, and talks about learning to ride a skateboard

hpr3380 :: Building a Better Goodreads with ActivityPub hosted by Ahuka

Released: 2021-07-16. Duration: 00:11:38. Flag: Clean. Series: Social Media.
Tags: social media, alternative, Fediverse, ActivityPub, Goodreads, library.
This episode looks at the popular application Goodreads to see if it can be done better.

hpr3379 :: Linux Inlaws S01E34: The one with the intelligence hosted by monochromec

Released: 2021-07-15. Duration: 00:45:16. Flag: Explicit. Series: Linux Inlaws.
Tags: GPT-3, OpenAI, Elon Musk, Microsoft, Bitcoin, meta-programming.
Part four of the three-part miniseries on deep learning and artificial intelligence

hpr3378 :: A bit of my experience with Starlink internet service hosted by Jezra

Released: 2021-07-14. Duration: 00:10:08. Flag: Clean.
Tags: internet, leo, satellites, ISP.
some ramblings about satellite internet service and how Starlink is different

hpr3377 :: Chromebook support and more hosted by Zen_Floater2

Released: 2021-07-13. Duration: 00:16:34. Flag: Explicit.
Tags: chromebook, AntiX, NomadBSD, GUIX, bath.
I've run into disaster using my chrome book

hpr3376 :: Making books with Linux - part 2 hosted by Dave Morriss

Released: 2021-07-12. Duration: 00:48:39. Flag: Explicit.
Tags: Markdown,Pandoc,Template Toolkit,PDF.
Part 2 of a discussion about how two HPR hosts create books

hpr3375 :: Car ODB2 Fun and Fail hosted by operat0r

Released: 2021-07-09. Duration: 00:10:17. Flag: Clean.
Tags: car,auto,odb2.
I try to figure out ODB2 stuff again

hpr3374 :: Why I love the MacBook Mid 2010 hosted by swift110

Released: 2021-07-08. Duration: 00:23:51. Flag: Clean.
Tags: technology,Apple,MacBook,laptop.
I talk about the upgrades I made to the machine and how it's benefited me since I got it

hpr3373 :: HPR RPG Club reviews Starfinder hosted by klaatu

Released: 2021-07-07. Duration: 01:26:15. Flag: Explicit. Series: Tabletop Gaming.
Tags: rpg, cyberpunk, science fiction.
Starfinder is a sci-fi RPG using Dungeons & Dragons 3.5 rules

hpr3372 :: HPR 2020 - 2021 New Years Eve Show Episode 8 hosted by Honkeymagoo

Released: 2021-07-06. Duration: 01:39:07. Flag: Explicit.
Tags: HPR,community,new years eve.
the hpr community stops by for a chat

hpr3371 :: HPR Community News for June 2021 hosted by HPR Volunteers

Released: 2021-07-05. Duration: 01:06:28. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
Dave and Ken talk about shows released and comments posted in June 2021

hpr3370 :: More Free Images? hosted by Ahuka

Released: 2021-07-02. Duration: 00:14:29. Flag: Clean. Series: GIMP.
Tags: Stock Photos, Creative Commons, Free Photos.
We look at some more free photo sites to see if they are really free

hpr3369 :: Linux Inlaws S01E33: The Return of the Rust hosted by monochromec

Released: 2021-07-01. Duration: 01:04:29. Flag: Explicit. Series: Linux Inlaws.
Tags: Rust, actix, unsafe code, bulleted lists, pubs, OpenSearch.
A show with Steve Klabnik on corroded metal, hipster programming languages and the analogue world

hpr3368 :: Infosec Podcasts Part 4 - Social Engineering Podcasts hosted by Trey

Released: 2021-06-30. Duration: 00:06:57. Flag: Clean. Series: Podcast recommendations.
Tags: infosec, podcasts, security, social engineering.
Presenting my favorite information security podcasts which focus on social engineering

hpr3367 :: Making books with linux - part 1 hosted by Andrew Conway

Released: 2021-06-29. Duration: 00:56:07. Flag: Clean.
Tags: linux,books,ebooks,scripts.
A discussion about assembling books using simple tools commonly found in most linux distros.

hpr3366 :: HPR 2020 - 2021 New Years Eve Show Episode 7 hosted by Honkeymagoo

Released: 2021-06-28. Duration: 02:43:23. Flag: Explicit.
Tags: HPR,community,new years eve.
the hpr community stops by for a chat

hpr3365 :: Diablo 2 Portable and Modding hosted by operat0r

Released: 2021-06-25. Duration: 00:07:32. Flag: Clean.
Tags: diablo 2,video games,gaming,modding,hacking,median xl,plug y.
I talk about Diablo 2 and modding

hpr3364 :: Part One - all the covid crap hosted by Clinton Roy

Released: 2021-06-24. Duration: 00:01:39. Flag: Clean.
Tags: covid19,coffee.
My new coffee pot, covid motivation

hpr3363 :: Electronics podcasts I listen to hosted by Archer72

Released: 2021-06-23. Duration: 00:05:19. Flag: Clean. Series: Podcast recommendations.
Tags: electronics, robots, space exploration, engineering.
I go over the 4 electronics podcasts I am currently listening to.

hpr3362 :: Spam Bot Honey Pot: Eating your own dog food hosted by Rho`n

Released: 2021-06-22. Duration: 00:19:08. Flag: Clean.
Tags: Spam,HTML,Forms,accessibility,screen reader.
Reviewing some stats and the accessibility by screen reader of this spam filter method.

hpr3361 :: HPR 2020 - 2021 New Years Eve Show Episode 6 hosted by Honkeymagoo

Released: 2021-06-21. Duration: 03:32:18. Flag: Explicit.
Tags: HPR,community,new years eve.
the hpr community stops by for a chat

hpr3360 :: Android Malware Alert hosted by Ahuka

Released: 2021-06-18. Duration: 00:11:05. Flag: Clean. Series: Privacy and Security.
Tags: Android, malware.
A look at some security issues in Android

hpr3359 :: Linux Inlaws S01E32: Politicians and artificial intelligence part 3 hosted by monochromec

Released: 2021-06-17. Duration: 00:47:10. Flag: Explicit. Series: Linux Inlaws.
Tags: Keras, scitkit-learn, neural networks, Mars, Twix, Limitless, Life.
Part 3 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)

hpr3358 :: BlastEm! A wicked awesome Sega Genesis/Megadrive emulator hosted by sigflup

Released: 2021-06-16. Duration: 00:22:00. Flag: Clean.
Tags: genesis megadrive emulation.
This is an interview with the author of BlastEm, a Sega Genesis/Megadrive emulator

hpr3357 :: My terminal journey, part 02. hosted by Some Guy On The Internet

Released: 2021-06-15. Duration: 00:31:30. Flag: Clean. Series: Apt Spelunking.
Tags: terminal, apt-get, apt-cache, apt-mark, dpkg.
Becoming terminal friendly.

hpr3356 :: HPR 2020 - 2021 New Years Eve Show Episode 5 hosted by Honkeymagoo

Released: 2021-06-14. Duration: 04:41:45. Flag: Explicit.
Tags: HPR,community,New Years Eve.
the hpr community stops by for a chat

hpr3355 :: Tiki Hell hosted by operat0r

Released: 2021-06-11. Duration: 00:12:41. Flag: Clean.
Tags: outdoor, tiki.
I talk about my thoughts on outdoor torches

hpr3354 :: My Devices hosted by operat0r

Released: 2021-06-10. Duration: 00:24:15. Flag: Clean.
Tags: devices.
I walk around my house and talk about any interesting Devices i have

hpr3353 :: My terminal journey, part 01. hosted by Some Guy On The Internet

Released: 2021-06-09. Duration: 00:46:54. Flag: Clean. Series: Apt Spelunking.
Tags: terminal, apt-get, apt-cache, .bashrc.
Becoming terminal friendly.

hpr3352 :: HPR 2020 - 2021 New Years Eve Show Episode 4 hosted by Honkeymagoo

Released: 2021-06-08. Duration: 01:06:33. Flag: Explicit.
Tags: HPR,community,new years eve.
the hpr community stops by for a chat

hpr3351 :: HPR Community News for May 2021 hosted by HPR Volunteers

Released: 2021-06-07. Duration: 01:05:56. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
The HPR Matrons are doing the rounds.

hpr3350 :: Blending Layers hosted by Ahuka

Released: 2021-06-04. Duration: 00:22:01. Flag: Clean. Series: GIMP.
Tags: GIMP, Layers, Layer Modes, Opacity.
GIMP has a number of ways you can blend layers together

hpr3349 :: Linux Inlaws S01E31: Interview with Paul Ramsey FOSS aficionado and entrepreneur hosted by monochromec

Released: 2021-06-03. Duration: 01:05:23. Flag: Explicit. Series: Linux Inlaws.
Tags: PostgreSQL,PostGIS.
An interview with Paul Ramsey, FLOSS entrepreneur and OpenGeo fame

hpr3348 :: Feedback on the Article by hedorah about HPR hosted by Ken Fallon

Released: 2021-06-02. Duration: 01:13:40. Flag: Explicit.
Tags: HPR, policy decisions.
Join the policy discussions on the mail list

hpr3347 :: Ethical Analysis of Renewable Energy and Conservation hosted by Paul Quirk

Released: 2021-06-01. Duration: 00:15:04. Flag: Clean.
Tags: Ethics,renewable,energy,poverty,solar,wind,conservation,green.
I read a paper I wrote about the ethical issues of renewable energy and conservation efforts.

hpr3346 :: HPR 2020 - 2021 New Years Eve Show Episode 3 hosted by Honkeymagoo

Released: 2021-05-31. Duration: 02:54:48. Flag: Explicit.
Tags: HPR,community,new years eve.
the hpr community stops by for a chat

hpr3345 :: Audio for Podcasting: Episode 2 - Equalization hosted by Thaj Sara

Released: 2021-05-28. Duration: 00:16:05. Flag: Explicit.
Tags: audio production, equalization, audio quality.
Thaj shares tips and tricks on producing quality audio for HPR episodes

Older Shows

Get a full list of all our shows.