We started producing shows as Today with a Techie on 2005-09-19, 14 years, 2 months, 28 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 12 days.
It’s that time of year again. Time for the Hacker Public Radio
24 hr (26 hr) New Years Eve Show.
For those who don’t know, on New Years Eve 2019-12-31 10:00 UTC
(5:00 AM EST), we will have a recording going on the HPR Mumble
server for anyone to come on and say “Happy New Years” and talk
about whatever they want.
We will leave the recording
going until 2020-01-01 12:00 UTC (7:00 AM EST) or until the
conversation stops.
For those who have never used Mumble
before, see the link below for a how-to explaining the setup of the
desktop Mumble client. Mumble isn’t only available for the desktop,
it is also available for Android and IOS. The Mumble PC client is
available for Linux, Windows and Mac Osx, see the link below.
If you prefer to just listen to the show and not participate using
Mumble, use the link below for the live audio stream using your web
browser or favorite audio application such as VLC.
We are
also going to have an Etherpad for people to share links and info to
things they are discussing. The Etherpad will be used for the HPR
audio shownotes so please feel free to add to it. The entire event
will be broken into 2 to 3 hour segments and made available as HPR
episodes.
So please stop in. Say “Hi” and maybe join
in the conversation with other HPR listeners and contributors. It’s
always a good time!!
How we use old CAS software to give students instant feedback in their maths homework
Hosted by beni on 2019-12-13 is flagged as Clean and released under a CC-BY-SA license. Tags:maths,education,learning.
Listen in ogg, spx, or mp3 format.
Comments (0)
I'm trying to make sure that this show doesn't come across as as advertisment placement on HPR I won't provide a link to our application (which wouldn't help a lot anyway as we don't really have much of a web site anyway.).
However I'll link to some of the technical components:
The Computer Algebra System we use is called Maxima, its history goes back to the early 80s. It's written in common lisp.
We have considered switching to SymPy as a more modern alternative. SymPy doesn't offer the feature completeness Maxima does, though. It has still a long way to go.
Our servers run Debian. The current version is written in PHP but we are working on a new version based on dockerized Django with a JS frontend in Ember along with some micro services written in Go, Python and PHP.
To render math we use MathJax in the current version and KaTeX in the new version. The PDF-export of worksheets is of course done in LaTeX.
I talk about ties, at least the kind I like to wear when the occasion calls for it.
Hosted by Jon Kulp on 2019-12-12 is flagged as Clean and released under a CC-BY-SA license. Tags:Style, Fashion, Recycling, Upcycling, Circuit Boards, Ties, Bowties, Bolo Ties, Neck ties.
Listen in ogg, spx, or mp3 format.
Comments (2)
It's probably because of a non-conformist streak in me, but I've never liked traditional neckties. In fact I never wanted to wear any ties until I got my first bolo tie, which was sufficiently different from everyone else and easy enough to put on that I decided I could wear bolo ties. I've built a collection of about a dozen of these and they always get positive comments, especially the ones made from recycled circuit boards. Recently I've expanded my horizons to include bowties, which have a more formal appearance and the added nerd factor of being difficult to tie for most people. In this episode I talk about my ties.
In this episode I cover functions activated when a button is pushed on the PiFaceCAD board
Hosted by MrX on 2019-12-11 is flagged as Explicit and released under a CC-BY-SA license. Tags:Audio, Podcasts, Linux, Command Line, Python, Raspberry Pi.
Listen in ogg, spx, or mp3 format.
Series: A Little Bit of Python | Comments (0)
Code
The script being discussed in this show is available for download with the previous show: cad-menu.py
Functions
def button0(event):
Play / Pause Button
Print message to lcd and toggle between play and pause for podcasts, then runs init_display to display available options
def button1(event):
Track Information button
Print message to lcd then display current moc track information such as moc state, current time, time left, current playlist number of total playlist number & podcast title.
Example output from command mocp --info
State: PAUSE
File: /home/pi/files/mp3/hpr1597.mp3
Title: Steve Smethurst - HPR1597: Extravehicular Activity (Hacker Public Radio)
Artist: Steve Smethurst
SongTitle: HPR1597: Extravehicular Activity
Album: Hacker Public Radio
TotalTime: 14:11
TimeLeft: 02:47
TotalSec: 851
CurrentTime: 11:24
CurrentSec: 684
Bitrate: 64kbps
AvgBitrate: 64kbps
Rate: 44kHz
def button2(event):
Previous Track Button
Button is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to previous track in playlist. If menu = 2 and button pressed twice within 0.3 then display number of HPR shows in the queue
def button3(event):
Next track Button
Button is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to next track in playlist Button currently has no function if menu = 2
def button4(event):
Toggle backlight Button
If 1st time button is pushed then turn off blinkstick and display main menu else Toggle lcd backlight between on and off
def moc_seek():
Used to seek backward or forward in track being played in mocp SeekPosition is a global variable used to store the current seek position, its value changes up and down when using button6 and button7
def button5(event):
Jogg switch
This button is selected by momentarily pushing in the left/right toggle button. Button located on the top of unit
If menu equals 0 or 1, [PODCASTS or AUDIOBOOKS] menu then
if not in seek menu then display seek menu
if in seek menu then jump forward or back in track by the amount currently displayed on the seek menu, uses function moc_seek()
If menu equals 2, [SYSTEM] menu then
Get date and time information, Clear screen, turn on LCD backlight print the shutdown message with date and time info to lcd & then issue the shutdown command
def button6(event):
Left Jogg switch decrement through menus also used during seek
This button is selected by momentarily pushing the toggle switch to the left. Button located on the top of unit
Button only active if more than 0.3 seconds has passed since it was last pushed, this was added to get around switch bounce causing multiple jumps in menu, think left and right jogg switch is a bit noisy.
If in seek menu
SeekPosition decrements by one until SeekMin is reached, and then returns to 0
each time the display is updated with the decremented value stored in dictionary SeekDisplay
If not in seek menu
Menu decrements down by one until MenuMin is reached then rolls over to MenuMax
def button7(event):
Same as button6 above but instead increments value, i.e. menu or seek value is incremented by 1
def print_ir_code(event):
Used during debugging to get remote control working, came from piface examples page, prints IR code print(event.ir_code)
def ir_play(event):
If the play button is pushed on the remote control twice within 0.5 seconds and if IR is active then toggle backlight and toggle between play and pause
def ir_info(event):
If the info button (pause) is pushed on the remote control twice within 0.5 seconds and if IR is active then toggle backlight and display on the LCD information about the current track
def ir_rewind(event):
If the rewind button is pushed on the remote control and if IR is active then toggle backlight and go to previous track on playlist
def ir_forward(event):
If the forward button is pushed on the remote control and if IR is active then toggle backlight and go to next track on playlist
def ir_stop(event):
If the stop button is pushed on the remote control and if IR is active then toggle backlight
def ir_blue(event):
Activate and deactivate IR buttons on the remote control, turns blinkstick on red when IR active. When blue button is pushed twice within 0.5 seconds on remote control, toggle backlight and display momentary message on LCD display giving IR status i.e. are the remote control buttons active or deactive.
All remote buttons bar this one are affected. This feature was added to remotely disable all the buttons while using the TV remote control media buttons these would sometimes falsely trigger things
The double push of the blue button within 0.5 seconds was added as sometimes a single push of it was required on my TV and this would falsely activate it
Feature added to check if var FirstPass is set to true, i.e. backlight button4 has not pushed since boot
button4 normally toggles backlight but turns off hpr queue LED first time it’s pushed after boot.
Hosted by Brian in Ohio on 2019-12-10 is flagged as Clean and released under a CC-BY-SA license. Tags:bicycle, recumbent, recycle.
Listen in ogg, spx, or mp3 format.
Comments (2)
We talk about terms often used when using Kubernetes
Hosted by Daniel Persson on 2019-12-09 is flagged as Clean and released under a CC-BY-SA license. Tags:kubernetics, basic, terminology.
Listen in ogg, spx, or mp3 format.
Comments (0)
We talk about terms often used when using Kubernetes.
Terms we talk about
Node - Machine to run jobs on.
Cluster - Grouping of nodes to deploy work to.
Container - Compute unit that we can run in the cloud
Pod - One or more containers that are one unit in the cloud that could be started, stopped, or restarted.
Service - Different network services that serve the pods
Load balancers - Balance network calls to different pods
Certmanager - Handles certificates, for instance, let’s encrypt.
Ingress - Handles traffic from the external network
Volumes - External resources used by pods to keep state
ConfigMap - Configuration parameters that could be changed without restarting the pods or deployment.
Deployment - A configuration of all the terms mentioned that you use to deploy as a unit to the cluster.
I have begun to dehydrate fruits and vegetables at home with my own dehydrator, and it lets me have fresher products without all of the additives. In this episode I discuss both the why and the how.
What starts as an Interview and ends in a brain storm.
Hosted by Ken Fallon on 2019-12-05 is flagged as Clean and released under a CC-BY-SA license. Tags:gpodder.net, Josh Clements.
Listen in ogg, spx, or mp3 format.
Series: Interviews | Comments (1)
In today's show Ken interviews Josh Clements from the gpodder.net project.
Josh answered the call to arms he heard on the Ubuntu Podcast. We discuss the plan and explain how you can also get involved.
Hosted by tuturto on 2019-12-04 is flagged as Clean and released under a CC-BY-SA license. Tags:haskell, modules.
Listen in ogg, spx, or mp3 format.
Series: Haskell | Comments (0)
With small programs it’s easy enough to have all code in single file. But as the program grows, you eventually want to organize things into separate files. In this episode I’ll talk a bit how to define modules and how to use them.
Defining
Each module is defined in separate file. In our example, we have file called multiplexer.hs, which contains our module definition.
At the beginning of the file, we have following:
module Multiplexer (mix, match, Plexer, Scooper(..))
where
....
We’re omitting actual function and type definitions as they aren’t important to this episode. In any case, there’s two functions: mix and match and two types: Plexer and Scooper that module exports (that is, these are available outside of the module). Plexer is imported as a type only and Scooper with field accessors or value constructors depending if it’s a record or algebraic datatype.
Using modules
In order to be able to use identifiers defined in separate module, we have to import them into our current one. In our imaginary program, we have main.hs that defines entry point for our program and we would like to import the definitions from Multiplexer module.
Easiest one is to just have import Multiplexer at the start of the main. This brings all exported identifiers from Multiplexer and we can then use them. Both qualified and unqualified names are imported. Qualified means name is prepended with module name: Multiplexer.mix instead of just mix.
If we want, we can specify what exactly should be imported: import Multiplexer (mix, match). This causes only functions mix and match be imported, while Plexer and Scooper are unavailable for us. Again, both qualified and unqualified names are imported.
In case we want only qualified names, we’ll write import qualified Multiplexer. After this mix isn’t available, but Multiplexer.mix is (and all the other identifiers exported by Multiplexer).
Sometimes module name is long and tedious to repeat when using qualified names. In these cases, renaming module while importing is a good option. This can be done by writing import Multiplexer as M. After this, instead of Multiplexer.mix you write M.mix.
Final thing I’m going to mention is importing everything else except specified identifiers. This is done by writing import Multiplexer hiding (mix). This imports everything exported by Multiplexer, except mix.
Summary
There are many ways of importing and they can be mixed. Here’s a list of them:
import qualified Multiplexer as M (Plexer, Scooper(..))
In short:
Some identifiers can be chosen to be imported, while leaving others unimported
Modules can be imported qualified (forcing an obligatory namespace qualifier to imported identifiers).
Some identifiers can be skipped via the hiding clause.
The module namespace can be renamed, with an as clause.
Prelude
Prelude is base module containing lots of helpful types and functions, which is automatically imported by every module. If this is not what you want, there’s two options. First one is to use pragma at start of the file: {-# LANGUAGE NoImplicitPrelude #-}, which causes Prelude not to be imported. Another one is to manually import Prelude, which turns of automatic import: import qualified Prelude as P.
Closing
When system grows, it’s helpful to break it into more manageable pieces. For this we use modules. import is used to bring identifiers from other modules into current one.
Questions, comments and feedback is welcomed. Best way to reach me is either email or in fediverse where I’m tuturto@mastodon.social
These are comments which have been made during the past month, either to shows released during the month or to past shows.
There are 16 comments in total.
Comment 1:
b-yeezi on 2019-11-29:
"Great first episode"
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:
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
Stand at FOSDEM
Our proposal for a “Free Culture Podcasts” stand at FOSDEM was accepted for the Sunday 2nd February. This is fantastic news as this is the largest FLOSS event in Europe and is absolutely thronged the whole day.
Released: 2019-11-28. Duration: 00:07:42. Flag: Explicit. Tags:Pro Wrestling.
A Wrestling podcast reporting on indie wrestling. Today we are talking about different TV styles.
Released: 2019-11-27. Duration: 00:04:36. Flag: Clean. Series:How I Found Linux. Tags:Linux, FreeBSD, Computers.
How I start in Linux, computing, and Free Software
Released: 2019-11-26. Duration: 00:26:02. Flag: Clean. Tags:asciidoc,asciidoctor,lulu,writing,books.
How I evolved from writing with a publisher to self-publishing using open source tools
Released: 2019-11-25. Duration: 00:14:48. Flag: Explicit. Series:A Little Bit of Python. Tags:Podcasts, Linux, Command Line, Python, Raspberry Pi.
In this episode I cover some generic functions at the top of the code.
Released: 2019-11-22. Duration: 00:14:21. Flag: Clean. Series:Privacy and Security. Tags:IT Management, Security.
Looking at an object lesson for proper IT management processes and the cost of failure
Released: 2019-11-21. Duration: 00:23:07. Flag: Explicit. Series:Blockchain. Tags:blockchain, privacy.
Grin and Beam are two mimblewimble implementations that are very different & we take a look at both
Released: 2019-11-19. Duration: 00:21:01. Flag: Clean. Series:Blockchain. Tags:blockchain, privacy.
mimblewimble is a new blockchain protocol for scalability, privacy and fungibility
Released: 2019-11-14. Duration: 00:16:29. Flag: Clean. Series:Networking. Tags:command line networking.
I try to add a bit more basic networking info while writing a quick script for Dave Morris
Released: 2019-11-12. Duration: 00:08:29. Flag: Clean. Tags:lisp, programming.
A very wooden and scripted episode about why I love the lisp programming language family
Released: 2019-11-11. Duration: 00:38:51. Flag: Clean. Tags:server,container,docker,serverless,cloud,sys admin,kubernetes.
Klaatu introduces Minishift, a local test environment for a single-node cloud
Released: 2019-11-08. Duration: 00:12:58. Flag: Clean. Series:Social Media. Tags:Fediverse, social media, federated, alternative.
Mastodon is the federated alternative to Twitter.
Released: 2019-11-07. Duration: 00:10:01. Flag: Clean. Series:Podcasting HowTo. Tags:podcast, hpr, how-to.
This is a 10 step walkthrough of submitting a show to HPR
Released: 2019-11-05. Duration: 00:48:57. Flag: Clean. Series:Lord D Film Reviews. Tags:review, film, lord d.
Lostnbronx reviews an old screwball comedy.
Released: 2019-11-04. Duration: 00:41:54. Flag: Explicit. Series:HPR Community News. Tags:Community News.
Ken discusses last months shows and talks about OggCamp, FLOSS Weekly, FOSDEM, and Star Wars.
Released: 2019-10-30. Duration: 00:14:31. Flag: Explicit. Series:A Little Bit of Python. Tags:Podcasts, Linux, Command Line, Python, Raspberry Pi.
In this series a do whirl wind tour of the Python code I developed for my PifaceCAD board
Released: 2019-10-28. Duration: 00:11:30. Flag: Clean. Tags:self-hosted, docker.
In this episode, I describes my trials and eventual triumph in installing Wallabag
Released: 2019-10-25. Duration: 00:14:46. Flag: Clean. Series:Social Media. Tags:social media, alternative, federated, Fediverse.
Diaspora was the original alternative platform when it went up against Facebook.
Released: 2019-10-24. Duration: 00:08:02. Flag: Clean. Tags:Ubuntu, Mac OSX, File Recovery, Filesystem Repair.
I talk about recovering the files from my wife's dead MacBook Air using an Ubuntu Live CD.
Released: 2019-10-21. Duration: 00:03:01. Flag: Clean. Tags:Full Circle Magazine, Ubuntu, Linux, Free Magazine, Creative Commons.
Just a short show to request support for one of the Linux communities longest standing Magazines
Released: 2019-10-18. Duration: 02:05:41. Flag: Explicit. Tags:LinuxLugCast, FiftyOneFifty, Memorial, Syndication.
We are here tonight to share memories of our friend Donald Grier aka FiftyOneFifty.
Released: 2019-10-17. Duration: 00:06:05. Flag: Clean. Tags:clocks, electronics, decibels, noise levels, alarm clocks, alarms.
I talk about installing a resistor in the speaker wire of an alarm clock so it won't be so loud
Released: 2019-10-16. Duration: 00:29:10. Flag: Explicit. Tags:Audio, Podcasts, Linux, Command Line, Python, Raspberry Pi.
In this episode I cover how I use my 2nd add on board the PiFace Control and Display
Released: 2019-10-14. Duration: 00:48:36. Flag: Clean. Tags:geocaching, outdoors, family.
Dave and his family take a wander around a wood looking for Geocaches
Released: 2019-10-11. Duration: 00:12:09. Flag: Clean. Series:Social Media. Tags:social media, alternative.
MeWe was advertised as another popular alternative to Google Plus.
Released: 2019-10-10. Duration: 00:10:26. Flag: Clean. Series:Programming 101. Tags:canoe, ptython, api, weather.
boats are awesome, but might lead to hosting software in the HPR show notes
Released: 2019-10-09. Duration: 00:26:44. Flag: Clean. Series:Haskell. Tags:haskell, random, monad.
How to selected random item from weighted list using Haskell
Released: 2019-10-07. Duration: 01:08:01. Flag: Explicit. Series:HPR Community News. Tags:Community News.
HPR Volunteers talk about shows released and comments posted in September 2019