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

Hacker 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, 6 months, 6 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 26 days.

Meet the team

Please help out tagging older shows !


Latest Shows


hpr2774 :: CJDNS and Yggdrasil

A summary of the things I like about CJDNS and Yggdrasil, and the places I think they could improve.

Hosted by aldenp on 2019-03-21 is flagged as Clean and released under a CC-BY-SA license.
Tags: CJDNS,Yggdrasil.
Listen in ogg, spx, or mp3 format. Comments (2)

This is my first time doing this sort of thing, so I’m sorry if it’s not very good.


hpr2773 :: Lead/Acid Battery Maintenance and Calcium Charge Voltage

Discussion on installing new Calcium battery into older vehicle and resulting maintenance issues.

Hosted by Floyd C Poynter on 2019-03-20 is flagged as Clean and released under a CC-BY-SA license.
Tags: automotive, battery, maintenance, charger.
Listen in ogg, spx, or mp3 format. Comments (2)

Although Lead/Acid batteries are old tech, the use of Calcium as an alloy metal has been a more modern development. Unfortunately many people do not realize this causes an incompatibility with older vehicles due to charging voltage. This episode discusses the use of smart chargers for long term battery maintenance.


hpr2772 :: My applications and software part 3

A short show about the software I use in Linux Mint

Hosted by Tony Hughes AKA TonyH1212 on 2019-03-19 is flagged as Clean and released under a CC-BY-SA license.
Tags: Software, applications, utilities.
Listen in ogg, spx, or mp3 format. Comments (0)

Hallo HPR listeners – in my recent episodes hpr2738 and hpr2746 I talked about some of the applications and software I regularly use as part of my day to day use of Linux Mint. This follow up show will continue with a few more of the same.

  • CUPS – Common Unix Printing Software; printing in Linux with this utility is fairly well supported, if you don’t have a very recent printer it’s a good chance that CUPS will be able to find a driver for your printer if a Linux one has not been supplied when you bought it or through the manufacturers support site. In the menu just search for print and it will bring up the application for adding a new printer.

  • Gparted – fully featured disc management tool for formatting and partitioning discs

  • Document viewer – generic pdf viewer

  • Software manager

    • Synaptic package manager
  • Terminal – apt command for updating the system and installing new software

  • get_iplayer


hpr2771 :: Embedding hidden text in Djvu files

Part 2 of Klaatu's Djvu mini series

Hosted by klaatu on 2019-03-18 is flagged as Clean and released under a CC-BY-SA license.
Tags: pdf, ebook, bloat, djvu.
Listen in ogg, spx, or mp3 format. Comments (0)

To embed text into a Djvu file, you must create a djvused script detailing the page and bitmap location of one of: character, word, line, paragraph, or region.

For good measure, you should first list the contents of your Djvu bundle:

$ djvused -e 'select; ls' test.djvu
   1 P   177062  p0001.djvu
   2 P   199144  p0002.djvu
   3 P    12323  p0003.djvu
   4 P    57059  p0004.djvu
   5 P    96725  p0005.djvu
   6 P    53868  p0006.djvu

Then define the location of text in a file called, for instance, content.dsed. Assume that my page is 1000 px by 1000 px:

select; remove-ant; remove-txt

select "p0004.djvu" # page 4
set-txt
(page 0 0 1000 1000
 (word 100 600 450 800 "Hello" )
 (word 100 600 450 800 "world" ))

.

select "p0005.djvu"
set-txt
(page 0 0 1000 1000
 (line 100 400 900 600 "Hacker Puppy Radio"))

Apply this script to your Djvu file with dvjused:

djvused -f ./content.dsed -s test.djvu

Converting from PDF to Djvu

You can convert PDF files to Djvu with the djvudigital command. Due to license incompatibility, it does require you to compile a Ghostscript plugin, but it's an easy build. Get the gsdjvu code, and then follow its README instructions.

Once you've built the Ghostscript driver, you can convert PDF to Djvu:

djvudigital --words foo.pdf foo.djvu

hpr2770 :: Navigating the maze of RPG books

There are so many kinds of RPG books out there, where do you start? Klaatu tells all!

Hosted by klaatu on 2019-03-15 is flagged as Clean and released under a CC-BY-SA license.
Tags: book,rpg,game.
Listen in ogg, spx, or mp3 format. Series: Tabletop Gaming | Comments (0)

Taxonomy of RPG-related books:

  1. Rulebooks tell you how to play the game.

  2. Optional books of rules add modular components to the base game. They add nuance to specific actions (for example, a book might add rules on owning and managing a castle in a fantasy world, or it might add rules on hacking in a sci fi game; these are things you can do without rules in the game, but if you want added stakes, then these books are ones you would want to obtain).

  3. Adventures (formerly called "modules") provide game plots and locations, in the event that you have no interest in designing your own.

  4. Source books or "settings" provide additional information on the setting of a game, sometimes even providing an alternate game universe with additional rules.

  5. Extra media, like novels, comics, movies, and video games, provide more information (sometimes in canon, sometimes not) about the game universe in which you are playing. Rarely do these have impact on the rules of the game, but they may provide a common language and shared experience for the players.

The only essential purchase is the rulebook. Everything else can be generated by gamers. Purchasing additional material is optional, and can either be seen as a great way to support a company providing your entertainment, or as an insidious plot by greedy corporations to rope you into a perpetual cycle of capitalism. However, RPG is a pretty healthy (and often open) system, so free and open content abounds.


hpr2769 :: Quick Review of the AstroAI WH5000A Multimeter

NYbill reviews, yet another, inexpensive multimeter.


Hosted by NYbill on 2019-03-14 is flagged as Clean and released under a CC-BY-SA license.
Tags: multimeter, electronics, test equipment, hardware review.
Listen in ogg, spx, or mp3 format. Comments (0)

NYbill does yet another inexpensive multimeter review. This time the AstroAI WH5000A. (Its time for a multimeter intervention!)

The meter:

Pics for the episode:


hpr2768 :: Writing Web Game in Haskell - Planetary statuses

tuturto describes system for recording planetary statuses in their game

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

Intro

In episode hpr2748 Writing Web Game in Haskell - Special events, I talked about how to add special events in the game. One drawback with the system presented there was that the kragii worms might attack planet that already had kragii worms present. This time we’ll look into how to prevent this. As a nice bonus, we also come up with system that can be used to record when a planet has particularly good harvest season.

Data types and Database

We need a way to represent different kinds of statuses that a planet might have. These will include things like on going kragii attack or a particularly good harvest season. And since these are will be stored in database, we are also going to use derivePersistField to generate code needed for that.

data PlanetaryStatus =
    GoodHarvest
    | PoorHarvest
    | GoodMechanicals
    | PoorMechanicals
    | GoodChemicals
    | PoorChemicals
    | KragiiAttack

derivePersistField "PlanetaryStatus"

We could have recorded statuses as strings, but declaring a separate data type means that compiler can catch typos for us. It also makes code easier to read as PlanetaryStatus is much more informative than String or Text.

For database, we use following definition shown below in models file. It creates database table planet_status and respective Haskell data type PlanetStatus. There will be one row in database for each status that a planet has. I could have stored all statuses in a list and store that in database, effectively having one row for any planet. Now there’s one row for any planet + status combination. Choice wasn’t really based on any deep analysis, but merely a gut feeling that this feels like a good idea.

PlanetStatus json
    planetId PlanetId
    status PlanetaryStatus
    expiration Int Maybe
    deriving Show Read Eq

expiration column doesn’t have NOT NULL constraint like all other columns in the table. This is reflected in PlanetStatus record where data type of planetStatusExpiration is Maybe Int instead of Int. So some statuses will have expiration time, while others might not. I originally chose to represent time as Int instead of own data type, but I have been recently wondering if that was really a good decision.

Kragii attack, redux

Code that does actual database query looks pretty scary on a first glance and it’s rather long. First part of the code is there to query database and join several tables into the query. Second part of the code deals with counting and grouping data and eventually returning [Entity Planet] data that contains all planets that match the criteria.

-- | Load planets that are kragii attack candidates
kragiiTargetPlanets :: (MonadIO m, BackendCompatible SqlBackend backend
                           , PersistQueryRead backend, PersistUniqueRead backend) =>
                           Int -> Int -> Key Faction -> ReaderT backend m [Entity Planet]
kragiiTargetPlanets pop farms fId = do
    planets <- E.select $
        E.from $ (planet `E.LeftOuterJoin` population `E.LeftOuterJoin` building `E.LeftOuterJoin` status) -> do
            E.on (status E.?. PlanetStatusPlanetId E.==. E.just (planet E.^. PlanetId)
                  E.&&. status E.?. PlanetStatusStatus E.==. E.val (Just KragiiAttack))
            E.on (building E.?. BuildingPlanetId E.==. E.just (planet E.^. PlanetId))
            E.on (population E.?. PlanetPopulationPlanetId E.==. E.just (planet E.^. PlanetId))
            E.where_ (planet E.^. PlanetOwnerId E.==. E.val (Just fId)
                      E.&&. building E.?. BuildingType E.==. E.val (Just Farm)
                      E.&&. E.isNothing (status E.?. PlanetStatusStatus))
            E.orderBy [ E.asc (planet E.^. PlanetId) ]
            return (planet, population, building)
    let grouped = groupBy ((a, _, _) (b, _, _) -> entityKey a == entityKey b) planets
    let counted = catMaybes $ fmap farmAndPopCount grouped
    let filtered = filter ((_, p, f) ->
                                p >= pop
                                || f >= farms) counted
    let mapped = fmap ((ent, _, _) -> ent) filtered
    return mapped

In any case, when we’re querying for possible kragii attack candidates, the query selects all planets that are owned by a given faction and have population of at least 10 (left outer join to planet_population table), have at least 5 farming complex (left outer join to building table) and don’t have on going kragii attack (left outer join to planet_status table). This is encapsulated in kragiiTargetPlanets 10 5 function in the kragiiAttack function shown below.

Rest of the code deals with selecting a random planet from candidates, inserting a new planet_status row to record that kragii are attacking the planet and creating special event so player is informed about the situation and can react accordingly.

kragiiAttack date faction = do
    planets <- kragiiTargetPlanets 10 5 $ entityKey faction
    if length planets == 0
        then return Nothing
        else do
            n <- liftIO $ randomRIO (0, length planets - 1)
            let planet = maybeGet n planets
            let statusRec = PlanetStatus <$> fmap entityKey planet
                                         <*> Just KragiiAttack
                                         <*> Just Nothing
            _ <- mapM insert statusRec
            starSystem <- mapM (getEntity . planetStarSystemId . entityVal) planet
            let event = join $ kragiiWormsEvent <$> planet <*> join starSystem <*> Just date
            mapM insert event

Second piece to the puzzle is status removal. In can happen manually or automatically when the prerecorded date has passed. Former method is useful for special events and latter for kind of seasonal things (good harvest for example).

For example, in case of removing kragii attack status, code below serves as an example. The interesting part is deleteWhere that does actual database activity and removes all KragiiAttack statuses from given planet.

removeNews event odds = MaybeT $ do
    res <- liftIO $ roll odds
    case res of
        Success -> do
            _ <- lift $ deleteWhere [ PlanetStatusPlanetId ==. kragiiWormsPlanetId event
                                    , PlanetStatusStatus ==. KragiiAttack
                                    ]
            _ <- tell [ WormsRemoved ]
            return $ Just RemoveOriginalEvent
        Failure -> do
            _ <- tell [ WormsStillPresent ]
    return $ Just KeepOriginalEvent

Removal of expired statuses is done based on the date, by using <=. operator to compare expiration column to given date.

_ <- deleteWhere [ PlanetStatusExpiration <=. Just date]

Other uses and further plans

Like mentioned before, planet statuses can be used for variety of things. One such application is recording particularly good (or poor) harvest season. When such thing occurs, new planet_status record is inserted into database with expiration to set some suitable point in future. System will then automatically remove the status after that date is reached.

In the meantime, every time food production is calculated, we have to check for possible statuses that might affect it and take them into account (as form of small bonus or malus).

While this system is for planet statuses only, similar systems can be build for other uses (like statuses that affect a single ship or whole star system).

Easiest way to catch me nowadays is either via email or on fediverse where I’m tuturto@mastodon.social


hpr2767 :: Djvu and other paperless document formats

A tutorial on how to read and generate djvu files

Hosted by klaatu on 2019-03-12 is flagged as Clean and released under a CC-BY-SA license.
Tags: pdf, ebook, bloat, djvu.
Listen in ogg, spx, or mp3 format. Comments (0)

DjVu is a digital document format with advanced compression technology. DjVu allows for the distribution of very high resolution images of scanned documents, digital documents, and photographs. DjVu viewers are available for the web browser (search for djvujs in Firefox for an extension), the desktop ( Evince, Okular an BSD/Linux, and djview on BSD/Linux/Windows/Mac), and mobile devices.

The toolchain for encoding and decoding DjVu is djvulibre

djvu.js is a Javascript library useful for online viewing.

djvu.org contains sample documents and specification documents.

Creating a djvu file

The tool you use to convert something to the .djvu format depends on your requirements. If you're converting a basic, black-and-white document, then cjb2 (part of the djvulibre distribution) works:


$ cjb2 -dpi 300 foo.tiff
$ ls
foo.tiff
foo.djvu

If you want to convert something more complex, then use c44 (also a part of the djvulibre distribution):


$ c44 -dpi 300 bar.jpg bar.djvu
$ ls
bar.jpg
bar.djvu

To put both of these files in a single DjVu container:


$ djvm -c baz.djvu foo.djvu bar.djvu
$ ls
bar.djvu
baz.djvu
foo.djvu

You can add bookmarks, too. Open a text file called book.marks (or any name you prefer) and enter:


(bookmarks
("Foo" "#1")
("Bar" "#2")
)

And then apply it to your DjVu file:


$ djvused -e 'set-outline book.marks' -s baz.djvu

There's more you can do with DjVu, but this has been an overview of how I use it.


hpr2766 :: Disk enumeration on Linux

Klaatu reviews the various commands used to enumerate drives on Linux

Hosted by klaatu on 2019-03-11 is flagged as Clean and released under a CC-BY-SA license.
Tags: fdisk,dmesg,lsblk,udisks.
Listen in ogg, spx, or mp3 format. Comments (3)

The old way:


$ ls /dev/sd*

Another old way:


$ fdisk --list

An old way to see what you just plugged in:


$ sudo dmesg | tail

Some new tricks:


$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   2.7T  0 disk 
├─sda1   8:1    0  23.3G  0 part 
└─sda2   8:2    0   2.7T  0 part 
sdb      8:16   0   3.9G  0 disk 
sdc      8:32   0 111.8G  0 disk 
├─sdc1   8:33   0   100M  0 part /boot/efi
└─sdc2   8:34   0 111.7G  0 part /
sdd      8:48   0   1.8T  0 disk 
├─sdd1   8:49   0   120G  0 part /var
├─sdd2   8:50   0   120G  0 part /tmp
├─sdd3   8:51   0    60G  0 part /opt
└─sdd4   8:52   0   1.5T  0 part /home
sde      8:64   0 298.1G  0 disk 
├─sde1   8:65   0   500M  0 part 
├─sde2   8:66   0 296.8G  0 part 
└─sde3   8:67   0   826M  0 part 
sdf      8:80   0 931.5G  0 disk 
└─sdf1   8:81   0 931.5G  0 part 
sdg      8:96   1   7.5G  0 disk 
└─sdg1   8:97   1   7.5G  0 part 

User-friendly udisks:


$ udisks --monitor /dev
Ctrl-c
$ udisk --enumerate | sort
/org/freedesktop/UDisks/devices/sda
/org/freedesktop/UDisks/devices/sda1
/org/freedesktop/UDisks/devices/sda2
/org/freedesktop/UDisks/devices/sdb
/org/freedesktop/UDisks/devices/sdc
/org/freedesktop/UDisks/devices/sdc1
[...]
$ udisks --mount /dev/sdc1
Mounted /dev/sdc1 on /media/mythumbdrive
$ udisks --unmount /dev/sdc1

hpr2765 :: My YouTube Subscriptions #3

Part three of my list of subscribed channels


Hosted by Ahuka on 2019-03-08 is flagged as Clean and released under a CC-BY-SA license.
Tags: YouTube, Channels, Subscriptions.
Listen in ogg, spx, or mp3 format. Series: YouTube Subscriptions | Comments (0)

I am subscribed to a number of YouTube channels, and I am sharing them with you


Previous five weeks

hpr2764 :: Personal password algorithms hosted by klaatu

Released: 2019-03-07. Duration: 00:40:44. Flag: Clean. Series: Information Underground.
Tags: password,security,algorithm,puzzle,cipher.
Is it possible to generate a unique password for every site? Klaatu tries.

hpr2763 :: Deepgeek explains SPF records hosted by klaatu

Released: 2019-03-06. Duration: 00:14:09. Flag: Clean. Series: Information Underground.
Tags: email,spf,mx,postfix,smtp.
Confused about SPF? Klaatu was. Here's Deepgeek's explanation.

hpr2762 :: What You Really Are hosted by lostnbronx

Released: 2019-03-05. Duration: 00:16:36. Flag: Clean. Series: Tabletop Gaming.
Tags: gaming, D&D, lostnbronx.
Lostnbronx looks back at his early gaming days.

hpr2761 :: HPR Community News for February 2019 hosted by HPR Volunteers

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

hpr2760 :: What is VNF hosted by JWP

Released: 2019-03-01. Duration: 00:07:25. Flag: Clean. Series: Networking.
Tags: Virtual network function,VNF,network functions virtualization,NFV.
A topic from the Open Networking conference in Amsterdam

hpr2759 :: Cleaning the Potentiometers on a Peavey Bandit 65 hosted by Jon Kulp

Released: 2019-02-28. Duration: 00:20:44. Flag: Clean.
Tags: Guitars, electronics, amplifiers, maintenance, repair.
I disassemble and clean the pots on my Peavey Bandit 65 to fix static in the knobs.

hpr2758 :: Haskell - Data types and database actions hosted by tuturto

Released: 2019-02-27. Duration: 00:42:46. Flag: Clean.
Tags: haskell, database.
Brief summary of how to declare your own datatypes in Haskell and how to store data in database

hpr2757 :: How to DM hosted by klaatu

Released: 2019-02-26. Duration: 00:44:54. Flag: Clean. Series: Tabletop Gaming.
Tags: rpg,dm,gm,game master,dungeon master,dnd.
Klaatu explains how to DM an RPG, and Lostnbronx demonstrates, step by step, how to build a dungeon

hpr2756 :: Bash Tips - 20 hosted by Dave Morriss

Released: 2019-02-25. Duration: 00:32:35. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,array,delete,positional parameters.
Deleting arrays; positional and special parameters in Bash

hpr2755 :: My YouTube Subscriptions #2 hosted by Ahuka

Released: 2019-02-22. Duration: 00:22:09. Flag: Clean. Series: YouTube Subscriptions.
Tags: YouTube, Channels, Subscriptions.
Part two of my list of subscribed channels

hpr2754 :: Craigslist Scam Catch hosted by Edward Miro / c1ph0r

Released: 2019-02-21. Duration: 00:07:40. Flag: Explicit. Series: Privacy and Security.
Tags: craigslist, scam, con, social-engineering, puppy, dog, money, moneygram, infosec, cyber-security 101.
Helped a client avoid being scammed on Craigslist and wanted to share some tips to HPR.

hpr2753 :: Specific Settings In Storytelling hosted by lostnbronx

Released: 2019-02-20. Duration: 00:17:07. Flag: Clean. Series: Random Elements of Storytelling.
Tags: stories, storytelling, setting, lostnbronx.
Lostnbronx looks at why you might choose specific settings for your tales.

hpr2752 :: XSV for fast CSV manipulations - Part 2 hosted by b-yeezi

Released: 2019-02-19. Duration: 00:22:39. Flag: Clean.
Tags: csv,commandline,data.
Part 2 of my introduction to the XSV tool

hpr2751 :: Battling with English - part 3 hosted by Dave Morriss

Released: 2019-02-18. Duration: 00:13:42. Flag: Explicit.
Tags: grammar,spelling,punctuation,word misuse,English.
Misunderstandings about English grammar, spelling, punctuation, etc.

hpr2750 :: Windmill is on the Fritz hosted by Ken Fallon

Released: 2019-02-15. Duration: 00:04:30. Flag: Clean. Series: Hobby Electronics.
Tags: Fritzing, Reverse Engineering, LED.
Using Fritzing to help reverse engineer a circuit in a winter model village windmill

hpr2749 :: Lostnbronx and Klaatu commentary from episode 2743 hosted by klaatu

Released: 2019-02-14. Duration: 00:14:50. Flag: Clean.
Tags: rpg, game, gaming.
Thoughts about RPG character building, modern RPG play style compared to the Old School, and more

hpr2748 :: Writing Web Game in Haskell - Special events hosted by tuturto

Released: 2019-02-13. Duration: 00:44:05. Flag: Clean.
Tags: haskell, yesod.
tuturto walks through implementation of special events in web based game

hpr2747 :: checking oil hosted by brian

Released: 2019-02-12. Duration: 00:05:17. Flag: Explicit.
Tags: automotive.
checking your oil may not be so simple

hpr2746 :: My software part 2 hosted by Tony Hughes AKA TonyH1212

Released: 2019-02-11. Duration: 00:05:26. Flag: Clean.
Tags: Linux Mint 19.1,utilities.
More about the software I use regularly on Linux

hpr2745 :: My YouTube Subscriptions #1 hosted by Ahuka

Released: 2019-02-08. Duration: 00:21:02. Flag: Clean. Series: YouTube Subscriptions.
Tags: YouTube, Channels, Subscriptions.
Part one of my list of subscribed channels

hpr2744 :: Yet Another Rambling Drive Into Work hosted by MrX

Released: 2019-02-07. Duration: 00:33:42. Flag: Explicit.
Tags: Podcast, Cars.
Yet another rambling attempt at making a show on the way into work

hpr2743 :: Character build in the d20 system hosted by klaatu

Released: 2019-02-06. Duration: 01:05:49. Flag: Clean. Series: Information Underground.
Tags: Starfinder,RPG,character,build.
Klaatu and Lostnbronx build an RPG character in the d20 system of Starfinder

hpr2742 :: SAP Hana Certification Directory hosted by JWP

Released: 2019-02-05. Duration: 00:18:05. Flag: Clean.
Tags: SAP HANA,certification.
How the SAP Hana certification works

hpr2741 :: HPR Community News for January 2019 hosted by HPR Volunteers

Released: 2019-02-04. Duration: 01:16:38. Flag: Explicit. Series: HPR Community News.
Tags: Community News.
Yannick Dave and Ken talk about shows released and comments posted in January 2019

hpr2740 :: Pop!_OS 18.10 (quick) review hosted by Yannick the french guy from Switzerland

Released: 2019-02-01. Duration: 00:07:18. Flag: Clean.
Tags: linux,distro,distribution,pop_os,system76,ubuntu.
In this episode, Yannick does a quick review of Pop OS 18.10

hpr2739 :: Bash Tips - 19 hosted by Dave Morriss

Released: 2019-01-31. Duration: 00:25:53. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,array,declare,typeset,local,readonly,read,mapfile,readarray.
Arrays in Bash (part 4)

hpr2738 :: My Applications hosted by Tony Hughes AKA TonyH1212

Released: 2019-01-30. Duration: 00:03:49. Flag: Clean.
Tags: productivity software.
just a short show on the applications I use on my Linux Mint Box

hpr2737 :: My Pioneer RT-707 Reel-to-Reel Tape Deck hosted by Jon Kulp

Released: 2019-01-29. Duration: 00:23:01. Flag: Clean.
Tags: audio, vintage audio, stereo components, audio tape, recording.
An intro to more of my legacy audio equipment.

hpr2736 :: Response to show 2720 hosted by Dave Morriss

Released: 2019-01-28. Duration: 00:18:24. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,ShellCheck.
Some suggestions on how to improve a Bash script

hpr2735 :: Soffritto hosted by Tony Hughes AKA TonyH1212

Released: 2019-01-25. Duration: 00:02:18. Flag: Clean. Series: Cooking.
Tags: Food, cookery, how to, food preparation.
A short episode on a common cookery technique

hpr2734 :: Mashpodder hosted by MrX

Released: 2019-01-24. Duration: 00:18:59. Flag: Explicit.
Tags: Podcast, ncurses, commandline.
A poor rushed attempt at covering the excellent podcast client mashppoder

hpr2733 :: Writing Web Game in Haskell - News and Notifications hosted by tuturto

Released: 2019-01-23. Duration: 00:47:17. Flag: Clean.
Tags: haskell, yesod.
tuturto talks about the game they're writing in Haskell and convoluted news system they made.

hpr2732 :: Storytelling formula compliance hosted by klaatu

Released: 2019-01-22. Duration: 00:28:12. Flag: Explicit. Series: Information Underground.
Tags: story, character, plot, writing.
Telling a story? want a reaction? USE THE FORMULA

hpr2731 :: My 8 bit Christmas hosted by Andrew Conway

Released: 2019-01-21. Duration: 00:26:19. Flag: Clean.
Tags: retro,BBC,8bit,assembler.
I got a new, old computer for Christmas - an Acorn BBC microcomputer model B.

hpr2730 :: Resizing images for vcard on Android hosted by Ken Fallon

Released: 2019-01-18. Duration: 00:11:28. Flag: Explicit.
Tags: GraphicsMagick, ImageMagick, VCard, Android, LinageOS.
Automating the steps needed to get images formatted for VCard import into Android phones

hpr2729 :: Bash Tips - 18 hosted by Dave Morriss

Released: 2019-01-17. Duration: 00:31:38. Flag: Explicit. Series: Bash Scripting.
Tags: Bash,array,indexed array,associative array,parameter expansion.
Arrays in Bash (part 3)

hpr2728 :: The Unreliable Narrator In Storytelling hosted by lostnbronx

Released: 2019-01-16. Duration: 00:13:34. Flag: Clean. Series: Random Elements of Storytelling.
Tags: stories,storytelling,narration,lostnbronx.
Lostnbronx looks at unreliable narrators and narrative techniques in stories.

hpr2727 :: Passwords hosted by Edward Miro / c1ph0r

Released: 2019-01-15. Duration: 00:07:47. Flag: Clean. Series: Privacy and Security.
Tags: Information Security for Everyone.
How to do passwords better.

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

Released: 2019-01-14. Duration: 00:20:49. Flag: Clean.
Tags: kodi, deluge,Sonarr,Plex,Subsonic,SpiderOakONE,Zoneminder,Borg Backup,rclone,Redshift,Audacity.
I go over a high level of my notes for the software on my Media box as it relates to TV/Movies/Music

hpr2725 :: The Illumos Shutdown Command Explained hosted by klaatu

Released: 2019-01-11. Duration: 00:13:32. Flag: Clean.
Tags: sys admin,systems,unix,illumos.
A short pod cast about the Illumos shutdown command

Older Shows

Get a full list of all our shows.