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

Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.

In-Depth Series


HPR NYE Show 2018-2019 part 4 - Honkeymagoo | 2019-06-28

Hacker Public Radio New Years Show episode 4

Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019

HPR NYE Show 2018-2019 part 3 - Honkeymagoo | 2019-06-21

Hacker Public Radio New Years Show episode 3

Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019

HPR NYE Show 2018-2019 part 2 - Honkeymagoo | 2019-06-14

Hacker Public Radio New Years Show episode 2

HPR NYE Show 2018-2019 part 1 - Honkeymagoo | 2019-06-07

Hacker Public Radio New Years Show episode 1

Welcome to the 7th Annual Hacker Public Radio show. It is December the 31st 2018 and the time is 10 hundred hours UTC.

"we should have bought stock"

More text to speech trials - Ken Fallon | 2019-05-31

A supplementary show to Jeroens episode HPR2792 :: Playing around with text to speech synthesis on Linux.

I found two addional options. The first is mimic

# dnf info mimic
Summary      : Mycroft's TTS engine
URL          :
License      : BSD
Description  : Mimic is a fast, lightweight Text-to-speech engine developed by Mycroft A.I.
             : and VocalID, based on Carnegie Mellon University’s FLITE software. Mimic takes
             : in text and reads it out loud to create a high quality voice. Mimic's
             : low-latency, small resource footprint, and good quality voices set it apart
             : from other open source text-to-speech projects.

And the second is gTTS which is a interface to the google TTS api.

Are you successful? Click to find out more! - clacke | 2019-05-21

Based on

It’s pretty short, less than 4 minutes, but I think it’s important.

Who defines whether you are successful, or whether your project is successful, and does it matter?

Copy pasta - klaatu | 2019-05-17

You can copy and paste on Linux the same way you do on any other OS: Ctrl+C to copy and Ctrl+V to paste (or use the Edit menu, or a right-click menu).

However, Linux doesn't limit you to just that. The primary GUI environment of Linux (at the time of this recording) is X, and the Inter-Client Communication Conventions Manual defines three X Selection states: Primary, Secondary, and Clipboard. The Secondary is rarely (if ever?) used, so I don't cover it here.


The primary X Selection is anything literally selected at any given moment. If you highlight a word in Firefox with your mouse, for instance, then it becomes the Primary Selection, and it is owned by Firefox. If you press the Middle Mouse Button in any application, then that application asks the owner (Firefox, in this example) for the data contained in the Primary Selection. Firefox sends the data to that application so that it can paste it for you.

A Primary selection remains the Primary Selection until it is overwritten by a new Primary Selection. In other words, text needn't be highlighted to be retained in the Primary Selection slot.


The Clipboard Selection is data that has explicitly been sent to the clipboard by a copy action. This is usually a right-click > Copy or a selection of Edit > Copy. When another application is told to paste from the clipboard, it pastes data from the Clipboard Selection.


You can (and often do) have both a Primary Selection and a Clipboard selection. If you press Ctrl+V, you get the contents of the Clipboard Selection. If you press the middle mouse button, then you get the contents of the Primary Selection.


The xsel command allows you to retrieve the contents of an X Selection.

$ xsel --primary
$ xsel --clipboard

Clipboard managers

Clipboard managers such as Klipper, CopyQ, Parcellite, and so on, provide a history for your clipboard. They track the latest 10 (or so) items you have copied or selected. They can be a little confusing, because they do tend to blur the line between the Primary Selection and the Clipboard Selection, but now that you know the technical difference, it shouldn't confuse you to see them both listed by a clipboard manager designed to conflate them.


GPM is a daemon allowing you to use your mouse without a GUI. Among its features, it permits you to select text in a text console (TTY) and then paste it with the middle mouse button.

GNU Screen and Tmux

Screen and tmux are "window managers for text consoles". I don't tend to use tmux as often as I should, having learnt GNU Screen long ago, so I'm not familiar with the process of copying and pasting with tmux. For Screen, you can copy text in this way:

  1. Press Ctrl+A to get out of insert mode.

  2. Press left-square_bracket to enter copy-mode

  3. Move your text to the position you want to start selecting and press Enter or Return

  4. Arrow to the position at which you want to end your selection and press Enter or Return again

To paste your selection:

  1. Press Ctrl+A to get out of insert mode.

  2. Press right-square_bracket to paste

Spectre and Meltdown and OpenBSD and our future - Zen_Floater2 | 2019-05-16

I discuss the entire Spectre and Meltdown issues and where we might go post an Intel world. My objective is to encourage others to leave Speculative processing backed by management engine based chips. SCATTER HUMANS!!! WE MUST LEAVE!!!!

Should we dump the linux Desktop. - knightwise | 2019-05-15

Knightwise wonders if we should let go of the linux desktop environments and focus on cross-platform applications instead. Please bring your torches and pitchforks.

Is 5G mobile data a danger to your health? - clacke | 2019-05-14

This is mostly verbatim from my Fediverse post, with a few minor edits.

The anti-5G campaign has been cooking for many years now, and at the epicenter of it all are two men, Lennart Hardell and Rainer Nyberg. It’s a Swedish-Finnish phenomenon that is now really making the rounds and spreading internationally, as actual commercial deployment of 5G networks draws nearer.

As a Swede, I apologize. These two do not represent the Swedish or Finnish cancer or radiation research community, and our media have given them far more space in the public discourse than their work merits.

They are heavily quoted in networks of pseudoscience, including anti-vaccine sites, right-wing "alternative facts" sites and Strålskyddsstiftelsen ("Swedish Radiation Protection Foundation"), a private foundation created in 2012 with a deceptive name meant to invoke authority, which has had to be corrected on multiple occasions by the actual Swedish Radiation Safety Authority, Strålskyddsmyndigheten.

Strålskyddsstiftelsen received the 2013 "Misleader of the Year" award from the main Swedish scientific skeptics' society, Vetenskap och Folkbildning ("Science and Public Education") for "[their fearmongering propaganda and biased reporting on the health effects of mobile telephony use and wireless networks]". (in Swedish)

These networks are part of a feedback loop where they get media attention, politicians pick up on their claims and use them to invoke the precautionary principle and get precautionary regulation in place, or judges rule based on the claims, which then gets quoted by these entities as evidence that they were right all along.

They make it very hard to find factual information on whether millimeter-wavelength radiation actually has any different effect from the centimeter-wavelength radiation that we have been using for over two decades without any documented harmful effects, because wherever you look you just find these sites claiming that we have definitely had adverse health effects for the last two decades and the new frequency bands will definitely be far worse.

When you dig deeper into the claims on these sites you find a handful of cherry-picked articles, leading back to the two men mentioned at the top, to studies with flawed methodology like self-reported surveys on mobile telephony use among cancer patients, or to the pseudoscience/media/politics/law feedback loop. And it’s all about centimeter waves, which simply have shown no conclusive sign of increasing brain cancers or any other adverse health effect related to the radiation. For every positive report made you can find one that reports brain cancer fell as we introduced mobile phones. There is a massive body of data, and if the signal were there, we would have seen it by now.

I’m no cancer researcher, but neither is Rainer Nyberg, he’s a retired professor in pedagogy. He’s a concerned citizen. is an actual oncologist and professor who has studied carcinogens, but his research results on the wireless/cancer connection have been dismissed as "non-informative", "post hoc", "barely statistically significant" and "flawed" by his peers. There is nothing there.

We know that high-voltage 16.7 Hz fields increase the risk for leukemia in train drivers, but we don’t know why. I am open to the possibility that 20-50 GHz waves have different consequences from 2 GHz waves, but I’d have to hear it from a credible source.

Straight up DNA mutation is out the window, and that’s one of the centerpoints of these campaigns. This is still frequencies below visual light, it’s not ionizing radiation. No plausible mechanism has been suggested, and there is no clear data on any adverse effects.

We use millimeter waves for the full body scans in US airports. Surely the effects of those have been studied? The top search results go to truthaboutcancer and infowars and similar names I won’t even bother to click. I don’t want to read another article about how all cancer research after 1950 has been wrong, we should all just eat chalk to balance our acidity, and cancer is a fungus.

Apart from the pseudoscience sites I found one paper on the first search results page, concluding that X-ray backscatter scanners have well-known risks, but radiation levels are far below safety standards, both for passengers and for security staff, and also below the background radiation exposure while flying, and millimeter-wave scanners, while an "alarmingly small amount of information about its potential health effects" is available, "The established health effects associated with non-ionizing radiation are limited to thermal effects" and "these scanners operate at outputs well below those required to produce tissue heating", that is, we currently don’t know of a way millimeter waves might be harmful: (

For a guide on how to spot pseudoscience and how to read scientific papers, see ahuka’s excellent hpr2695: Problems with Studies.

Interview with Alan Pope - Yannick the french guy from Switzerland | 2019-05-13

A few years ago, when you wanted to install a package on your Linux system, you had to grab the source code, and the nightmare began. But nowadays, this is over. You have deb files, and snaps, and flatpacks, and many other package formats available. On this episode, I was joined by Alan Pope, from Canonical, to talk about one of them in particular : snaps.

Wi-Fi on Android - Ken Fallon | 2019-05-10


You're running a firewall on your work and home networks right, so of course you're running one on your Smart Phone. Given this device holds more information about you than you probably know yourself, it would be only prudent to make sure that you are protecting what gets in but also what gets out.

I run AFWall+ which is available from the F-Droid app store. It runs fine on LineageOS.

I then set it on the children's phone so that no application is allowed to use mobile data, and then only applications that need Internet get Internet Access. This works well as it's a normal use case for mobile applications to have intermittent access to the Internet.

I see no reason why the Linux Kernel should need unfettered access to the Internet, so it's not allowed out. One issue you may come across is that even though you know that there is a Connection your phone doesn't, and so it will display the Wi-Fi Connected, no Internet message.

I'm not sure how this check is done but abqnm suggests at in the StackExchange question How does Android determine if it has an Internet connection? that it may be related to Google Cloud Messaging.

... this means that the device is unable to receive a response from GCM (Google Cloud Messaging, the framework that handles push notifications). This traffic is sent through ports 5228, 5229, and 5230. If the AP is blocking or interfering with traffic on those ports, push notifications won't work ...

I do indeed see blocked attempts by Google Play Services on my own phone, but not on the other phones that have no google services installed. The only entry I see in the logs is an ICMP attempt to "Comcast Cable Communications, Inc". If you know more please record a show for Hacker Public Radio about it.

Giving Access

Normally you will get a message saying that the Wi-Fi has no Internet access.

Android System. Wi-Fi has no Internet access. Tap for options

If you tap the message a popup will allow you to stay connected and will let you remember the choice.

OpenWireless.Org. This network has no Internet access. Stay connected? [] Don't ask again for this network NO YES

In some cases the router helpfully resets the connection before you can reply to the message meaning it goes into a loop continually popping up the message but not reacting to it.

In this case we can use Termux a Android Terminal emulator, to drop to a shell and fix the problem.

I used su to get root access but you could also change to the user wifi.

The file you need to edit is /data/misc/wifi/wpa_supplicant.conf. It's probably best to edit this file with the wifi off.


Scroll down to the network that is giving you trouble and add disabled=1


I ended up copying the file to the sdcard, and editing it there. I then copied it back as su and used chown wifi:wifi /data/misc/wifi/wpa_supplicant.conf to fix the permissions.

Once that's done you can reboot the phone and connect to the network without a problem. You should also consider putting up an Open Wireless access point yourself.

The Blue Oak Model License and Its One Big Gotcha - Joel D | 2019-05-09

The Blue Oak Model License 1.0.0 was just released this month. In this episode I read the license, explain where it sits in among other software licenses, and enumerate some of the problems it purports to solve.

I’m no legal expert, so take all of this as sort of a rough introduction to the license.

Overall, if you are looking at permissive (vs copyleft) licenses, I would strongly suggest you consider this license! It’s concise, robust, it was developed by credible people, and gives your users future-proof safety from a number of common legal traps.

However: just note that it has a feature, some would say bug, that might be a big deciding factor in whether you feel comfortable with it (listen for details)

Nevertheless, I believe this license, or at least its style of language, will soon become extremely common.

Further links:

  • The Blue Oak Model License 1.0.0 — the license itself. You may also wish to read the group’s statement about their methodology and how the license came to be.
  • Deprecation Notice: MIT and BSD — the blog post I mention in the recording, by Blue Oak council member, developer and IP lawyer Kyle Mitchell. He explains some problems he sees with the MIT and BSD licenses and how the BOML addresses them.
  • Discussion on Hacker News — This was a pretty good discussion. Kyle Mitchell also chimed in here to respond to some criticisms and tire-kicking of this license (you can recognize him by his handle kemitchell).

Not mentioned in the recording: One thing that caused me a bit of confusion at first was the term “attribution”. Kyle and the Blue Oak folks use this term mainly to talk about license terms, not authorship or credit. So for them an attribution requirement is a requirement to include the license terms with any distributed copies, not a requirement to give authorship credit to people.

If you want to use this license as a starting point for your own “bespoke” license, you can! As I mention in the recording, I created my own variant of the Blue Oak license for one of my own projects. My main change was a strong requirement for downstream users to give credit to upstream contributors—not just when redistributing source code, but in all published software, books and websites created with the software!

Of course, when you make your own changes, you had better think hard about them, and if possible, get the advice of an Actual Lawyer who can discuss your particular situation.

My 50th Show - Tony Hughes AKA TonyH1212 | 2019-05-03

Hallo this is again Tony Hughes for HPR. This is an auspicious show for me as it’s my 50th show that I have recorded and released on HPR in my own right. However prior to my 1st show in my own right I did guest on 2 shows.

The first of these was:

  • hpr0844 :: The Flying Handbag hosted by HPR Volunteers
    Released: 2011-10-26

Which was a show that was recorded at Barcamp Blackpool in 2011, when a group of us got together to record a podcast, the hilarious thing was that the only place we could find to record was a stairwell which happened to be next to the toilets, definitely not family friendly but if you want a laugh have a listen.

The next show I appeared on was an interview I did with Ken Fallon at my first OggCamp in the same year.

  • hpr0863 :: Tony Hughes Free Cycle hosted by Ken Fallon
    Released: 2011-11-22.

Ken was as usual trying to recruit new hosts and interviewed me with the hope that I would become one. Well I did but it took another 5 years before I finally recorded my first show in my own right.

First just to say the idea for this show comes from hpr2700 in which Ken created a script to automate the bot voice reading a list of every show that has been released on HPR, so to celebrate my 50th Show I thought I would list my shows but with me running through them and do a brief summary of the show where appropriate.

  1. hpr2051 :: My Linux Journey
    Released on 2016-06-13
    in this episode I talked about my journey in computing and starting to use Linux

  2. hpr2056 :: Interview with a young hacker
    Released on 2016-06-20
    This was my first of several interviews with @All_about_Code at my local Raspberry Jam

  3. hpr2065 :: Whats in My Bag
    Released on 2016-07-01
    Looking at this show so tells me I have to redo this show as my bag is very different these days

  4. hpr2076 :: What Magazines I read Part 1
    Released on 2016-07-18
    just what the title said, I talked about the magazines I was reading at that point in time.

  5. hpr2087 :: Magazines I read Part 2
    Released on 2016-08-02
    This was a follow up of the last show

  6. hpr2097 :: New Toys
    Released on 2016-08-16
    I talked about my hardware journey over the last 30 odd years and talked about the i7 system I had just bought 2nd hand

  7. hpr2101 :: What’s on my podcatcher
    Released on 2016-08-22
    A show about the podcasts I listen to.

  8. hpr2144 :: An Interview with All About Code at Manchester BarCamp
    Released on 2016-10-20
    a follow up interview with Josh

  9. hpr2151 :: BarCamp Manchester part 2
    Released on 2016-10-31
    An interview with Claire, the organiser of BarCamp Manchester.

  10. hpr2157 :: BarCamp Manchester part 3
    Released on 2016-11-08
    This was an interview with Alan O’Donohoe who had started the Raspberry Jam movement

  11. hpr2257 :: Watt OS
    Released on 2017-03-28
    Acer Aspire One Netbook – Review

  12. hpr2265 :: WattOS on Lenovo X61s
    Released on 2017
    Lenovo X61s – Review

  13. hpr2271 :: Raspberry Pi Zero W
    Released on 2017-04-17
    Review Episode on the then New Pi Zero W

  14. hpr2280 :: Lenovo X61s Part 2
    Released on 2017-04-28
    Follow up review after a SSD upgrade and using Linux Lite

  15. hpr2286 :: Surviving a Stroke
    Released on 2017-05-08
    A very personal episode about my surviving a Stroke in February 2017

  16. hpr2295 :: MX Linux
    Released on 2017-05-19
    A review episode using this OS on a Lenovo X230i after a hardware boot issue with Linux Mint and an SSD

  17. hpr2331 :: Liverpool Makefest 2017 Show 1
    Released on 2017-07-10
    The first of a number of interview shows from the 2017 Liverpool Makefest

  18. hpr2336 :: Liverpool Makefest 2017 Show 2
    Released on 2017-07-17

  19. hpr2341 :: Liverpool Makefest 2017 Show 3
    Released on 2017-07-24

  20. hpr2346 :: Liverpool Makefest 2017 Show 4
    Released on 2017-07-31

  21. hpr2352 :: Liverpool Makefest 2017 Show 5
    Released on 2017-08-08

  22. hpr2362 :: Raspbian X86 on Lenovo x61s
    Released on 2017-08-22
    Review of Raspbian X86 on a Lenovo X61s

  23. hpr2366 :: Making Bramble Jelly
    Released on 2017-08-28
    Just what it says on the tin I talk about making Bramble jelly,

  24. hpr2374 :: How to Make Sauerkraut
    Released on 2017-09-07
    Another food show on how to make Sauerkraut

  25. hpr2380 :: Raspbian X86 on P4 Tower
    Released on 2017-09-15
    Follow up this time running Raspbian X86 on an old P4 Tower

  26. hpr2405 :: Nokia 6 Review
    Released on 2017-10-20
    I reviewed my new phone

  27. hpr2432 :: Living with the Nokia 6 – an update to HPR 2405
    Released on 2017-11-28
    Follow up update show having lived with the phone for a couple of months.

  28. hpr2442 :: The sound of Woodbrooke Quaker Study centre in the Spring
    Released on 2017-12-12
    This was a soundscape recording I made at Woodbrooke Quaker Study Centre in Birmingham UK while I was there in April 2017.

  29. hpr2579 :: Ubuntu 18.04 Mate
    Released on 2018-06-21
    A review of the recently released Ubuntu 18.04 Mate

  30. hpr2590 :: Blowing a PC Power Supply
    Released on 2018-07-06
    A show about how not to blow your PC power supply

  31. hpr2595 :: New laptop bargain?
    Released on 2018-07-13
    A review on my recently purchased secondhand Toshiba Z30 laptop

  32. hpr2601 :: Liverpool Makerfest 2018
    Released on 2018-07-23
    Chris Dell

  33. hpr2606 :: Liverpool Makefest 2018 - interview with Dan Lynch
    Released on 2018-07-30
    A podcast Legend

  34. hpr2612 :: Liverpool Makefest 2018 - interview with Joe aka Concrete Dog
    Released on 2018-08-07
    About Rocketry

  35. hpr2616 :: Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code
    Released on 2018-08-13.
    This is another short interview recorded at Liverpool Makefest, with Josh talking about EduBlocks.

  36. hpr2621 :: Liverpool Makefest 2018 - Chan’nel Thomas a.k.a little pink maker
    Released on 2018-08-20
    I talk to Chan’nel Thomas aka little pink maker.

  37. hpr2626 :: Liverpool Makefest 2018 - interviews with Helen and Chris
    Released on 2018-08-27
    In this episode I talk to Helen from Manchester Hackspace and Chris from Wirral Code Club

  38. hpr2632 :: Liverpool Makefest 2018 - interviews with Robert and Carl
    Released on 2018-09-04
    In this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University

  39. hpr2636 :: Liverpool Makefest 2018 - interviews with Noel from JMU FabLab
    Released on 2018-09-10

  40. hpr2641 :: Liverpool Makefest 2018 - interview with Rachel from the MicroBit Foundation
    Released on 2018-09-17

  41. hpr2646 :: Liverpool Makefest 2018 - Interview with Steve and Gerrard from the Liverpool Astronomical society.
    Released on 2018-09-24

  42. hpr2652 :: Liverpool Makefest 2018 - Interview with Caroline and John
    Released on 2018-10-02 under a CC-BY-SA license.
    This was the final interview from Makefest 2018 in Liverpool. In this interview I interview one of the founder members of Makefest, Caroline Keep, and the Head Teacher of the school where she works, John Carling.

  43. hpr2663 :: Short review on a 2.5 inch SSD/HDD caddy
    Released on 2018-10-17
    Quick hardware review

  44. hpr2702 :: Audacity set up and response to episode 2658
    Released on 2018-12-11
    I post my response to show 2658 by Dave and Al

  45. hpr2735 :: Soffritto
    Released on 2019-01-25
    Another food show

  46. hpr2738 :: My Applications
    Released on 2019-01-30
    This and my 47th episode were about the applications I use in Linux

  47. hpr2746 :: My software part 2
    Released on 2019-02-11

  48. hpr2772 :: My applications and software part 3
    A short show about the software I use in Linux Mint

  49. hpr2786 :: My YouTube Channels
    A short show about some of my YouTube channels inspired by Ahuka

Update on my Raspi 3 B OpenMedia Vault and Next Cloud instances - JWP | 2019-05-01

I use a Toshiba 4TB non-powered drive external usb 3 drive.

Mid-life (?) assessment - clacke | 2019-04-30

At 40, I’m at the middle of the mean life expectancy in most parts of the world. What’s happened so far, and where do I go from here?

I look at my life’s past in increasingly smaller chunks of years, and then at my life’s future in increasingly larger chunks of years, and speculate about those 80 years — or perhaps many more? — of expected lifetime.

I’m saying mostly the things I wrote at but with some small updates from the last 9 months.

Guitar Set Up Part 1. - NYbill | 2019-04-29

NYbill talks about setting up a guitar.

Pics for the episode:

Should Podcasters be Pirates ? - knightwise | 2019-04-24

In a car rant I think back to the early days of podcasting and how the ambience and vision of podcasting was far from the mainstream media approach from today. Have we all sold out ?

IRS,Credit Freezes and Junk Mail Ohh My! - operat0r | 2019-04-22

NodeJS Part 1 - operat0r | 2019-04-09

What is uCPE - JWP | 2019-04-05

The Yamaha Disklavier - Jon Kulp | 2019-04-04

In this episode I talk about the Yamaha Disklavier DKC500RW that's in my office at work. This is a very high-tech player piano and one of the coolest pieces of music gear I've ever seen.

Photo Album (click image)

Yamaha Disklavier


  • Website showing how to determine which model disklavier you have: Yamahaden
  • DisklavierTM World: This is a privately operated, Public Service (non-profit) webpage. 10,781 piano-music files in 'FIL' (e-SEQ) & MIDI format & Software for the Yamaha Disklavier. PUBLIC-DOMAIN / 'Live' MIDI-Performances / FREE Sequences
  • Video: Jonathan Kulp, Three Easy Pieces for Piano Four-Hands: Video of premiere performance
  • Video: Disklavier in action

The Windows "Shutdown.exe" Command Explained - Claudio Miranda | 2019-04-03


  • Introduced in Windows 2000 as a way to shutdown the PC via the command prompt.
  • Included in all versions since Windows 2000 all the way to Windows 10 and Windows Server 2019.
  • ReactOS, the open source binary-compatible clone of Windows, also includes the shutdown.exe command and the commands are the same.
  • Located in %windir%\System32. The variable %windir% is usually c:\windows. In ReactOS, the variable is usually c:\reactos (failed to mention this in the recording).


My SBC Nextcloud Install Pt. 1 - Hardware - minnix | 2019-03-29

I explain the build process for my home Nextcloud server using a single board computer and a 4 bay RAID enclosure. This is part 1 of a 3 part series.

My parts list for the server build:

minnix at uymail dot com for help, questions, or just general chatter

HTTP, IPFS, and torrents - aldenp | 2019-03-28

Some ramblings about how we might replace HTTP with more robust, decentralized protocols.

The quest for the perfect laptop. - knightwise | 2019-03-26

Looking for a new laptop.


  • HP Envy x360
  • Lenovo X280
  • Lenovo X380
  • Lenovo X380 Yoga
  • Lenovo X1
  • Lenovo X1 Yoga

CJDNS and Yggdrasil - aldenp | 2019-03-21

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

Lead/Acid Battery Maintenance and Calcium Charge Voltage - Floyd C Poynter | 2019-03-20

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.

My applications and software part 3 - Tony Hughes AKA TonyH1212 | 2019-03-19

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

Embedding hidden text in Djvu files - klaatu | 2019-03-18

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
(page 0 0 1000 1000
 (word 100 600 450 800 "Hello" )
 (word 100 600 450 800 "world" ))


select "p0005.djvu"
(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

Quick Review of the AstroAI WH5000A Multimeter - NYbill | 2019-03-14

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

The meter:

Pics for the episode:

Djvu and other paperless document formats - klaatu | 2019-03-12

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

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

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

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

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

("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.

Disk enumeration on Linux - klaatu | 2019-03-11

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
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
$ udisk --enumerate | sort
$ udisks --mount /dev/sdc1
Mounted /dev/sdc1 on /media/mythumbdrive
$ udisks --unmount /dev/sdc1

Cleaning the Potentiometers on a Peavey Bandit 65 - Jon Kulp | 2019-02-28

Since my daughter has been learning a bit of guitar in the last several months, I've actually gotten my old electric guitar and amplifier back out again after many years in the closet. The amp is a Peavey Bandit 65, which was a an affordable solid-state workhorse kind of amp back in the mid-80s and I've had it since it was new. In this episode I talk through the process of removing the brains of the amp and cleaning the potentiometers to try to get rid of some of the static that's happening when I turn the knobs. I also discover belatedly that the reason I was not getting any distortion when I turned the saturation up was that the amp was stuck on the clean channel — shows how long it's been since I used the amp, I kind of forgot how the thing works!

Click image below to view photo gallery

Peavey Bandit 65 Cleaning



XSV for fast CSV manipulations - Part 2 - b-yeezi | 2019-02-19

XSV for fast CSV manipulations - Part 1: Basic Usage


xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:

  1. Simple tasks should be easy.
  2. Performance trade offs should be exposed in the CLI interface.
  3. Composition should not come at the expense of performance.

We will be using the CSV file provided in the documentation.

Commands covered in this episode

  • fixedlengths - Force a CSV file to have same-length records by either padding or truncating them.
  • fmt - Reformat CSV data with different delimiters, record terminators or quoting rules. (Supports ASCII delimited data.)
  • input - Read CSV data with exotic quoting/escaping rules.
  • partition - Partition CSV data based on a column value.
  • split - Split one CSV file into many CSV files of N chunks.
  • sample - Randomly draw rows from CSV data using reservoir sampling (i.e., use memory proportional to the size of the sample).
  • cat - Concatenate CSV files by row or by column.

Battling with English - part 3 - Dave Morriss | 2019-02-18

Battling with English - part 3

Some word confusions

In this episode, the third of this series, I’m looking at some words that are sometimes used in the wrong places, often being confused one with another. These words are often particularly difficult to differentiate by people for whom English is not their first language.

Long notes

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

Lostnbronx and Klaatu commentary from episode 2743 - klaatu | 2019-02-14

Out-takes from episode 2743. This is commentary about modern RPG play style, the character build process, Starfinder as a system, and more.

Did you know that Lostnbronx and Klaatu have a gaming blog? We do! You should go subscribe to it at

The blog features commentary about gaming, tech, geek culture, a podcast or two, and lots more.

checking oil - brian | 2019-02-12

a 914 shows up…
it has a 911 engine…
i check the oil…
the car lives…

My software part 2 - Tony Hughes AKA TonyH1212 | 2019-02-11

Good day to all in HPR land, this is Tony Hughes coming to you from Blackpool in the UK again. This is a second instalment about some of the software I use on Linux Mint 19.1, on a regular basis. So without further ado lets get on with the show.

  • USB Image writer

  • VirtualBox – Virtualisation software to virtualise x86 and AMD64 bit PC’s

  • OBS – Open Broadcast software

  • Brasero/XFburn – CD/DVD writing software

  • GIMP – GNU Image manipulation Program

So that’s it for this episode. I’ll be back to talk about some of the utilities I use on Mint on another show. This is Tony Hughes signing off for now.

Yet Another Rambling Drive Into Work - MrX | 2019-02-07

I came across this show sitting in my digital recorder I recorded it back in November 2017 but never posted it, my thoughts on some of the things I mention in this show have since evolved, I’ll stick these changed thoughts at the end of these notes and may also stick in an extra recorded section at the end of the show.

Here are the changes since I recorded this show in November 2017, it is now October 2018.

Think there was a £4,500 pound grant on new EV cars however it has been announced that this grant will in the near future will be cut to £3500.

I think the Government and Nissan together had a £2000 contribution scheme when you traded in an old car for a 2nd hand leaf I think this is no longer available now that the leaf is more popular.

Fuel costs have gone up and I may have miscalculated I think my true annual fuel bill is nearer to £2,000

Nissan leaf road tax is free

Because of supply and demand the depreciation situation has completely changed had I bought this leaf in November 2017 it would now be worth more today in October 2018. Only time will tell how it all pans out, things are changing rapidly.

After further investigation it looks like battery degradation is less than I first thought and would likely still be in pretty good condition at 6 years old, particularly in a cooler country like here in the UK in Scotland.

There has been some controversy about the new 40kw leaf which may also impact in the older leaf making the older leaf’s more appealing contributing further to the high demand for the older 30kw and 24kw leafs.

With the increased popularity of the older 24 and 30Kw leafs Nissan may no longer be so keen to give you a no quibble test drive.

I think it’s looking increasingly like I made the wrong decision.

SAP Hana Certification Directory - JWP | 2019-02-05

SAP Hana certification is a long and hard process covered at

Pop!_OS 18.10 (quick) review - Yannick the french guy from Switzerland | 2019-02-01

This episode is a re-edition of the review of Pop_OS! I did for TuxJam back in December 2018. Pop_OS! is published by System76.

My Applications - Tony Hughes AKA TonyH1212 | 2019-01-30

Hi again, this is Tony Hughes from Blackpool in the UK. Ken is still short of shows so here is another quick show to help out with the queue.

This one is going to be about the applications I use on my Linux Mint 19.1 install. I’ve been using Linux for over 10 years now and during that time have never felt that there was anything that was lacking in the software department for day to day productivity and general day to day use, so this is just a list of some of the things that I, and I suspect most computer users, need to make electronic life a reality.

So for internet browsing I use Firefox, I’ve been using this since my Windows days and it was just natural that, as this is the default web browser in Linux Mint, that this is what I would continue to use when I moved over to Linux.

Email – I have several web based accounts which means these are operating system agnostic, but for my Internet Service provider account I use Thunderbird to download and store my e-mail onto my main desktop PC. I can also use this to access my web based accounts and store emails for these off line as well if needed.

Office productivity is provided for with LibreOffice which is a very mature and comprehensive office suite comprising of all the main tools needed such as a word processor, spreadsheet and presentation software. It also has a Database and drawing package, and for maths geeks an advanced maths formula creating program which I have never used, but could be very useful for students and scientists.

For audio and video playback I use VLC which again is something I first used back in my windows days, it works with all the audio and video codecs you can throw at it, and if you have the Libdvdcss codecs installed will play proprietary DVD’s.

For recording and editing audio including this podcast I use Audacity, which is again a cross platform programme and a very powerful piece of software, as myself and many others that use it will be able to tell you

So that is a short list of the programmes that I use on a day to day basis. I hope you found it useful, if not it doesn’t matter as Ken still got a show out of me.

Well that’s it for this one. This is Tony Hughes signing off for now.

My Pioneer RT-707 Reel-to-Reel Tape Deck - Jon Kulp | 2019-01-29

I've had this Pioneer RT-707 reel-to-reel tape deck for something like 10 years, but only recently started using it with enthusiasm. In this episode I talk about the tape deck, about the technology, and about my memories of using this kind of audio tape as a kid. I demonstrate playback of one of my parents' mix tapes, and I also used this machine to record the last few minutes of the podcast onto a reel to reel tape, which of course I then had to transfer back to digital before submitting the show.

Click image below to see a photo album relating to the tape deck.

Pioneer Reel-to-Reel Tape Deck

Tape deck in action (video)

Mashpodder - MrX | 2019-01-24

After I recorded this episode I had a little look on the HPR site I found that Ken Fallon had already covered mashpodder, no doubt he did a better job than me as this was done in a bit of a rush.

Hopefully somebody will find this of some use

Related links below:-

My 8 bit Christmas - Andrew Conway | 2019-01-21

For Christmas 2018 Santa – well, Mrs mcnalu – gave me a BBC Model B which was my first computer back in the early 1980s. This request was heavily implied in TuxJam 70 - Gift for Geeks.

I can highly recommend the seller who, as you will hear, was extremely helpful when this 36 year old bundle of 8 bit loveliness became very poorly on Boxing Day. It came with a Turbo MMC installed and you can see it in action on another BBC Model B in this video.

The noise you hear at the start - the beeeeee BEEP - is the sound of me turning on the BBC. I mention in the show that mode 0 of the Beeb, as it is affectionately known, has 80 columns and 40 rows. This isn’t quite right, there are only 32 rows in mode 0.

Resizing images for vcard on Android - Ken Fallon | 2019-01-18

I have had problems importing vcards onto my Android phone. After a lot of troubleshooting, I tracked it down to embedded images in the card. The PHOTO;VALUE field to be precise.

Some images worked and some didn't, and looking at the properties some that worked were larger than others that didn't. In the end I tracked down a post on stackoverflow that hinted that the aspect ratio was important. And sure enough it was.

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

Stack exchange

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

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

My requirements were:

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

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

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

Step one is to use the -size 256x256 option which you would think would do the scaling, but in fact it only reduces the file to 366x509 which is not what I expected.

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

However it appears that the option is used when creating new files, and is also used by the processor to determine the intended target size. Which is why I left it in. So what we actually need is the -resize option.

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

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

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

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

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

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

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

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

Putting it all together we get.

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

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

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


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

Also available here

Home Theater - Part 2 Software (High Level) - operat0r | 2019-01-14

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

Local copy of the shownotes

The Illumos Shutdown Command Explained - klaatu | 2019-01-11

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

The quick version:

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

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

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

Some links:

OpenIndiana handbook

Sun Microsystem docs (with Oracle branding on it)

Using a DIN Rail to mount a Raspberry Pi - Dave Morriss | 2019-01-10


A DIN Rail is a metal rail for mounting pieces of electrical equipment inside an equipment rack, for performing tasks in a building, in a machine, and so forth. It’s common to see DIN rails holding circuit breakers for example.

See the Wikipedia article on the subject for full details.

A number of people in the Maker Community have made use of these rails, and there are a number of freely available designs for stands that can be 3D printed on which you can mount these rails. There are also designs for mounts onto which devices like Raspberry Pis and disks can be fitted and attached to a rail.

This show will recount my experiences with creating a compact mounting system for one of my Raspberry Pi systems. I had the help of my son and his girlfriend in 3D printing the parts for this project.

Long notes

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

Using Elm in context of 4X game client - tuturto | 2019-01-09

Original idea I had with my toy game project was to have Yesod render most of the user interface as static HTML and have as little client side scripting as possible. Later I realized that there would be parts with significant amount of client side code and it might be better if whole site was written in Elm.

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

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

Backend is written in Haskell and front end in Elm. Communication between them is via REST interface and most of the data is in JSON. All JSON encoding / decoding is centralized (more or less), same with initiating requests to server.

API Endpoints

End points used for REST calls are defined in single data type that captures their name and parameters. These are used when initiating requests, meaning there’s smaller chance of typo slipping through.

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

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

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

GET Request is sent to ApiConstructionQueue endpoint and it has planetId as parameter. When server sends response, our program will parse content of it will be a list that is parsed with constructionDecoder and create “ApiMsgCompleted ConstructionsReceived” message with result of the parsing. Update function will process this and store list of constructions somewhere safe for further use.

Update function

Update function is in charge of reacting to messages (mouse clicks, page changes, responses from server). In a large program update function will quickly get big and unwieldy. Breaking it into smaller pieces (per page for example), will make maintenance easier. This way each page has their own message type and own update function to handle it. In addition there’s few extra ones (cleaning error display, processing API messages and reacting to page changes).

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

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

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

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

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

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

Because mapping needs to be bi-directional (Route used to define content of a href and string from a href used to define Route), there’s mapping to other direction too:

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

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

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

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

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

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

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

RAID 6 a short description - JWP | 2019-01-08

Raid 6 is a take of raid 5 but with support for 2 drive protection.

Download youtube channels using the rss feeds - Ken Fallon | 2019-01-04

I had a very similar problem to Ahuka aka Kevin, in hpr2675 :: YouTube Playlists. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.
See previous episode hpr2705 :: Youtube downloader for channels.

The problem with the original script is that it needs to download and check each video in each channel and it can crawl to a halt on large channels like EEEVblog.

The solution was given in hpr2544 :: How I prepared episode 2493: YouTube Subscriptions - update with more details in the full-length notes.

  1. Subscribe:
    Subscriptions are the currency of YouTube creators so don't be afraid to create an account to subscribe to the creators. Here is my current subscription_manager.opml to give you some ideas.
  2. Export:
    Login to and at the bottom you will see the option to Export subscriptions. Save the file and alter the script to point to it.
  3. Download: Run the script youtube-rss.bash

How it works

The first part allows you to define where you want to save your files. It also allows you to set what videos to skip based on length and strings in their titles.

maxlength=7200 # two hours
skipcrap="fail |react |live |Best Pets|BLOOPERS|Kids Try"

After some checks and cleanup, we can then parse the opml file. This is an example of the top of mine.

<?xml version="1.0"?>
<opml version="1.1">
    <outline text="YouTube Subscriptions" title="YouTube Subscriptions">
      <outline text="Wintergatan" title="Wintergatan" type="rss" xmlUrl=""/>
      <outline text="Primitive Technology" title="Primitive Technology" type="rss" xmlUrl=""/>
      <outline text="John Ward" title="John Ward" type="rss" xmlUrl=""/>

Now we use the xmlstarlet tool to extract each of the urls and also the title. The title is just used to give some feedback, while the url needs to be stored for later. Now we have a complete list of all the current urls, in all the feeds.

xmlstarlet sel -T -t -m '/opml/body/outline/outline' -v 'concat( @xmlUrl, " ", @title)' -n "${subscriptions}" | while read subscription title
  echo "Getting "${title}""
  wget -q "${subscription}" -O - | xmlstarlet sel -T -t -m '/_:feed/_:entry/media:group/media:content' -v '@url' -n - | awk -F '?' '{print $1}'  >> "${logfile}_getlist"

The main part of the script then counts the total so we can have some feedback while we are running it. It then pumps the list from the previous step into a loop which first checks to make sure we have not already downloaded it.

total=$( sort "${logfile}_getlist" | uniq | wc -l )

sort "${logfile}_getlist" | uniq | while read thisvideo
  if [ "$( grep "${thisvideo}" "${logfile}" | wc -l )" -eq 0 ];

The next part takes advantage of the youtube-dl --dump-json command which downloads all sorts of information about the video which we store to query later.

    metadata="$( ${youtubedl} --dump-json ${thisvideo} )"
    uploader="$( echo $metadata | jq '.uploader' | awk -F '"' '{print $2}' )"
    title="$( echo $metadata | jq '.title' | awk -F '"' '{print $2}' )"
    upload_date="$( echo $metadata | jq '.upload_date' | awk -F '"' '{print $2}' )"
    id="$( echo $metadata | jq '.id' | awk -F '"' '{print $2}' )"
    duration="$( echo $metadata | jq '.duration' )"

Having the duration, we can skip long episodes.

    if [[ -z ${duration} || ${duration} -le 0 ]]
      echo -e "nError: The duration "${length}" is strange. "${thisvideo}"."
    elif [[ ${duration} -ge ${maxlength} ]]
      echo -e "nFilter: You told me not to download titles over ${maxlength} seconds long "${title}", "${thisvideo}""

Or videos that don't interest us.

    if [[ ! -z "${skipcrap}" && $( echo ${title} | egrep -i "${skipcrap}" | wc -l ) -ne 0 ]]
      echo -e "nSkipping: You told me not to download this stuff. ${uploader}: "${title}", "${thisvideo}""
      echo -e "n${uploader}: "${title}", "${thisvideo}""

Now we have a filtered list of urls we do want to keep. These we also save the description in a text file with the video id if we want to refer to it later.

    echo ${thisvideo} >> "${logfile}_todo"
    echo -e $( echo $metadata | jq '.description' ) > "${savepath}/description/${id}.txt"
    echo -ne "rProcessing ${count} of ${total}"
echo ""

And finally we download the actual videos saving each channel in its own directory. The file names is first an ISO8601 date, then the title stored as ASCII with no space or ampersands. I then use a "⋄" as a delimiter before the video id.

# Download the list
if [ -e "${logfile}_todo" ];
  cat "${logfile}_todo" | ${youtubedl} --batch-file - --ignore-errors --no-mtime --restrict-filenames --format mp4 -o "${savepath}"'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s'
  cat "${logfile}_todo" >> ${logfile}

Now you have a fast script that keeps you up to date with your feeds.

Genre In Storytelling - lostnbronx | 2019-01-02

Many people see genres as being largely interchangeable, but are they really? Why can some stories only be told in a particular genre? When are genre stories truly alike? And when are setting, character, and plot more important than genre? Lostnbronx takes a quick, rambling look at this complicated subject.

Mobile Device Security - Edward Miro / c1ph0r | 2019-01-01


Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to address mobile device security. As with most of the research and articles I’ve written in the past, these are geared toward standard users in a business setting and are meant to be a jumping off point for further research and to be a foundation for cyber security 101 level training classes. If you like what I do, and want to have me come speak to your team, feel free to email me.

As an information security researcher, I have noticed a trend in what potential clients lately have been interested in: cell phones. Almost everyone I have consulted for in the area of private investigations make this area their main priority. This makes sense as users have started to transition to using mobile devices more and more. Not only do cell phones represent the main conduit to the internet for a huge chunk of people, but many use them for work also. Many companies have smartly presented policies against this, but there are still many organizations that allow bring-your-own-device style implementations. In the following podcast I will try to define the threats, defense and considerations in very broad strokes.

Cell phones differ from a standard hacking target in a few ways. For the most part, many of the same vectors are still valid. Remote code execution however is more rare, but not out of the question. I’m going to attempt to present these different vectors in an ascending list of what is most likely to be used as an attack, in my humble (and possibly ignorant) opinion.

1. Passive Surveillance

This vector is one many in the hacking world will already be familiar with and it is a major concern for mobile devices as well. Attackers can monitor an access point where the mobile device is connected and collect packets in all the usual ways. Open public WiFi is a treasure trove and tons of data that’s being sent in the clear can be collected, analyzed and leveraged by attackers.

Defense here is a bit more complicated for the general user, but shouldn’t be too intrusive for most:

  1. Use a VPN on your mobile devices.
  2. Switch to a DNS provider that provides secure DNSSEC.
  3. Implement proper encryption on access points.

2. Spyware

Many commercial spyware applications are readily available on both of the main app stores. The challenges for attackers lie in either gaining physical access to the unlocked device to install the spyware, or tricking the user into installing it themselves. Most often the target’s spouse or close contact does this. Some of these apps can be disguised to look like innocuous applications as a feature, but with devices that are rooted/jailbroken, they can be completely hidden from the user. I found a few surveys that state the average smart phone user has about 30 apps installed. I don’t think it’s unreasonable to suspect the average person wouldn’t notice a second calculator or calendar app. These apps feature the full gamut of what you’d expect from a spyware app.

Defense against spyware is pretty simple:

  1. Don’t allow unsupervised access to your device.
  2. Use a strong passcode or biometric lock.
  3. Remove unused applications and be aware of new apps that may pop up.
  4. Don’t root or jailbreak your device.

3. Social Engineering

The tried and true vector that has always worked and will continue to work is social engineering. It doesn’t matter what kind of device a target is using if you can get them to click a malicious link, open a malicious attachment, or disclose their password to the attackers. With a user’s password you can conduct a vast amount of surveillance through their Google or Apple account. Not to mention leverage their password into all their other accounts as most users still use the same password for everything. We can also callback to the previous section on spyware by mentioning that many users are already familiar with enabling the installation of 3rd party applications and can be tricked into installing a cleverly disguised spyware application.

Basic OPSEC recommendations are applicable here:

  1. Don’t click strange or unsolicited links or attachments on your devices.
  2. Never disclose your password to anyone through a text message or voice call.
  3. Don’t install 3rd party applications. I’ll extend this to say not to install any shady or questionable apps, even ones hosted by the app stores. There have been instances of vetted apps being malicious.

4. IMSI catchers/Femtocells

I refer to these as DIY Stingrays. Stingrays are devices used by law enforcement to track and surveil cell phone traffic. These devices emulate a cell tower or boost cell phone signals when used in a legitimate way. Mobile phones are designed to prefer using stations that are the closest and strongest. Any technically proficient attacker can DIY one of these devices for not a lot of money. When an attacker deploys one of these devices, the target’s phone usually has no idea that the device isn’t an official cell tower and happily connects and passes traffic through it. The rogue stations can then be configured to pass the traffic on to an authentic tower and the user will have no idea. These rogue towers can not only collect identifying information about the mobile device that can be used to track or mark a target, they can also monitor voice calls, data, and SMS, as well as perform man-in-the-middle attacks. Often they can disable the native encryption of the target’s phone as well.

Defense against this vector is a bit more complicated:

  1. As before, use a VPN.
  2. Use Signal or other encrypted communication apps.
  3. Avoid disclosing sensitive information during voice calls.
  4. There is software that has been developed to detect and notify the user when a rogue station has been detected, but this is not going to be super helpful for standard users. There are also maps online of known cell towers and it is possible to use software to identify your connected tower.

5. Exploits

Speaking very generally, this attack vector is for the most part less of a concern (depending on your particular threat level), but we all know that the chance of this happening in the wild is probably remote for most people. The technical implementations of exploits such as Rowhammer, Stagefright, and Blueborne are well outside the scope of this particular talk, but we would be incorrect to not mention them and what can be done to protect against them. And we should also pay special attention to more and more exploits being developed to attack mobile devices as attackers have started putting a lot of attention in this area. Even though many of these vulnerabilities are being patched, we all know many users are still using old versions of Android and iOS, and many devices are simply outside the support period offered by the manufacturers and will never be updated past a certain point. Couple that with the general idea that mobile devices (or any device running a non Windows based OS) are “safer” because less exploits exist for them is currently a very poor assumption. This will probably get worse as the cost of keeping up with new devices now being over $1000 and many users won’t be able to get devices that are constantly being patched.

What we can do:

  1. Keep your mobile devices updated with most current OS updates and carrier settings. Also keep applications updated. I don’t know how many times I’ve noticed friends or family with devices that are ready to be updated, but the notifications go ignored.
  2. If it’s possible, replace devices when they are outside the support period.
  3. Be paranoid, if it applies to you. What this means is when you use any computer or device, always remember that zero day exploits can exist for years before being disclosed. You could follow ALL the best OPSEC practices, and you could still be vulnerable to exploits that haven’t been disclosed and/or patched. This might not matter if you’re just a general user, but if you work for the government or do intelligence work, act as if.

Well, thank you for taking the time to listen to my basic introduction to cell phone cyber defense. I know most of the information I provided is only the tip of the iceberg and if current trends hold up, this will only get worse in the future. If you want to add to or correct any mistakes I may have made, like I stated in the introduction, feel free to email me and let’s have a conversation. I don’t claim to know all there is to know and love feedback and any opportunities to learn more or collaborate with others in the field.

Thanks again, and have a great 2019!

Really Simple YouTube - Thaj Sara | 2018-12-31

Here are the two links I mentioned that let you pull RSS feeds out of YouTube

Airplane stalls and Angle of Attack - Brian in Ohio | 2018-12-27

stalls, a primer on why aircraft fly, and don’t fly

YouTube video of stall with narration (35 seconds)

AoA gauge from T-38 manual

Some definitions

  • chord - an imaginary line from the front of the wing to the back

  • relative wind - movement of air relative to the chord

  • angle of attack - the angle of the chord of the wing to the relative wind

  • stall - a condition where the air on the top of the wing is not flowing smoothly over the wing

  • critical angle of attack - the angle that the wing becomes stalled

  • fun - stalling and spinning and aircraft when its safe to do so

  • scary - stalling and spinning and aircraft when you don’t want to

Things not mentioned

This discussion pertained to subsonic speeds, super sonic flight introduces a whole other realm of issues.

The wings of aircraft do not stall all at once. They are designed (usually) to stall from the wing root (where the wing is attached to the fuselage) towards the tips. This ensures good roll control at slow speed and into the stall. This stalling characteristic is achieved by designing twist in the wing (washout) allowing different parts of the wing to hit the critical angle of attack at different times.

The most dangerous situation that you can find yourself in is a low altitude situation where one wing is stalled more than the other. The airplane then enters a spin. The dangerous part is the low altitude. Spins are fun, and the plane is still controllable, but you need altitude to recover. A wise man told me when turning low to the ground keep your nose down and speed up.

Most light aircraft will shudder or buffet as you approach the critical angle of attack this happens because of the disturbed airflow hitting the aircraft’s fuselage or tail. In larger aircraft no (i.e. airliners) no feel is given naturally as the plane approaches a stalled condition so systems like stick shakers vibrate the control artificially as you approach the critical angle of attack as measured by the AoA sensors. DC-9 stick shaker, a big cell phone vibrator artificial stall warning is mandatory in fly-by-wire aircraft (i.e. Airbus, f-16) as well as pure hydraulic controls (i.e. Boeing 757)

Author: Brian
Created: 2018-12-01 Sat 07:34
Emacs 25.3.1 (Org mode 8.2.10)

Steganography - klaatu | 2018-12-25

Did you find the hidden message contained in Klaatu's previous two episodes?

If not, Klaatu reveals how to find it in this one, how to duplicate it, and what makes good steganography.

Raspberry Pi 3A+ Review - Yannick the french guy from Switzerland | 2018-12-24

Raspberry Pi 3A+ review

In this episode of HPR, I will do a quick review of the Raspberry Pi 3A+, the latest release of the Raspberry Pi foundation.

Raspberry Pi 3A+ Raspberry Pi 3A+

The Raspberry Pi 3A+ has almost the same hardware as its big brother/sister the 3B+ :

  • BCM2837 BO SOC (system on chip), a quad core 64-bit ARM v8 processor, running at 1.4 GHz
  • On board wireless :
    • WiFi : 2.4 and 5 GHz 802.11 c/y/n/ac
    • Bluetooth : 4.2 and BLE
  • MicroSD card for storing the operating system and the data
  • Full size HDMI connector
  • 3.5 mm jack connector for audio and composite video output
  • MicroUSB connector for the power supply
  • 40-pin header with the same pinout as every other Raspberry Pi

The differences are :

  • Only one full size USB connector, instead of four on the 3B+
  • No ethernet connector
  • Only 512 MB or SDRAM instead of 1 GB on the 3B+

The Raspberry Pi 3A+ is 6.7 x 5.6 cm (2.6 x 2.2 in) and 11 mm high (.45 in). But if you plug a ribbon in the header, then it takes a lot of space.

Raspberry Pi 3A+

In this case, it’s probably better to unsolder the header, and solder a right angle header in place, so the pins are pointing to the side of the board and not upwards

Raspberry Pi 3A+ Raspberry Pi 3A+

With a bit of caution and the help of some desoldering wick, it’s not a complex operation, because there is no component near the GPIO header.

Of course if you plan on using a HAT, then you’re better off using the straight header. The Raspberry Pi 3A+ is actually the same size than a standard HAT.

Raspberry Pi 3A+ Raspberry Pi 3A+

Use case

Since the Raspberry Pi 3A+ doesn’t have an ethernet port, I think I will not use it for server stuff like Mosquitto or Pi-Hole, for which a good network connection is required. Also, those servers sometimes need a keyboard and a mouse, and with only one USB port, that’s not too practical.

For me, the A+ will be used to upgrade projects currently using a Raspberry Pi ZeroW, and for which I need a little more power. The on board WiFi and the small form factor, combined with the extra power, makes the 3A+ an ideal replacement for the ZeroW.


The sound used for the opening and closing sequence is Speaker X-Clash by Daniel H, and is released under a CC-BY-NC license.

Youtube downloader for channels - Ken Fallon | 2018-12-21

I had a very similar problem to Ahuka aka Kevin, in hpr2675 :: YouTube Playlists. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.

Add the url's to a file called subscriptions.txt.

#LASTRUN: 20181030
# /home/ken/sourcecode/personal/bestofyoutube/youtube-channel-watcher.bash
# Big Clive	20181030
# Essential Craftsman

Then run the script

# Downloads videos from youtube based on selection from
# (c) Ken Fallon
# Released under the CC-0

RUNDATE=$(date +%Y%m%d)
#DRYRUN="echo DEBUG: "

if [ ! -e "${subscriptions}" ]
	echo "Cannot find subscription file "${subscriptions}""
	exit 1

if [ "$(grep "#LASTRUN: " "${subscriptions}" | wc -l )" -eq 0 ]
	sed --follow-symlinks '1s/^/#LASTRUN: n/' -i "${subscriptions}"

# Read the subscriptions
cat "${subscriptions}" | grep -v '#' | while read channel_info
	if [ "$(echo "${channel_info}" | grep -P 't' | wc -l )" -eq 0 ]
		DATEAFTER="--dateafter ${YOUNGERTHAN}"
		DATEAFTER="--dateafter $(echo "${channel_info}" | awk '{print $NF}' )"
	channel="$(echo "${channel_info}" | awk '{print $1}' )"
	echo "Processing Channel "${channel}" since ${DATEAFTER}"
	${DRYRUN} ${youtubedl} ${DATEAFTER} --ignore-errors --no-mtime --restrict-filenames --format mp4 -o ${savepath}'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s' ${channel}
	${DRYRUN} sed --follow-symlinks "s,${channel}.*$,${channel}t${RUNDATE},g" -i "${subscriptions}"

${DRYRUN} sed --follow-symlinks "s/#LASTRUN: .*$/#LASTRUN: ${RUNDATE}/" -i "${subscriptions}"

Steganalysis 101 - Edward Miro / c1ph0r | 2018-12-18

1. Introduction

Hello and welcome to Hacker Public Radio, I’m Edward Miro and I’ve been a fan of HPR for a while now and really love its collaborative and random nature. It’s always been important for me to support the hacking community. I always take any opportunity to give back to this community who have given me so much throughout the years. I’ve also always subscribed to the idea that the best way to learn something is by teaching and I hope to do a good job for all you listeners. This talk is on mystical art of steganalysis which is the process of identifying the presence of and decrypting (hopefully) steganography.

2. What is steganography?

I’m into hacking, but I’m not a professional hacker. Usually I call myself a hobbyist. I like CTFs, crypto challenges, lots of stuff from Vulnhub or OverTheWire, things like that. I’ll provide some links in the end if anyone is interested, but for those who aren’t familiar a CTF, or Capture The Flag, it’s a kind of game that helps you get better at hacking. These days there are tons of VMs that are setup to be intentionally vulnerable to different techniques or attacks. You load the VM and pretend it’s a server you want to attack and follow your standard hacking protocols. Some are setup to be boot to root challenges where you ‘win’ when you get root and some are setup with flags that you can find hidden in the target worth points. There are in person and online CTFs and they’ve gotten pretty popular with the National Cyber League being a major competition. Some are easy, some are really hard and most have really good write-ups that can teach you so much about INFOSEC, penetration testing and actually let you practice the techniques in a relatively easy and legal way.

Where steganography comes in to this discussion is that it’s an element you sometimes see used in the kinds of challenges I mentioned previously and also in alternate reality games, online recruitment challenges by national agencies/big tech companies and militarys. They are even used in real world espionage and intelligence work or super spooky secret challenges like Cicada 3301.

Simply put steganography (and I’m pasting this straight out of Wikipedia): “is the practice of concealing a file, message, image, or video within another file, message, image, or video”. Steganography is used to hide secrets in plain sight. It’s a way to send a message, without anyone detecting that a message is even being sent.

I’ll give you more examples in the next section, but imagine a letter that has a secret written in invisible ink. Only the sender and receiver should know about the invisible ink and any eavesdroppers should be none the wiser. This simple example has been used by countless prisoners whose mail is routinely read and examined. Terrorists and spies the world over also use steganography and are known to embed messages in an image and post it online. With how many image hosting sites there are, with millions of people posting to them billions of images day in and day out, you can see why steganography can be such a challenge to combat. Before I move on to some more specific examples I want to stress again that I’m not an expert on cryptography or steganography. While researching for this podcast it’s overwhelmingly clear that you could spend your whole career focused on only steganography. This talk is just a primer on the subject and only the tip of the iceberg.

3. Examples (also from Wikipedia, the great repository of all knowledge)

  • Analog:
    • Head shaving
    • Invisible ink
    • Knots tied into ropes
    • Messages hidden under stamps on envelopes
    • Mixed typeface
    • Using a grille cipher
    • Sending messages via newspaper classifieds
  • Digital:
    • Noise in images or sound files
    • Text commented out in source html or other code
    • Using different color text
    • Fractionalized comments
    • Audio signals/spectro
    • Hidden control characters and non printing Unicode

The possibilities are almost endless for how this technique can be applied.

4. Why should we care?

When we are doing a CTF or crypto challenge and are presented with an image or media file we are pretty well assured there’s something in there, though not every image you find while doing a challenge or CTF will utilize steganography so don’t overanalyze. I’ve known people who are really into alternate reality games spending 100s of hours doing spectrographic analysis and for our purpose(and the scope of this podcast), there should be some clue that steganography is being used. The challenge then becomes how we direct our work flow as to not waste any time and be the most efficient in cracking that particular part the puzzle. There are MANY stego tools out there, some of them homebrewed, and unless the designer of the challenge puts in a clue, you might spend hours trying different algorithms or tools. And even if you do, there’s no guarantee you’ll get anything at all. A lot of the tools that will be mentioned in the next section rely on fingerprinting how known algorithms process data. This is not only a big problem for hackers like us with our CTFs and games, but even more so for governments who are charged with keeping us safe. So if you’re looking at possible steganography, you need to build a good workflow and I noticed a post on Reddit a few weeks ago with a user asking about image forensics. There was a comment posted that was so good I forwarded it to my hacking friends and it inspired me to do this podcast. I’m using the comment as a potential framework for my own personal work with images and steganography. It helped me to develop my own protocol and I wanted to share it with you all and if anyone wants to expand on it or improve it please do so. Thank you /u/Alexeyan!

5. Proposed work flow

This is coming straight out of the post on Reddit. I thought about rewriting it, but it didn’t seem necessary and I will be giving the author full credit. I add a couple more tools on at the bottom and a few closing thoughts:

  • First: Look at the image. Maybe it tells you something important.

  • Use binwalk to check for other file type signatures in the image file.

  • Use Exiftool to check for any interesting exif-metadata.

  • Use stegsolve and switch through the layers and look for abnormalities.

  • Maybe the Flag is painted in the LSB image, or some QR-Code.

  • Maybe there are random pixels that look strange in a certain layer, that’s a hint for Bit-Stego.

  • Use zsteg to automatically test the most common bitstegos and sort by %ascii-in-results. (This one auto-solves about 50% of all image stego challenges)

  • If the file is a png, you can check if the IDAT chunks are all correct and correctly ordered.

  • Check with the strings tool for parts of the flag. If you found for example “CTF{W” in a chunk, check what is on that position in other IDAT chunks.

  • The harder ones can be a lot more tricky though.. JPG coefficiency manipulation, Frequency analysis, …

  • But usually those are frowned upon, because they require a lot of guessing (if no hiding tool is provided)

Some other go to tools not mentioned above:

  • Stegdetect
  • DIIT(Digital Invisible Ink Toolkit )
  • StegSecret
  • ILook Investigator (for law enforcement)

Detecting steganography is hard work. There are computer scientists who do only this. While we aren’t at that level for the information being presented here, it will require a lot of digging and trying different tools. Hopefully following these steps will help identify the more common techniques in an easier way than trial and error.

One last thing I want to mention is that part of how I see detecting steganography in CTFs or cyptochallenges is having a certain mindset and always looking at things in various layers. I try to look at everything within the challenge as if there could be something right in front of my eyes. I mentally flip through different layers and see the codes within the codes. And remember if you’re playing an alternate reality game, a CTF or a crypto challenge, generally speaking, the designers want you to play through the game. They will leave clues if you need them. They want the players to get to the end. Don’t overthink things.

Well that’s all I’ve got for today. I hope you enjoyed this podcast and got something useful out of it. Like I said in the introduction, I’m Edward Miro. Have fun, and good luck!

6. Sources

Why I love the IBM AS/400 computer systems - Jeroen Baten | 2018-12-17

This is a talk about my love for the IBM family of AS/400 computer systems.

Although it’s a very hacker unfriendly system there is still much to admire and love.

It’s completely different from anything else which makes it nice but also very likely to disappear in few years from now. To prevent that piece of computing history to vanish I started a small initiative called It’s just me, but it does show my intention with the system.

Audacity set up and response to episode 2658 - Tony Hughes AKA TonyH1212 | 2018-12-11

Hi Guys and Girls in HPR land.

This is Tony Hughes in Blackpool in the UK back for another show. I normally talk about my own stuff but while it is related to what I have been doing lately this is a response to Al’s interview with Dave in Episode 2658 and how to setup Audacity to record and edit audio for best sound quality when podcasting.

I’ve recently joined the mintCast podcast team and have been editing and doing the post production of the audio recording for the last couple of episodes. The information that Dave provided during the show was invaluable in helping me in this task, I also have to give a shout out to Rob the previous host who also spent an hour and a half giving a tutorial on his post production work flow, but the additional information given by Dave in this show was also a big help.

I’ve now purchased a boom arm and pop filter for my mic to reduce any artefacts in the recording although as it is still attached to my desk I think I may need to invest in a shock mount although I’m not sure how it will attach to my current Boom arm. Ah well that’s a problem for another day.

As I said this was just a shout out to Al and Dave to say thanks for the show and I will save it for another day to do a show on my new post production work flow on the mintCast audio.

This is Tony Hughes saying goodbye for now.

Episode 3000 - Ken Fallon | 2018-12-07

On the 19th of September 2005 a group of individuals got together to release their first show on the podcast network "Today with a Techie".

The idea was to share knowledge through podcasting. Now 13 years, 2 months, 19 days later the project is still going strong, and you dear listener are a part of it.

Today marks the 2700th episode of "Hacker Public Radio" and coupled with the 300 shows from "Today with a Techie", marks the 3000th episode of this project.

A big thanks goes out to all 354 individual hosts who together contributed 1452 hours of shows to the archive.

There is about 50 giga bytes of mp3 files alone.

Which played back to back gives 60 days 11 hours 40 minutes 21 seconds of continuous play.

If you started listening today and played the shows 24 x 7 you wouldn't be finished listening until Monday, February 5th, 2019.

Of course by then there would be 39 additional shows released, so you still wouldn't be finished.

Despite all this we still don't have a wikipedia page. If you can, please take the time to create one for us. There is plenty of supporting information in the "In the Press" section of our about page.

So to mark the 3000th episode we are going to do nothing more than list the shows, host and summary where available.

Just doing that alone creates a whopping 7 and a half hour episode.

Are you l33t enough to listen to it all ?

Let's go.

XSV for fast CSV manipulations - Part 1 - b-yeezi | 2018-12-05

XSV for fast CSV manipulations - Part 1: Basic Usage


xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:

  1. Simple tasks should be easy.
  2. Performance trade offs should be exposed in the CLI interface.
  3. Composition should not come at the expense of performance.

We will be using the CSV file provided in the documentation.

Commands covered in this episode

  • count - Count the rows of CSV data
  • headers - Show the headers of CSV data, or show the intersection of all headers between many CSV files
  • index - Create an index for a CSV file. This is very quick and provides constant time indexing into the CSV file.
  • frequency - Build frequency tables of each column in CSV data.
  • stats - Show basic types and statistics of each column in the CSV file. (i.e., mean, standard deviation, median, range, etc.)
  • sort - Sort CSV data
  • select - Select or re-order columns from CSV data.
  • slice - Slice rows from any part of a CSV file. When an index is present, this only has to parse the rows in the slice (instead of all rows leading up to the start of the slice).
  • search - Run a regex over CSV data. Applies the regex to each field individually and shows only matching rows.
  • table - Show aligned output of any CSV data using elastic tabstops.
  • flatten - A flattened view of CSV records. Useful for viewing one record at a time.

The Linux Shutdown Command Explained - JWP | 2018-12-04

A short podcast about the shutdown command

Bandit Update - NYbill | 2018-11-29

(No Spoilers)

NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.

Original Episode:

YouTube URL tricks - desearcher | 2018-11-27

YouTube URL Tricks by Desearcher

Recommended Episode
YouTube Playlists by Ahuka

User Upload playlist

Embeded Player

Watch Later

Show "Remove Watched" Button in Watch Later queue

Chrome App trick to maximize viewing area
Watch Laterchrome -app=""
Playlistchrome -app=""

Play On TV

Roku Product List

Some Additional Talk About Characters -- 02 - lostnbronx | 2018-11-20

What are some typical ways to create characters in your stories? Should you create the plot first, or the characters first? Should we think of characters in terms of heroes and villains, or protagonists and antagonists? What is the value of character depth, and is it the same as the character arc? Lostnbronx offers up even more off-the-cuff thoughts about this complicated subject.

(NOT) All About Blender - Part the Second - m1rr0r5h4d35 | 2018-11-19

The second part of what began as a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.


Making a remote control visible - Ken Fallon | 2018-11-15

The problem

A black remote control on a black couch.

The solution

Cover it in Earth Insulating Tape.

Remote control front

Remote control rear


Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild - Jeroen Baten | 2018-11-14

Using Python, PHP, JQuery and Linux to visualize the heartrate and blood oxygen saturation level of my stepdaughter.

Jeroen Baten talks about how he used his knowledge of a couple of open source tools to visualize the heartrate and oxygen saturation in the blood of one of his children and how this aided a pediatrician at the Wilhelmina childrens hospital to come to the right conclusion and treatment. This talk is a mix of tech and 43 surgery sessions on one single human being.


Editor's Note
Jeroen's link above was added after the show had been aired.

(NOT) All About Blender - m1rr0r5h4d35 | 2018-11-13

The first part of what began a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.


Thoughts on language learning part 4 - RPG. - dodddummy | 2018-11-06

I thought I was done with this topic, but got to thinking about bringing a game to life it occurred to me it was a lot of work. So I thought about it some more and hit upon the idea of an RPG probably mostly played online where a key point of the game is that the players needn’t know the same language.

At first this seems like an odd thing for an RPG because the talking to each other is sort of a requirement. By now you’ve guessed that what I mean is that the game could be designed so that it assumes the players will have limited ability to communicate. And that drives how the game progresses.

I see two kinds of approaches. One is that players sort of team up by the their native languages so you might have people knowing different native languages working in smaller teams while the whole game has the goal of everyone learning the new language.

The other is that everyone could know a different native language and many or may nor cooperate with others but the goal of the game is everyone learning the same new language.

Submitting this show mostly because I’m curious what the community thinks of the idea.

YouTube Playlists - Ahuka | 2018-11-02

I am subscribed to a number of YouTube channels, and I found a need to be able to watch all of the videos in order for certain channels. This describes how to do it.

Raspberry pi3 open media server - JWP | 2018-11-01

  • Use Gparted for the SD card
  • Use Etcher from Resin.Io
  • Use the normal external hard drive file os.

Urandom - Ohio Linux Fest 2-18 Podcaster Roundtable - Thaj Sara | 2018-10-31

Hosts: Lyle, Thaj, Kevin O’Brian (Ahuka), Tony Beamus, FiftyOneFifty

** Record Scratch audio sample

Porteus - klaatu | 2018-10-30

Porteus is a portable Live Linux distro, based on Slackware, intended for use on thumbdrives or optical media. It is, more or less, the new Slax, now that Slax has switched to Debian.


The official means of installation is to burn Porteus to disc, and then (optionally) install Porteus onto a thumbdrive from within Porteus. To install Porteus to a thumbdrive, you need a thumbdrive with an EXT4 partition. You can try other filesystems and partition schemes, but EXT4 definitely works well.

From either Porteus or Slackware (you can try other distros, but results will vary), you can do a manual install, and here are the correct commands (as of this writing, the docs on are not accurate). Assuming you have discovered, using lsblk, that your target device (the thumbdrive) is /dev/sdx:

$ sudo bash
# mkdir -p /mnt/loop /mnt/drive
# mount --options loop /path/to/Porteus*iso /mnt/loop
# mount /dev/sdx1 /mnt/drive
# rsync -av /mnt/loop/ /mnt/drive/
# cd /mnt/drive/boot
# chmod +x
# ./Porteus*com

Alternately, you can use Porteus from a virtual machine and install to a thumbdrive, as long as your virtualisation software redirects USB. I have used virt-manager running on Fedora successfully for this.

The other alternative, of course, is to run Porteus off of an optical disc. That means your system is unwritable, so nothing you do is persistent across reboots, but you can save your work to a thumbdrive. I've worked with Slax this way before, and it's quite manageable.


Booting to Porteus depends a lot on the firmware of the computer you're booting. Almost every Linux distro in existence has accurate docs on the changes you may or may not need to make to your BIOS or [U]EFI in order to boot to Linux, so you can find more detail on this if you need. Here's some text I borrowed from Linux Mint:

Insert your USB stick (or DVD) into the computer.

Restart the computer.

Before your computer boots your current operating system (Windows, Mac, Linux) you should see your BIOS or UEFI loading screen. Check the screen or your computer’s documentation to know which key to press and instruct your computer to boot on USB (or DVD). Most BIOS or UEFI have a special key you can press to select the boot device and all of them have a special key to enter a configuration screen (from which you can define the boot order). Depending on the firmware, these special keys can be Escape, F1, F2, F8, F10, F11, F12, or Delete. That information is usually briefly displayed on screen during the boot sequence.

On Macs, keep your finger pressed on the Alt or Option key after hearing the boot sound.

Boot modes

Porteus can boot to its default persistent modes: graphical or text. Both of these modes auto load any Porteus modules you've installed and also read any changes you made since the previous boot.

It can also boot to ephemeral modes: Copy to RAM and Always Fresh. These modes act as if you've never booted into Porteus before, loading a completely fresh version of the file system. They also do not load Porteus modules automatically.

Installing software

Porteus modules are Slackware packages converted to .xzm files, a highly-compressed SquashFS filesystem. When a Porteus module is activated, the application and other files contained in the module appear in your environment. You can think of it as a layered filesystem.

To install software, you must sync up your package manager with upstream repositories:

$ sudo usm -u all

Once everything is updated, you can search for packages using the -k (for keyword) option:

$ sudo usm -k foo

And then install it:

$ sudo usm -g foo

You are prompted to either install or download the module. If you install it, then it becomes part of the filesystem. However, since changes to the filesystem are NOT read by the Copy to RAM or Always Fresh modes, this is probably not what you want. Instead, download the module so that you can have Porteus load it dynamically regardless of what mode you're running.

Modules are downloaded, by default, to /tmp/usm/ and then converted from their native format of .t?z to .xzm files. You can copy the .xzm files to an external device if you're running off of optical media, or into a persistent area on the thumbdrive running Porteus. Modules can be made permanently available in the /mnt/sdx1/porteus/modules or /mnt/sdx1/porteus/optianal directories.

Modules in the ../modules path are loaded at boot in the Graphical and Text modes, and are available to load manually in the Copy to RAM and Always Fresh modes.

Modules in the ../optional path are never auto loaded.

Modules can be activated or deactivated with this command:

$ sudo activate foo


Flatpak works on Porteus, too. I have found this to be convenient for applications like GIMP and Inkscape and Kdenlive and many others that are complex enough to warrant special attention.

Flatpak does require the glib-networking package. You will not be warned about this, because all upstream Slackware repositories assume a full install of Slackware (and glib-networking is included on Slackware, but not on Porteus). Once you install glib-networking, you can use flatpak as described, for instance, on the GIMP downloads page.

Over-customizing the "hard-coded" parts of Porteus is unwise. For instance, keep the default user (guest), don't try to change the UID (I tried and failed), and so on. Treat the system, more or less, as if though you were a guest on someone else's multi-user system. Install and customise stuff locally and through modules when possible. That's what Porteus expects, and things can break if you try to treat it too much like a traditional Linux system.

Algae farming with Desearcher - m1rr0r5h4d35 | 2018-10-29

Apologies for the sound quality. We recorded in a small apartment with only one mic. :-

Create PDF bookmarks with Pdftk - klaatu | 2018-10-23

Pdftk is a command that lets you manipulate PDFs outside of a GUI PDF creation tool. There are several GUI tools you can use to create PDFs with valid bookmarks and other fancy features, but pdftk is often more convenient.

Extract pages 1 through 2, and pages 5-21, and page 261 from a big PDF into a new PDF:

$ pdftk big.pdf cat 1-2 5-21 261 output small.pdf

Extract bookmarks from original PDF:

$ pdftk big.pdf dump_data output book.mark

Here is what a bookmark file looks like:

InfoKey: ModDate
InfoValue: D:20181010181951-05'00'
InfoKey: CreationDate
InfoValue: D:20181010181934-05'00'
InfoKey: Creator
InfoValue: pdftk (Linux)
InfoKey: Producer
InfoValue: pdftk 2.02-x86_64
PdfID0: d8deadbeeff34211ba60d80fda7611da
PdfID1: 39186170c6134566884b79c0ffee7d59
NumberOfPages: 261
BookmarkTitle: Cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkTitle: Credits
BookmarkLevel: 1
BookmarkPageNumber: 2
BookmarkTitle: Chapter One
BookmarkLevel: 1
BookmarkPageNumber: 3
BookmarkTitle: Foo Section
BookmarkLevel: 2
BookmarkPageNumber: 5
BookmarkTitle: Bar Baz
BookmarkLevel: 3
BookmarkPageNumber: 7
BookmarkTitle: Back cover
BookmarkLevel: 1
BookmarkPageNumber: 19

Apply the bookmark data back to the PDF:

$ pdftk small.pdf update_info book.mark output final.pdf

Slackware Post-Install - m1rr0r5h4d35 | 2018-10-22

This episode started out as just some thoughts on why I decided to move back to Slackware after having been away from it for a few years, and wound up being a short set of notes on the post install configuration of Slackware 14.2

This is by no means a definitive or exhaustive in its scope. It’s just a few thoughts and tips on the post-install process that might not be completely clear to a new user.

Repairing a motherboard - Archer72 | 2018-10-16

Continued from hpr2549 :: DVD ripping using old hardware

Acquired new user tower, replaced old tower with blown caps
Dell Pentium 4 CPU 3.20GHz, 2Gb RAM

sudo shred -n 5 -vz /dev/sdX

  -n, --iterations=N 
  -v, --verbose
    show progress 
  -z, --zero
    add a final overwrite with zeros to hide shredding

Used same Slackware USB from old tower

Used soldering iron from Amazon - Weller WLC100 40-Watt Soldering Station

My Music Production Setup - Claudio Miranda | 2018-10-15

Previous Music Production Setup

Current Music Production Setup

Notable Mentions

Installing a bootloader on an Arduino - Ken Fallon | 2018-10-12

In this show you will learn how to install a bootloader on an Arduino using another Arduino via In-Circuit Serial Programming (ICSP)

All credit goes to M-SHORT over at SparkFun for the excellent tutorial.

  1. Arduino IDE > File > Examples > 11.ArduinoISP > ArduinoISP
  2. Tools > Board > {your board}
  3. Tools > Programmer > Arduino as ISP
  4. Tools > Burn Bootloader

Questions on podcast production - Al | 2018-10-10

HPR Chat with Al

Al asks Dave a number of questions about podcast audio recording and post-production.

Al is thinking of doing National Podcast Post Month in November

National Podcast Post Month (or NaPodPoMo) is a challenge in a similar vein to National Novel Writing Month (or NaNoWriMo) in which participants are challenged to produce and publish a piece of audio as a podcast, every day for the month of November.

Bad podcast audio

Audio quality is as important as the content that's being presented. Bad audio is going to be what causes new podcasters the most damage in subscriber numbers. An example of good audio is the true crime podcast, One Eye Open, which Dave started listening to a couple of weeks ago. He also picked up a couple of other true crime podcasts as a result of listening to One Eye Open where the audio quality is so bad, that they can't be heard!

Loudness is a measurement of how loud something is perceived to be. Levelling is a process of ensuring that individual tracks in a podcasts are an an equivalent level, but also the podcast overall is at an equivalent level to other podcasts that have been levelled the same way.

Our setups

Al and Dave have a very similar microphone setup.

  • Samson Q2U - XLR and USB capable microphone
  • Pop filters and wind screens
  • Boom arm
  • Shock mount

What is a compressor

The non-technical definition is that it brings up the quiet bits and brings down the louder bits so that your voice has less of a variance if you shout or whisper.

Different microphone types

  • Cardioid - focuses on sounds coming from in front of the mic
  • Omnidirectional - can theoretically pick up sound from all directions
  • Dynamic - well suited for vocal use
  • Condenser - overall better quality sound than dynamic, but more susceptible to background noise, so requires a really quiet studio environment

Your level

You can measure your own level in Audacity - make sure you stay in the green! If you stray into yellow or even red, either lower your level or move slightly away from the mic.

Other people's levels

Concentrate on your own, get others to manage theirs. If you're recording multiple tracks, it can be managed in post-production, but once it's been merged into a single track it's virtually impossible.

File formats

Record in a lossless format, and do your edits and post-production in a lossless format. Only transcode to a lossy format once you're ready to publish your final file.


If you're recording yourself, and you don't want to hear yourself through headphones, take the headphones off.

If you're recording with someone else who is not in the same room, you are better off hearing yourself through your headphones at the same level as the person you're talking to.


  • Use Audacity to:
    • align the tracks so that everyone is in the right place
    • convert coughs, sneezes, burps, keyboard sounds, mouse clicks, etc to silence
  • Use Auphonic to:
    • level the individual tracks so that everyone sounds as "loud" as anyone else
    • merge the individual tracks into a single output file (a Multitrack production)
  • Dave also gives a specific use case for adding music into the final mix.

NaPodPoMo revisited

This will be Al's first attempt at NaPodPoMo, but not for Dave. Dave wants to make sure that he plans for this year, so he doesn't run out of material on day 7!!

Dave will interview another NaPodPoMo participant at least once a week during November. Looks like Al will be one of them!

Dave's final thought

Podcasting isn't rocket science. You don't need lots of expensive equipment to produce a podcast. You just need something to record into (e.g. a mobile phone or portable recorder) and somewhere to host it. You can host on your own website or on one of a number of free services, like Anchor, AudioBoom, or indeed Hacker Public Radio!

The obligatory podcast plug


  • Dave originally said that the pickup pattern that picks up 360 degrees was "unidirectional" - it should have been "omnidirectional" and has been fixed in the edit, but it sounds like it was added in afterwards... which, of course, it was!!

Why we are all going to shit in 30 years due to computers - Jeroen Baten | 2018-10-09

Now, this is not a doom and gloom lecture.

Actually it is a talk about what is going to happen in the next 30 years.

It is a talk about what is called “postcapitalism”.

It is a talk about how almost all jobs are going to disappear due to automation. But also how we are going to think about this this and come up with solutions.

It talks about the three big challenges we need to face.

And yes, this involves you as well!

Using the EXACT Function in Excel - Shane Shennan | 2018-10-03

The function looks like =EXACT(A1,D1) and its purpose is to tell you if A1 contains the exact same value as D1 or not.

More Quick Tips - operat0r | 2018-09-25


Another Rambling Drive Into Work - MrX | 2018-09-14

It’s been a while since I posted my first attempt at recording a show in my car, this attempt was recorded not that long after that but I’d forgotten to post it, hopefully, it’s not too boring.

This is the previously mentioned dictation device I used

An article that explains how to remove noise using Audacity, which was what dodddummy was talking about when he commented on my first show on HPR2377

Link to Dave’s (thelovebug) page and the original John Kulp’s $2 microphone show that kicked all this off. Looking forward to getting a chance to catch up with Dave’s drive into work show. Refer to Dave’s episode HPR2400 and John Kulp’s original $2 microphone show HPR1812

Link to the microphone originally recommended By John Kulp

A link from StackExchange that details the wiring diagram for Kenwood style microphone used in many portable Amateur radios

This is a small article in Wikipedia that covers the Electret Microphone which is the type used in the microphone recommended by John Kulp, Dave (thelovebug) and now me.

Convert it to Text - b-yeezi | 2018-09-11

Why use plain text?

  • Portability
  • Use with Unix tools
  • Use with Ranger

Ranger for the win

  • Ranger is a free console file manager that gives you greater flexibility and a good overview of your files without having to leave your *nix console. It visualizes the directory tree in two dimensions: the directory hierarchy on one, lists of files on the other, with a preview to the right so you know where you’ll be going.
  • The scope functionality is where converting to text pays off. Located at $HOME/.config/ranger/, scope is the feature that allows for file preview from inside the console. Text files are highlighted based on their file extension, for non-text files, different converters can be used to coerce the file into a text representation. Some items are available out of the box, but the configuration is written in such a way that any text can be presented in the preview screen.
  • The basic format of the scope switch statement is as follows:
case "$extension" in
        try odt2txt "$path" && { dump | trim | fmt -s -w $width; exit 0; };;

Tools in the toolset

  • atool
  • caca-utils
  • poppler-utils
  • catdoc
  • catppt
  • odt2txt
  • ods2tsv
  • docx2txt
  • xlsx2csv
  • mediainfo
  • lynx/w3m/elinks
  • highlight

Bonus tools

  • q
  • jq
  • xmlstarlet

Liverpool Makefest 2018 - interviews with Noel from JMU FabLab - Tony Hughes AKA TonyH1212 | 2018-09-10

In this episode I talk to Noel Baker from the JMU FabLab.

Running your own mainframe on Linux (for fun and profit) - Jeroen Baten | 2018-09-07

Yes, this talk is about running your own mainframe on your own hardware. Mainframes are old, yes, but they are still very much alive. New hardware is still being developed and there are a lot of fresh jobs in this area too. A lot of mainframes run COBOL workloads. COBOL is far from a dead language. It processes an estimated 85% of all business transactions, and 5 billion lines of new COBOL code are written every year. In this session the speaker will help you in take your first steps towards running your own mainframe. If you like then after this session you can continue to build your knowledge of mainframe systems using the links provided during the talk. Come on in and learn the basics of a completely different computer system! And it will take you less than an hour to do that!

Elm - First Impressions - tuturto | 2018-09-05

Open Source Gaming: Revisiting Meridian 59 - TheDUDE | 2018-08-31

Thoughts on language learning part 3 - game/story mode. - dodddummy | 2018-08-30

This is the last of 3 parts on my thoughts on language learning. This one introduces my thoughts on how games might be used in language learning. More or less the same concepts from the first two episodes only applied to game/story design.

NOTE: I’m not a game designer.

On the off chance this sounds interesting to you, hpr2620 and hpr2625 are the other two.

UK Telephone Network Exploration - Xtrato | 2018-08-29

If you have any questions regarding the show. Please leave them on the show page, or email me at or twitter @Xtrato.

My PGP key can be found here:

Home Phone Setup!! - sigflup | 2018-08-28

I’m not sure what the echoing is about. It could be picked up from my cell phone’s speaker. Also, I call ftp “tiny ftp” It actually stands for “trivial ftp”

tftp file for xinetd:

service tftp
 protocol = udp
 port = 69
 socket_type = dgram
 wait = yes
 user = nobody
 server = /usr/sbin/in.tftpd
 server_args = /tftpboot
 disable = no
 per_source = 11
 cps = 100 2
 flags = IPv4

voipbuster config files look like this:

  nat_enable: 1

SIP<mac address>.cnf:
line1_name: outside
line1_authname: <user>
line1_displayname: outside
line1_password: <password>

github projects:

  • SIP_Pi: (PjSIP: )

  • Messenger-CLI:


const login = require("facebook-chat-api");

login({email: "FB_EMAIL", password "FB_PASSWORD"}, (err, api) =>
  if(err) return console.error(err);
  api.listen((err,message) => {
   api.sendMessage(message.body, message.threadID);


lame "$2" -o "$2".mp3

scp "$2.mp3"
ssh ./runner ""$2.mp3""



echo "$@" | sed -e s/ /_/g > runner_tmp
doas mv "$1" /var/www/$cat runner_tmp)
node ./oo.js


fs= require('fs');
login = require('facebook-chat-api');

fs.readFile('runner_tmp', 'utf8', function (err, data) {
 login({email: "FB_EMAIL", password: "FB_PASSWORD"}) => {
  if(err) return console.error(err);

  api.sendMessage("New voicemail at 1109's front door "" + data + """ , THREAD_ID);


My thoughts on language learning communication applications. - dodddummy | 2018-08-24

This is the second in the series of my thoughts on language learning. In this episode I talk about it might be useful to modify existing chat programs to use two spell checking databases, one for the native language and one for the new language and have words removed from the native language dictionary as the learner advances.

I did forget to mention that something similar might be done with the grammar checkers, too.

Cycling through Brussels - knightwise | 2018-08-23

Cycling Through Brussels

Actors and Agents, Sprites and Fractals - clacke | 2018-08-22


  • Chris works on Object Capabilities for Linked Data (OCAP-LD) and other things for a living, at .

  • clacke works at making better tools for future programmers.

  • We’re both fortunate enough to have the chance to get paid for creating all Free Software.

  • Christopher Lemmer Webber and Morgan Lemmer Webber will be speaking at RacketCon 2018 on the topic Racket for Everyone (Else), how non-programmers can do "programmable publishing" using Scribble when writing humanities papers, and how Racket could better target not just beginner programmers and hard-core language theorists, but also the huge space in between.

More information on the topics covered:

  • For my last show with Chris, see hpr2198 :: How awesome is Guix and why will it take over the world

  • His Actors library for Guile Scheme is 8sync. A video of him playing in front of an audience with the Multi-User Dungeon (MUD) on top of 8sync is available on the front page.

  • Spritely, the media sharing platform that may or may not be the next MediaGoblin, is currently vaporware, but the underlying Goblins Actors library for Racket is real and works.

  • Wikipedia has more on the Actor Model, Flow-Based Programming and Object Capabilities (OCap).

  • We also mentioned in passing Communicating Sequential Processes.

  • I knew that OCap grew up in the context of E, but I didn’t know that E itself actually grew out of the needs of a form of MUD, built by Electric Communities (EC). I’m guessing this is the graphical MMORPG Habitat that EC built for Lucasfilm back in 1986, for the Commodore 64. Some writing about EC and the philosophy and experience around what they did is collected at

  • Language-oriented programming (LOP) is an old LISP methodology: Understand the problem, write a language for describing and solving the problem, write the solution in that language. Racket (itself a LISP) is heavily focused on this, and comes with a whole slew of languages out of the box. The Racket slogan on is "solve problems — make languages".

  • A recent ACM article describes in depth what the challenges of good LOP are, and how Racket helps the programmer work with it.

Thoughts on language learning part 1 - dodddummy | 2018-08-17

This is the first part of a 3 part series in which I ramble on about my thoughts on language learning. I’m no expert and I barely know one language well. In a nutshell:

  1. Teach as much as possible in the new language, focusing on vocabulary.
  2. Rather than starting with baby books, which might not be a bad idea, try to use a similar approach but assume the learners know a bit about how the world works.
  3. The goal is to get to about age 5-6 level in vocabulary so the learner can then switch to language books in the new language which already exist.

A Gentle Introduction to Quilt - bjb | 2018-08-16

A gentle introduction to quilt

Or, patch management for software.

Speaker Intro

Hi, I'm bjb. I'm a programmer.

Motivation and topic intro

I needed to learn how to use the software tool "quilt", so you get to listen to my podcast about an introduction to quilt.

People collaborating on a project must edit the same set of source files. After one person commits some changes, then the other people must rebase their own changes on the new version of the shared files before they can push their changes.

A minor fix for some old typo should not be in the same patch as a new feature; a comment correction should also be in its own patch. Essentially, two new features and some bug fixes should not all be smushed together in one patch. Each feature should be in its own patch (or patch series), and each bug fix should be in its own patch. This allows others to be able to review the proposed changes easily, and even lets them pick and choose which patches they want to apply. It becomes a chore to manage all these patches. That's where quilt comes in.

Sadly, I hadn't learned quilt till this weekend ... well one way to ensure I learn it fairly well is to write a HPR episode about it! Here goes.

I have written this episode to be understandable by anyone - you don't have to be a coder. You could use this tool to keep track of any plain-text files - recipes, todo lists, html, hpr show notes, poetry, what-have-you.


First let's describe what a patch is. No, first let's describe what source code looks like. Source code is a plain text file full of computer instructions. It is a plain text file, as opposed to a word processing file. Plain text files do not have any formatting codes or styles in them (such as which font should be used, or what colour, and so on). They just contain the characters that make up words of the content.

A key feature of these source code files is that a new section of the file starts on a new line. The source code is almost never "reflowed" like prose might be. It is sort of like poetry - the more formal poetry, not prose poetry. There are a lot of really small sections in source code files (called "statements" and "expressions"). Most of these sections fit on one line. This is useful for the tools we're going to discuss because when one line changes it does not affect the following lines, as it might when text is reflowed after a change.

People have been coding with plain text files in various languages for decades. Thus a large set of tooling has grown around this format. One of those tools is called "diff" and another one is called "patch".

Diff is a way to compare two text files. Typically it would be used to compare the "before" and "after" of a source code file undergoing changes. So you could find out what was done to the source code file by running diff on the before and after versions of that file.

A diff file is a series of excerpts from the original and changed files. There are various kinds of diffs. Some of them show only the changed lines. Some of them show a few lines before and a few lines after in addition to the changed lines themselves. That second kind is called a "context diff" and helps the automated machinery (and humans too) find the correct part of the file to which the change must be applied.

By default there are 3 lines of context before and after the changed lines.

The changed part is represented by including the old AND new line. In order to distinguish which lines are old and which are the replacements, all the lines (context lines, removed lines and added lines) are shifted over to the right by one character. The context lines start with a space in the extra left-most character, the original removed lines have a minus sign in the left-most character and the new added lines have a plus sign.

Thus if any character on a line in the source file has changed, been added or removed, then the whole line will be replaced with a new line in the new file. The diff will show both the removed line and the new one.

The patch utility takes the "diff" output and applies it to the original file to produce the later version of that file. You can apply it in reverse mode to the later version to get the original version. So patch is also a really useful program, and these two tools, diff and patch, are the basis of most of the version control systems out there. It is the existence of these text-based diff and patch tools that makes revision control systems work really well on plain-text files that are naturally structured in a line-by-line format.

A note about terminology: the diff program produces a diff. This diff is also called a patch. The patch program takes the diff (aka patch) and applies it to the original file to produce the changed file.

So if you have a timeline of adding a few features and making a few fixes on a code-base, it can be fully described by the original file plus a set of patches that had been produced with diff. You can get the final source code by taking the original file, applying the patches one by one, and voila, the final version of the file has been recreated.

Now we know enough to give a concise description of quilt:

Quilt lets you work with patches, creating them, applying them, un-applying them, and moving some things from one patch to another with a minimum of effort.

How to use quilt

Now a tutorial on how to get started using quilt.

This tutorial will start with a buggy program, create a few bad patches, and fix them up into good patches. I make no claims as to the quality of the final code though. The reason for starting with bad code and patches is to illustrate how to use quilt.

Starting to use quilt on a project

To start using quilt, create a directory called "patches" at the top of your code or just above.

$ mkdir patches

If you don't do this, quilt will create it for you. However, first it will look for a directory called "patches" in the current working directory, its parent, and all the way up ... if it finds one, it will use it. If not, it will create one in the current directory.

So, to keep it from finding some unrelated directory with the name "patches", just create a patches directory yourself in the right place.

Quilt first patch, including a new file!

You must tell quilt before you make any changes to your source code. Then it can store the original versions of the files that will change, so it can produce the diffs that will become that patch once you change the files.

Create a directory called example, and create a file in it like this, called hello.c (don't fix the errors):

#include "stdio.h"

int main (int argc, char *argv[], char *env[])
    print ("Hello, world!n")
    return 0;

Now create a new patch - that is, give it a name - before you change any code. This will create (or find) a couple of directories, "patches" and ".pc", and populate them with some files to start.

$ quilt new fix-typo

And now you can fix the typo and generate the patch. First start by telling quilt that you want hello.c to be in the patch. Quilt saves a copy of it aside for comparing with the later versions:

$ quilt add hello.c

You can get quilt to tell you what files it knows about:

$ quilt files

Edit the file - add a semicolon at the end of the print line, and change the double-quotes on the #include line to angle brackets:

#include <stdio.h>
print ("Hello, world!n");

Save the file and exit the editor. Next generate the patch:

$ quilt refresh

The oddly named "refresh" command creates the patch itself. It is called "refresh" because it can also be used to update the patch.

Now you can see the current set of patches by giving the command:

$ quilt series

The single patch is called fix-typo, and its name in the list is coloured brownish. That is because it is the "current" patch, and it is the one that will be updated if you "quilt refresh" again with more changes.

One thing I did not find in the quilt documentation is how to add a new file. When adding a new file, there is no existing file that you can name in the quilt add command. Of course, the very first patch I wanted to manage with quilt, I had introduced a new file. It turns out that the quilt edit command can be used to add a file to the patch, even if the file does not yet exist:

$ quilt edit header.h

Add content to header.h (see below) using the plain-text editor that quilt has started up for you. Save the file.

#ifndef HEADER_HH__
#define HEADER_HH__

#define NAME "bjb"


Regenerate the patch with the new changes:

$ quilt refresh

Now you can list the patch series again with quilt series. So far there is one patch. You can see what the patch consists of with the

$ quilt diff


$ quilt diff
Index: hello/hello.c
--- hello.orig/hello.c
+++ hello/hello.c
@@ -1,8 +1,8 @@
-#include "stdio.h"
+#include <stdio.h>

 int main (int argc, char *argv[], *env[])
-    print ("Hello, world!n")
+    print ("Hello, world!n");
     return 0;

Index: hello/header.h
--- /dev/null
+++ hello/header.h
@@ -0,0 +1,7 @@
+#ifndef HEADER_HH__
+#define HEADER_HH__
+#define NAME "bjb

Quilt second patch

Now it is time to make a second patch. First we tell quilt we are moving to a new patch:

$ quilt new prototype
$ quilt edit header.h

Edit this file again - add a function prototype.

int do_output(const char *name);

Create the patch and look at the list of patches:

$ quilt refresh
$ quilt series

Now when we give the quilt series command, we see two patches. The first one is green, meaning it has been applied, and the second one is brown, meaning this is the one that quilt refresh will change if you call it.

Again you can see what latest diff looks like by giving the quilt diff command.

$ quilt diff

Now let's unapply the latest diff:

$ quilt pop
$ quilt series

We see that the list of patches has the same patches in it, but now the second patch is white (meaning unapplied) and the first patch is brown (meaning it is the one that would change if we edited a file and typed quilt refresh.

$ quilt files

That first patch has two files in it, hello.c and header.h.

Now unapply the first diff:

$ quilt pop
$ quilt series

Both patches are listed, and both are shown as white.

We can see what files quilt knows about before any patches are applied:

$ quilt files

No files.

Apply all the patches at once:

$ quilt push -a
$ quilt series

And look at what files quilt knows about:

$ quilt files

Now quilt reports on only one file, while in the first patch it knew about two files. You must be careful to "add" each file to each patch, or it will not put the changes in those files into the patch. Luckily, quilt edit will put the files in the patch for you, so if you always start your editor with quilt edit fname, then you will have your changed files added to your patches without having to take any other action. But, if you are adding an existing file to the patch, you can add it without having to open your editor with the quilt add command:

$ quilt add fname

In order to avoid forgetting to add a file in a patch as I was editing, I just added all the files in the directory each time I created a new patch, whether I edited them or not.

Split a patch in two parts

We are going to split the first patch in two parts. We had fixed a typo and added a new file in one patch. They should be two separate patches.

First make the first patch current:

$ quilt pop

Then make a copy of that patch:

$ quilt fork

This makes a copy of the first patch called fix-typo-2. But, it removes the first patch fix-typo and puts fix-typo-2 in the series. We need to put the first patch back, and then edit each of the two fix-typo patches so each one contains one part of the original patch.

# edit patches/series file and put the first patch back
# The file should contain:


Now edit the first patch using a plain-text editor. It is in patches/fix-typo. Remove the part about the new file, header.h. It should now look like:

Index: hello/hello.c
--- hello.orig/hello.c
+++ hello/hello.c
@@ -1,4 +1,4 @@
-#include "stdio.h"
+#include <stdio.h>

 int main (int argc, char *argv[], *env[])

Save this file. Now edit the second patch patches/fix-typo-2 using a plain-text editor. Remove the part about the file hello.c. It should now look like:

Index: hello/header.h
--- /dev/null
+++ hello/header.h
@@ -0,0 +1,7 @@
+#ifndef HEADER_HH__
+#define HEADER_HH__
+#define NAME "bjb

If you give a quilt series command now, you will see that fix-typo-2 is the current patch and quilt thinks fix-typo has been applied.

We have to fix up quilts idea of reality.

Pop the current patch. Things have changed under quilts feet so we have to force this with the -f option:

$ quilt pop -f

Now, because quilt thought the original state of fix-typo-2 is the unchanged file, quilt shows the series as being completely un-applied.

$ quilt series

Now we can push the patches:

$ quilt push -a

Rename a patch

Here we rename a patch from fix-typo-2 to add-header. The quilt rename command acts on the current patch, so make fix-typo-2 current first:

$ quilt pop fix-typo-2
$ quilt rename add-header
$ quilt series
$ quilt push -a

Reorder the patch series

We will make a new patch, then move it earlier in the series:

First make the new patch:

$ quilt new printf
$ quilt edit hello.c

And change the print statement to:

printf("Hello, world!n");

Save the patch:

$ quilt refresh

Now to demonstrate the reordering.

Unapply all the patches, edit the patches series file patches/series so the patches are in the order you like, and then re-apply the patches. If you are lucky, they will re-apply with no conflicts.

$ quilt pop -a
$ vi patches/series
# move "printf" between fix-typo and add-header.
# now all the bug-fixes are at the beginning of the series
$ quilt push -a

Merge two patches into one

Make another new patch:

$ quilt new output-function
$ quilt edit hello.c

Change the c file to this:

#include <stdio.h>

int do_output(const char *name)
    return printf("Hello, %s!n", name);

int main (int argc, char *argv[], char *env[])
    /* ignoring the return code for do_output */
    return 0;
$ quilt refresh

Now, to merge two patches into one:

$ quilt pop prototype
$ quilt fold < patches/output-function

We have merged the prototype and output-function patches, because they describe a related change.

Save the patch.

$ quilt refresh

Throw away a patch

Now we no longer need the last patch, output-function, as it has been included into the prototype patch. But we might want to rename the prototype patch.

$ quilt delete output-function
# we have to clean up a bit for quilt or the rename won't work
$ rm patches/output-function
$ quilt rename output-function

Deleting will not work on a patch that has been applied before the current patch.

You are ready to contribute your patches ... go forth and code.


We have seen that quilt can help you manage your contributions to any project that is written in plain-text files. It can generate patch files (usually needed for contributions to open source projects) and can help you manage and update them as the tip of the development branch moves forward with other peoples' contributions.

To use quilt successfully, you need to remember to add files to each patch with quilt add/or quilt edit before editing, and to generate the patch with quilt refresh once all the editing of each patch is done. The rest is easy.

Commands that edit the patches:

$ quilt new patch-name
$ quilt add fname
$ quilt edit fname
$ quilt refresh
$ quilt pop [-a]
$ quilt push [-a]
$ quilt rename [-P oldname] newname
$ quilt delete [-P patchname]
$ quilt fold < patch_to_merge

Commands that view the state of the patches:

$ quilt series
$ quilt files
$ quilt diff [-P patchname]
$ quilt graph [--all]
$ quilt patches fname
$ quilt annotate fname
$ quilt applied
$ quilt unapplied

HPR exhortation

You've been listening to Hacker Public Radio. Anyone can make a show -if I can do it, so can you.

Exposing a Raspberry Pi database through a REST API - b-yeezi | 2018-08-14

Links from the episode

My 1948 Truetone D1835 Tube Radio - Jon Kulp | 2018-08-09

The 1948 Truetone D1835 Tube Radio

I recently bought a vintage tube powered radio at an estate sale and in this episode I talk about it and let you hear it. Click the image to view my Flickr pictures.

1948 Truetone Tube Radio

Watch A video showing the radio in action!

Restoration of a Fasco L55A Hassock Fan - Jon Kulp | 2018-07-26

The Fasco L55A Hassock Fan

Click the image to view my Flickr slideshow of the restoration process.

Fasco L55A Hassock Fan Restoration

A video showing my restored fan in action!


Dummy shares a tip and a tip/rant about asking and answering questions - dodddummy | 2018-07-25

A quick tip on using paper towel or dish rag to easily remove stubborn travel coffee mug rubber seals followed by a semi ranty discussion on asking and responding to questions in the context of “Let me google that for you.”

As a bonus, this is part of a series-ish set of shows I’m going to do recording with different equipment to give you the feel of the quality of shows possible with low cost equipment by someone who doesn’t know how to edit audio or speak to audiences.

HPR Quick Tips July 2018 - operat0r | 2018-07-24

Don’t use GOOGLE DRIVE ! They flag personal content and backups as malware and will not let you download or share your own backups!!!!!

Special episode on 2600, Blue Boxes, Phreaking - Ken Fallon | 2018-07-20

2600 Hz is a frequency in hertz (cycles per second) that was used by AT&T as a steady signal to mark currently unused long-distance telephone lines.
A blue box is an electronic device that generates the in-band signaling audio tones formerly used to control long-distance telephone exchanges.
Phreaking is a slang term coined to describe the activity of a culture of people who study, experiment with, or explore telecommunication systems, such as equipment and systems connected to public telephone networks. The term phreak is a sensational spelling of the word freak with the ph- from phone, and may also refer to the use of various audio frequencies to manipulate a phone system. Phreak, phreaker, or phone phreak are names used for and by individuals who participate in phreaking.

Radio FreeK America 1

02/20/02 - Trashing live, dual was "slammed," trouble with Qwest, Qwest releasing customer info then backing off, Rax discusses VOMIT and subsequent fun, start your own telco or isp,, Slingshot pre-paid Internet access, Kondor's Trios tribulations, fun with the phone, and more.


Fitting a 3.5mm adapter to a bluetooth receiver. - Ken Fallon | 2018-07-19

There was a time when the perfect lightweight podcast listening station was a sansa clip running Rockbox connected to a set of SHE3600/97 Philips In-Ear Headphones.

Alas Philips stopped producing the SHE3600/97. SanDisk reduced the specs of the clips, so Rockbox is no longer supported. We're left without a flexible option to listening to podcasts.

On the other hand the price of Android phones have fallen to sub €50 range, and blue tooth headsets can be had for €25, there is a possibility to have the portability while keeping the cost low.

I set out to convert the bluetooth headset to a accept generic 3.5mm sockets.

A new ear bud set with crappy in ear buds, and the hacked set.

Plays fine with large over ear headphones.

Also with small in ear buds, complete with Patent Pending ear identifier

Something to read Motherload

How to Fix a Remote with Buttons that Don't Work - Jon Kulp | 2018-07-17

After listening to Ken Fallon’s episode about how to check whether your remote is working or not, I checked one of our remotes that had been giving us problems and found that only a couple of the buttons produced the light. Then I found a video on YouTube showing how to fix non-working buttons and this is my report.

Battling with English - part 2 - Dave Morriss | 2018-07-16

Battling with English - part 2

Further notes about 'then' and 'than'

In the last episode I mentioned the confusion between then and than. I referred to the etymology of the two words, but I didn't go into detail.

Reading the Online Etymology Dictionary, one interesting point in the page about than is that it was:

Developed from the adverb then, and not distinguished from it by spelling until c. 1700.

So, it would seem that the two words are related and historically were the same! However, I'd guess that it is unlikely that people using them interchangeably now are making reference to usage in the 1700's.

Problems with apostrophes

Let us now examine the apostrophe, which is a punctuation mark. It is used for:

  • Indicating that letters have been omitted, such as in a contracted form of words. For example when the phrase they are is contracted to they're.

  • Turning a word into a possessive form such as in the cat's paw

  • When the plural of a single letter (or digit) is required such as in dot your i's and cross your t's.

There are other uses but you can look at the Wikipedia article for them if you want to dig deeper. I may well revisit this topic in a later show in this series.

Long notes

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

Using nmtui, the Network Manager Terminal User interface - Philip | 2018-07-12

This is my first show and I am happy to be here!

nmtui's documentation can be found here.

You can reach me on the freenode irc network at blu3r4d0n.

Tech Talk With Allison - sigflup | 2018-07-10

Come join us and listen to Allison talk about her tech!!! This talk includes subjects like websites, ruby, os design and other such things.

Allison's email address:

Saving Money: a response to Klaatu's Personal Finance Series - Jon Kulp | 2018-07-05


Miniature painting - tuturto | 2018-07-04

tuturto rambles about miniature painting while painting some ancient British units (horses for chariots to be specific) for De Bellis Antiquitatis.

Cleaning out your Digital Gutters - knightwise | 2018-07-03

While cleaning out the gutters, Knightwise talks about cleaning out the digital gutters of his information consumption and looking for geeky ways to get his information fix.

Check to see if a Remote Control is working - Ken Fallon | 2018-06-29

Ever have a remote control that didn't seem to be working ? With this AMAZING LIFE HACK you can see the unseen

OK all it is is looking at the remote using your camera - but still...

Random Rant - TheDUDE | 2018-06-27


3 Contribution case studies - klaatu | 2018-06-26

How easy is it for your potential contributors to contribute? Klaatu looks at three open source and open culture projects to determine how easy they make it for your potential contributors to contribute?

My new 3D printer - impressions of the Creality Ender 3 - Dave Morriss | 2018-06-25

My new 3D printer - impressions of the Creality Ender 3


I have been thinking of buying a 3D printer for a year or so. I had thought of getting a Prusa i3 MK3 in kit form, but although it's cheaper than the built form this printer is not cheap, and I doubted my ability to build it. I was also unsure whether there was a real need for the capabilities of a 3D printer in my life, and whether such a purchase was justified.

I had noticed the Chinese Creality CR10 printer in the recent past, and wondered about buying one of these at about half the price of the Prusa. This is a good-sized printer which comes fully-assembled as I understand, and it has had many good reviews.

When the Creality Ender 3 was released in April 2018 for around half the price of the CR10 it looked worth the risk to see if I really needed a 3D printer. So I bought one (from Amazon) in June.

As I write this (2018-06-10) it's been less than a week since it was delivered, so this is a very preliminary look at the printer.

Long notes

For the rest of the notes for this episode look here.

LinuxLUGcast 102 the lost episode - Honkeymagoo | 2018-06-20

This was episode 102 of the LinuxLUGcast.
So the LinuxLUGcast is an open podcast/LUG that meets every first and third friday of the month using mumble. This method of running a podcast leaves it open to anyone showing up (which is what we want because it gets difficult for fiftyonefifty and I to come up with topics all the time). We have also gotten the reputation of being a safe for work podcast. This is why episode 102 is being posted here. Between the not safe for work language and the fact that after a few drinks during the podcast I get a little rambly we thought it best not to publish it on the regular LinuxLUGcast feed, but I thought there was some good conversation here that would be lost if it did not go somewhere. After some discussion we at the LinuxLUGcast decided that we would publish it here so that it could be heard by the HPR community.
We have also done some website remodeling which has screwed up the .ogg feed, and wanted to let people know that we are still podcasting and to please check out for the new .ogg feed.

p.s. please forgive my rambling

Emigration - klaatu | 2018-06-19

Confused about leaving your homeland for <strike>greener</strike> pastures? Maybe this episode will shed some light on the subject.

Public domain music from Can you find your national anthem? Do you know all the words to your national anthem? Either way, you should be ashamed of yourself.

Quick Tips June 2018 - operat0r | 2018-06-15

  • sites that required two factor tips
  • Referb your can opener
  • Referb your powerwheels
  • Humidifier filter DIY
  • free anonymous email over TOR

Personal cash-only finance - klaatu | 2018-06-14

Klaatu discusses the advantages and disadvantages of going [mostly] cash-only

Personal finance - klaatu | 2018-06-06

Personal finances


People need to save for retirement. But how do we do that?

Conventional wisdom in the USA says that Social Security is your retirement fund.

There's no guarantee that will still be around when you retire, and it's entirely out of your hands. It maybe a good bonus, but possibly it isn't something to rely on.

So how do we do it?

They don't teach you this stuff in school

People say you should save for retirement, but they forget to say how.

Currently, there are two de facto methods of funding retirement in the USA:

  • social security: abstract, not guaranteed. Assumes you start contributing to ssn early
  • 401k. abstract, indirect unless you take active role in tracking it. best if you start early.

In other countries, there may be significant alternatives. For instance, Kiwisaver in New Zealand.

These methods are OK, but difficult for you to interact with directly.

There are two direct levels of investment:

  1. At your bank: CDs and mutual funds
  • Go to your bank, ask to invest in a mutual fund or Certificate of Deposit (CD)
  1. Stock market: your local market and the US market
  • what: direct investment in "publically traded" (whatever that means) companies
  • how: or
  • In other countries, look for brokers who will invest your money in local or international markets

Son of Hunky Punk - Claudio Miranda | 2018-06-05

I follow-up on my Frotz episode by covering Son of Hunky Punk, a Z-machine interpreter for Android. I also test my copy of ZORK I to see if it works as well as it did on Frotz.


  • IRC: claudiom (#oggcastplanet on Freenode)
  • E-mail: claudio (at) linuxbasement (dot) com

HPR 2017 New Years Eve show part 7 - Various Creative Commons Works | 2018-06-01

HPR NYE 2017 - 7

Intro to Fossil - klaatu | 2018-05-31

Some shownotes for fossil

Create a new fossil repository:

  $ fossil new shownotes

Add your work to the repository:

  $ fossil add shownotes.html

Commit your work:

  $ fossil commit --comment "added shownote HTML file"

As a fun exercise, destroy your work.

  $ echo "klaatu said this was perfectly safe" > shownotes.html
  $ cat shownotes.html
  klaatu said this was perfectly safe

And now revert it back to the last known good version:

  $ fossil revert shownotes.html
  REVERT shownotes.html
  $ head -n1 shownotes.html
  <p>Some shownotes for fossil<p>

Did you accidentally revert? You can undo that.

  $ fossil undo shownotes.html

And then revert again.

  $ fossil revert shownotes.html
  REVERT shownotes.html
  $ head -n1 shownotes.html
  <p>Some shownotes for fossil<p>

Check your remote:

  $ fossil remote-url

Close a fossil repo:

  $ fossil close

See the fancy browser-based UI of your repo:

  $ fossil ui

I bought a laptop - clacke | 2018-05-29

After months (or years?) of waffling and false starts I finally bought an ASUS X542U. The advertised specs say "up to", but I don’t have the "up to", I have the baseline 7th gen i3, 128GB SSD, 4 GB RAM.

Here’s the rambling story of a laptop purchase and its various side quests.

Some details that may or may not have made it in to the show (and the show has some that aren’t there) available on the Fediverse at .

Side quest to the side quest of making an episode about side quests:

Why spend five minutes writing a simple Makefile when you can spend half an afternoon writing a simple default.nix instead?

My Favourite Browser extension - MrX | 2018-05-24

My contribution to List of requested shows “Your favourite browser extensions”

On Android, I'm lazy and just seem to have fallen into using the chrome browser. The Add-on I'm going to talk about unfortunately isn't available for the Android operating system.

On the Linux desktop, I use Firefox

In the past, I've dabbled with various browser add-ons but until very recently I've been using no browser add-ons on the desktop.

A browser add-on I did use and did miss was Tab groups

Tab Groups was originally a feature built into Mozilla Firefox

The feature was removed but maintained as an add-on until it was broken by changes in Firefox 57

A colleague at work brought the One-Tab add-on to my attention

It's available for both the Chrome browser and Firefox

No sign-up or registration required

With Tab-group I found myself spending a lot of time arranging groups getting the size right naming them etc.

One tab philosophy is a bit different and perhaps maybe not so intuitive, though I think now after some use I prefer it as it gets out of the way and can be used with the minimal of fuss.

I highly recommend one-tab if you regularly find yourself dealing with a lot of open tabs in your browser.

Battling with English - part 1 - Dave Morriss | 2018-05-23

Battling with English - part 1


This is the first episode of a series about the English language. In it I want to look at some of the problems people (including myself) have with it. I plan to do several episodes and I want to keep them short.

The English language is old and has changed – evolved – in many ways over the years. It has come from a multitude of sources, and it's difficult to say what is correct in an absolute way.

For example, when I was at school we were taught that "nice" should not be used in written material. At that time it was becoming common to see phrases like "I had a nice time" meaning pleasant (in a bland sort of way). In my "Concise Oxford Dictionary" from 1976 the 6th definition, "agreeable" is marked "colloquialism", whereas today this is a common usage.

However, it's easy to use the wrong word in the wrong context. You might choose one that sounds similar for example. You might also have problems with the spelling of a chosen word. Spelling in English is not always logical. You might also find yourself confused about the use of punctuation – the correct use of apostrophes can be challenging for example.

In this series I want to examine some of the problem areas and try to give you the means of remembering the right way.

Note: I'm not an authority on this stuff, but I have tried to teach myself not to make these mistakes over the years. I just wanted to share what I have learnt1 with some links to higher authorities.

Long notes

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

  1. One thing I have learnt is that "learned" and "learnt" are both correct and mean the same. However, "learnt" is more common in the UK, whereas "learned" is used both in the UK and the USA.

Styx -- The Purely Functional Static Site Generator - clacke | 2018-05-22

I switched phones, and complained about the microphone. It probably made a greater difference that I was recording in 16 kHz Vorbis, because I was on a fresh install of Audio Recorder. Always double-check your settings, and apologies for the quality.

I am currently in the process of converting our website from Hugo to Styx.

Styx is s static site generator written entirely in the Nix language. It is able to figure out exactly what pages need to be rebuilt depending on what you changed in your page source and data sources, and all intermediate results are stored in the Nix store.

The parsing of AsciiDoc and (multi)Markdown is done by external tools, but the templating and layouts is all Nix.

I thought I may have dreamed the bit about carnix or buildRustPackage parsing TOML within Nix, because I couldn’t find any evidence of them ever having done that. But then I discovered it was in nixpkgs-mozilla I had seen it! That’s Mozilla’s overlay for nixpkgs, which makes Rust Nightly always available in Nix, so it’s kind of Nix’s rustup equivalent. So yeah, I guess I had dreamed who did it, but not that somebody did it. :-)

HPR 2017 New Years Eve show part 6 - Various Hosts | 2018-05-18

HPR NYE 2017 - 6

What is stow? - clacke | 2018-05-15

stow was perfected in 2002 with stow 1.3.3. Then it was silent for 9 years, and in 2011 stow 2.1.0 came out. It received a few updates until stow 2.2.2 in 2015, but don't worry. It's still relevant, and it won't eat your homework. I don't even know what these 2.x versions are about. You still just stow mything, stow -R mything and stow -D mything like you always did.

If stow is too limiting to you, listen to hpr2198 :: How awesome is Guix and why will it take over the world about its big brother, which has all of the advantages of stow except radical simplicity, and none of the drawbacks.

For a shorter and more practical episode on Guix, see hpr2308 :: Everyday package operations in Guix.

Calibrating Calibration - NYbill | 2018-05-14

NYbill talks about the Siglent SDS1202X-E oscilloscope and the calibration pitfalls of the BA model over the newer BB model.

Pics for the episode:

DVD ripping using old hardware - Archer72 | 2018-05-10

  1. Had a tower with a bad motherboard.
  2. Wife found one at the Savers (Goodwill) for $8
  3. Board worked, but had no video
  4. Bought a 8mb video card for $10
  5. Power supply fan seized, $10,
    • Got a warning about danger of opening up a power supply.
  6. Distro should be on a USB key, and run headless
    • Easy way to back up the system
  7. Had Arch installed, no 32 bit support after end of 2017
  8. Installed Slackware, only working distribution for my hardware
    • Found it useful to have a script to chroot from the install media to the Slackware install.
    • Added a boot delay to mkinitrc for usb, otherwise it would boot with a message about not finding /mnt in /etc/fstab
  9. Set up ssh with alternative port
  10. Installed mplayer and tmux, and ripit with sbopkg
    • Mplayer to rip streams for movies and shows
    • Tmux is my favorite for resuming from a different PC or mobile
  11. Needed a way to rip any media regardless of encryption
    • Only need libdvdcss to read
    • Includes Disney (Star Wars, Tron)
  12. CD ripping was a bonus
    • Ripit to rip CDs
  13. Scripts are on Github

  1. Happy ripping!

MSYS2 - clacke | 2018-05-08

In the beginning there was Cygwin, by Cygnus Solutions (later acquired by Red Hat), then came msys, a lightweight derivative with no package manager, no fancy integration tools, just the bare minimum necessary to support a gcc compiler and the GNU autotools.

msys2 is cygwin minus the package manager plus an adaptation of the pacman package manager from Arch, and a big archive of packages of all kinds. It offers a friendlier command-line experience than Cygwin does.

I failed to mention here that msys was explicitly made to support the MinGW (Minimalist GNU for Windows) flavor of GCC, which is intended for building native Windows applications. GCC for Windows has two types of output, cygwin or mingw, where cygwin is for source code that expects POSIX-y facilities and mingw is for code that should compile (possibly with some minor adjustments for C dialect) equally well under GCC and Microsoft Visual C, and should produce about the same output.

HPR 2017 New Years Eve show part 5 - Various Hosts | 2018-05-04

HPR NYE 2017 - 5

  • Guitar Talk, Les Pauls, Strats, etc. SG, Flying V, Squire ... etc.

  • Social media discussion, Twitter, Mastodon, G+

  • Opensource licenses

  • More autism discussion

  • New drugs that make you live longer

  • notalion participated in

How I prepared episode 2493: YouTube Subscriptions - update - Dave Morriss | 2018-05-03

How I prepared episode 2493: YouTube Subscriptions - update


In show 2493 I listed a number of the YouTube channels I watch. Some of what I did to prepare the notes was to cut and paste information from YouTube pages, but the basic list itself was generated programmatically. I thought the process I used might be of interest to somebody so I am describing it here.


I needed four components to achieve what I wanted:

I will talk a little about the first three components in this episode in order to provide an overview.

Full-length notes

The full-length notes (available here) contain details of the processes involved in building the list of channels.

Home Theater - Part 1 Hardware - operat0r | 2018-05-02

cat /etc/pwrstatd.conf
powerfail-delay = 60
powerfail-active = yes
powerfail-cmd-path = /usr/local/bin/
powerfail-duration = 0
powerfail-shutdown = no

lowbatt-delay = 30
lowbatt-active = yes
lowbatt-cmd-path = /usr/local/bin/
lowbatt-duration = 0
lowbatt-shutdown = yes
enable-alarm = yes
shutdown-sustain = 60
turn-ups-off = yes
lowbatt-threshold = 15

ups-polling-rate = 1
ups-retry-rate = 10
prohibit-client-access = no

How I helped my dad run a static website using SparkleShare - clacke | 2018-05-01

My #hprep tag up on Heldscalla serves as inspiration for times like this, when I should just record something while I have the chance. Suggest more topics for me to orate about and I'll put them up there!

In this episode I'm talking about how I've set up SparkleShare (web site currently down, try the archived site if it's still down when you're reading this) and GitLab Pages to allow my dad to tinker with a static web site locally on his machine and automatically get the changes up on the official URL without having to bother with any manual steps (at least on the happy path).

Errata: Oops, I said Jekyll uses Python. It uses Ruby.

TL;DL: We have two directories, two git repos. He doesn't have to know about git. He plays around in the staging directory first, looks at the test site how it turned out, when he's happy he just copies the files over to the production directory and they go live. SparkleShare automatically pushes to (I didn't say it outright in the episode, but yeah, I'm using the hosted service -- that's basically the point of this mode of doing things, minimal setup, responsibility and maintenance for me), and GitLab CI runs Jekyll (use the static site generator of your choice) to copy files over for deploying, and finally GitLab Pages deploys the new site.

I believe all of this took me less than two hours to set up, effective time, once I got around to it (and was in the same time zone as my dad's computer). Don't forget to add your verification TXT record in the DNS.

Microphone Wind Screen Demo - lostnbronx | 2018-04-30

This is just a quick demo of my new microphone wind screen muff. Though you can still hear some wind noise getting through when especially sharp gusts roll by, I think you'll agree the difference with and without the screen is dramatic.

The Movo is not perfect, and will not stop all wind noise on a very blustery day, but this kind of screen is essential for outdoor recording. The only editing I did on this track was a fade-in and out, and transcoding it from wav to flac (which was then transcoded at HPR into other formats).

My geeky plans for the new house. - knightwise | 2018-04-25

Moving house gives you plenty of possibilities. While painting the Living room I talk about the geeky infrastructure of my new house and how I plan to set it up.

Recording HPR on the fly Part II - clacke | 2018-04-24

This is an update to hpr1877 :: Recording HPR on the fly on your Android phone. I thought that was two years ago, but wow it's even two and a half years ago, back in late 2015.

Updated recommendation! Back in #1877 I said that you could go with this app because it has these nice functions, or with that app because it has these other things. Well, there's no longer any need for trade-offs. Just go to f-droid, install Audio Recorder and you're good to go!

I installed it in two minutes, recorded a two-minute episode on how great it seems to be, and then I recorded another three episodes and I can confirm that it's pretty great. You've got the record/pause control available on the lock screen, it can save in FLAC, you can define the naming pattern it should use for the files, and you can tell it where to store its files.

Some apps just insist on saving everything in internal storage, and that can run out pretty quick. Meanwhile I've got 30 GB left on my SD card that I'm struggling to make apps make use of.

And finally, it also has a rename function (unlike my previous recommendation uRecord!), so you can conveniently, right in the app without finding the files through some other means, change the file name to reflect what it was that you were recording, so that you're not in the situation where one month later you're looking at a dozen files with just dates and times and need to listen to all of them to figure out which one it is you want.

It even has an automatic skip silence function, but that's pretty useless for the places I record in. :-D

When I said "cool waveform" I meant that it's displaying the recorded waveform on the screen as it records. Not that useful, but it's just part of the overall really nice polish of the app.

HPR 2017 New Years Eve show part 4 - Various Hosts | 2018-04-20

HPR NYE 2017 - 4

Moving to Office 365 (and painting the ceiling) - knightwise | 2018-04-19

A couple of weeks ago we moved to a new house and I had some time on my hands to talk to you guys while painting the ceiling. Moving was very much on the forefront of my mind since I also recently moved my company's Email platform to Office 365. As a cross platform slider with a foot in each major operating system I decided to give you my first impressions of the new platform (and upset the GNU-purists) with my review.

Burp Suite / ABCMouse Game - operat0r | 2018-04-18

more burp/android videos:

Podcrawl Glasgow 2018 - thelovebug | 2018-04-17

HPR Podcrawl 2018

Dave, Kevie, and Andrew - hosts of TuxJam - take you via a slightly elongated route to an upcoming event.

The event

Podcrawl Glasgow 2018 Saturday 28 July 2018 from 18:00 starting at The State Bar, Holland Street, G2 4NG

Dave's mistake

A minor review of the 2017 event leaves a bitter taste in the mouth of the Big Jessie.

Who is the event for?

Kevie lists various groups of people who might be interested in going. Dave adds a couple more. So does Andrew. The upshot is: anyone human. Oh, and guide dogs. But probably not children after 19:00 (it's a Scottish pubs/licensing thing).

Audio from the event

Andrew suggests that we may be able to record or even stream audio from the Podcrawl. Dave apparently is an expert in such things, and tries to impress the others with science. Kevie suggests we wait towards the end of the event when it's quieter.

Tactical chunder

Dave is reminded - for a second time - about his mishap. Andrew decides to go into nauseating (pardon the pun) detail.

How will you find us?

Some of us will be wearing Podcrawl t-shirts, although the company that originally produced the t-shirts sadly has gone out of business.

Andrew keeps Ken Fallon happy by suggesting that listeners record a response to this show with any suggestions about recording at live events.

Kevie tells us where the event will be (see the top of the notes)

We'll be posting through the event on Twitter/GNUsocial/Diaspora with the hashtag #PodcrawlGlasgow. Use any one of these to find out where we'll be at any time.

Non-techy people are welcome. Cigars will be provided.

If you're in a band, come along as well... we have plenty of opportunity for promotion of your music!

Andrew reminds us that this is the fifth Podcrawl in Glasgow.

Kevie says that if you're coming into Glasgow before 18:00, we'd love to meet up with you beforehand. We believe that all three of us (plus Dave's good lady) will be there from early/mid afternoon.

Contact Us

You can contact all three of us at the same time via - let us know you're coming!


Twitter: @kevie49


Twitter: @mcnalu


Twitter: @thelovebug

Other podcasts?

Dave asks Andrew about a podcast featuring three guys talking about Creative Commons and Linux: TuxJam

Dave asks Kevie about a short-form music podcast featuring a couple of pieces of music from a single artist: CCJam

Andrew asks Dave about a husband and wife podcast with a live show that goes out every Friday night from South Yorkshire in England: The Bugcast - it's award-winning, has a live chatroom, and is 10-years old!

Thanks for listening!

Thanks to Torriden for allowing us to play their track Drinking Away. We hope to see you at Podcrawl in July for a beer or malt (or two)!

CCTV with DARKNET - operat0r | 2018-04-11

Twitter: @operat0r


HPR 2017 New Years Eve show part 3 - Various Hosts | 2018-04-06

HPR NYE 2017 - 3

General problem solver - tuturto | 2018-04-05

Run Linux on a Windows Box - JWP | 2018-04-04

A short show about running Debian on windows.
Yes it really works.

What you have do first

and here

Converting My Laptop to Dual Boot - Steve Saner | 2018-03-28

Converting My Laptop to Dual Boot


In this episode I describe how I converted my Linux-only laptop to dual-boot with Windows 10. Specifically, using information from a previous HPR episode.


The procedure used in this project drew heavily from the information presented in HPR episode 2305 by Mongo.

Target Laptop

  • Lenovo Thinkpad T550
  • Intel i7-5600U Dual-Core
  • 8GB RAM
  • 256GB SSD

Laptop was purchased in Jan 2016 as a factory refurb unit from an Ebay seller. The model was about 1 year old at the time. As soon as I got it, I summarily removed any trace of Windows, with prejudice, and installed Linux.

The Problem

I am needing to run some Windows software that doesn't work in either Wine or a virtual machine environment. Specifically Autodesk Fusion 360.

Some Challenges

  • No longer have Windows install media. I was able to download a Lenovo recovery USB image.

  • I didn't think that a 256GB drive would be big enough for both Linux and Windows. I purchased a 512GB SSD drive.

  • I was happy with my Xubuntu setup and configuration and didn't want to have to start all over on that. I hoped that restoring my home directory would take care of that.

The Procedure

  1. Backed up my home directory, just in case.

  2. Replaced the hard drive.

  3. Tried to boot from Lenovo Windows thumb drive.

  4. Found that the BIOS was set to legacy mode, so reset BIOS to factory.

  5. Told the installer to use the entire drive.

  6. Went through the entire Windows install and update process.

  7. Used the instructions provided by Mongo to resize Windows filesystem size.

  8. Used the instructions provided by Mongo to turn of fast boot.

  9. Used the instructions provided by Mongo to turn of Secure Boot in BIOS.

  10. Booted from Xubuntu 16.04 thumb drive.

  11. Did Xubuntu install as normal, choosing the install type of installing along side Windows Boot Manager.

  12. Installed all of the updates.

  13. Mounted the old hard drive with a USB drive enclosure, which was a bit of a challenge because that drive was encrypted. The drive has 2 partitions. A small boot partition and then a large LUKS encrypted partition.

    This is a procedure that can be used to mount such a partition.

    • First you must decrypt the partition and map it to a device. This can be done with the following command (assuming the partition mount point is /dev/sdb2):

      cryptsetup luksOpen /dev/sdb2 cryptdrive

      This command will map the partition to the following device:

    • Normally you could then mount the filesystem as follows:

      mount /dev/mapper/cryptdrive /mnt
    • However, in this case the encrypted filesystem is actually an LVM volume that contains two volume groups that made up the partitions of the previous Linux install, so you can't directly mount it.

    • I had to first install the LVM tools, which had not been installed by default.

      apt-get install lvm
    • Then I had to issue the following command to activate the LVM volume groups.

      vgchange -ay

      That resulted in two more devices being created.

    • I could then finally mount the old root filesystem with:

      mount /dev/xubuntu-vg/root /mnt
  14. Copied by entire home directory from the old hard drive to the new install.

    cd /home
    cp -rp /mnt/home/username .
  15. Rebooted computer and Xubuntu came up will all of my desktop settings intact. Just need to install non-default packages.


This ended up being a totally successful process. The computer is now dual-boot. It boots into Xubuntu by default, but you can choose Windows. Xubuntu system is mostly restored back to the way it was.

DIY CCTV Security System - operat0r | 2018-03-27

CCTV Security System

  • $80 Reolink IP PoE Security Camera 4MP Super HD 2560x1440 with SD Card & Audio Outdoor Indoor Bullet IR Night Vision Motion Detection RLC-410S
  • 65$ RLC-410 ( No SD CARD )
  • $150 Linksys Business LGS116P 16-Port Desktop Gigabit Ethernet PoE+ Unmanaged Network Switch I Metal Enclosure $150
  • Ispy to start
  • 115 lines of bash
  • When event ends on ZM yolo is run on a random 10 images for that event (Person Dog Cat Car)
  • if an object is detected we look to see if two Android phones via MAC on network
  • if they are on the network it means somebody is home so events are throttled to 1/1hr max
  • if nobody is home then original image/object detected from event is sent to email
  • zones
  • zones preclusion
  • Video


  • rain, spiderwebs, shadows, Car lights (preclusion zones)
  • full motion capture is -6hrs 16gig
  • smearing ( lower FPS on cam and make sure ZM has higher framerate then the cam make sure not to use Source Type:ffmpeg and use remote or try both)
  • journalctl -f -t DARKNET.service (shows nothing...@#%ing systemd)
  • night time

More Notes:

Start with one zone at a time and raise/test sensitive KISS...don't setup like 4 zones and expect to trouble shoot anything. I used my Android to do a lot of tweaking. I also want to sort out "night" mode config so after night mode kicks in a different config is automatically applied.

Use low quality for motion detection and drop frame rate of cam to lower than max of ZM for little to no smearing and I also set "Alarm Frame Count to 2" and "overload ignore frame count to 4" but I think it's more about Alarm Frame Count..I can't be sure..

Explanation of overload ignore frame count
Report this post Quote
Post by bb99 » Thu May 10, 2012 5:22 pm

For sudden changes to the environment, no better tool then Overload Frame Ignore Count. Your fps determines these settings but at 10 fps with Overload Frame Ignore Count set to 4, it only ignores .4 seconds. In other words if a drastic change to the lighting (such as a car with headlights on in darkness) passes within the monitors view it will ignore the number of frames you specify before processing for motion detection.

Alarm Frame Count

This option allows you to specify how many consecutive alarm frames must occur before an alarm event is generated. The usual, and default, value is 1 which implies that any alarm frame will cause or participate in an event. You can enter any value up to 16 here to eliminate bogus events caused perhaps by screen flickers or other transients. Values over 3 or 4 are unlikely to be useful however. Please note that if you have statistics recording enabled then currently statistics are not recorded for the first ‘Alarm Frame Count’-1 frames of an event. So if you set this value to 5 then the first 4 frames will be missing statistics whereas the more usual value of 1 will ensure that all alarm frames have statistics recorded.

Windows software to get basic idea ( install face plugin )


eazy getting started

getting started with GPU

you need 4gig+ GPU and new nvidia or old GCC4.9 /GCC4_NEEDED_FOR_DARKNET$ ls cpp-4.9_4.9.2-10_amd64.deb gcc-4.9_4.9.2-10_amd64.deb libasan1_4.9.2-10_amd64.deb libcloog-isl-dev_0.18.2-1+b2_amd64.deb libisl10_0.12.2-2_amd64.deb g++-4.9_4.9.2-10_amd64.deb gcc-4.9-base_4.9.2-10_amd64.deb libcloog-isl4_0.18.2-1+b2_amd64.deb libgcc-4.9-dev_4.9.2-10_amd64.deb libstdc++-4.9-dev_4.9.2-10_amd64.deb

GPU memory talk!msg/darknet/ZRAEvMmKzFc/iVZgibJiJQAJ

trying to GPU prep ..

apt-get remove --purge nvidia-cuda-toolkit libcudnn*
dpkg -i libcudnn7_7.0.5.15-1+cuda9.1_amd64.deb
dpkg -i libcudnn7-dev_7.0.5.15-1+cuda9.1_amd64.deb
dpkg -i cuda-repo-ubuntu1704-9-1-local_9.1.85-1_amd64

sudo dpkg -i cuda-repo-ubuntu1704-9-1-local_9.1.85-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-1-local/
sudo apt-get update
sudo apt-get install cuda

apt install libopencv-dev

more code/ references

yolov2 training

ffmpeg -c:v h264_vdpau -rtsp_transport tcp -i "rtsp://admin:@" -f segment -segment_time 60 -segment_format mp4  -reset_timestamps 1 -strftime 1 -c copy -map 0 dauphine-%Y%m%d-%H%M%S.mp4

ffmpeg -hwaccel vdpau -i rtsp://admin:@ -an -f rawvideo -y /dev/null

complicated zoneminder plugins and bits of code :(

cheap cams 720p max

Save as video

By default ZoneMinder saves events as a sequence of images. It is however possible to save an event as a video file. Caution is advised when converting events to video as it is very strenuous on the ZoneMinder machine, however once you have converted an event it can be viewed/downloaded any time without additional stress on the server.

First, make sure you have OPT_FFMPEG under Options -> Images set to yes (checked).

If necessary, set the proper full path for the ffmpeg executable in PATH_FFMPEG (ex.: /usr/bin/ffmpeg)

Open up the default view for an event and Click the video link located in the top left corner

Choose a video export file type and click generate.

Download the video to your machine. If video files have already been generated you will see them listed at the bottom of the page.

When an event gets a video file encoded for it you can choose to automatically include that event with any future exports. For a more detailed explanation on how to select and export events investigate How to export download and view events

HPR 2017 New Years Eve show part 2 - Various Hosts | 2018-03-23

HPR NYE 2017 - 2

Why I choose Aperture first - David Whitman | 2018-03-21

David Whitman encourages you to choose Aperture as the most important setting in setting up your camera.

Understanding Exposure, 3rd Edition by Bryan Peterson - a good book that is great for learning photography. Duck Duck Go can connect you with a place to buy this book.

David's cache of BAD Photos mostly of Hunt Dogs (some cute girls with dogs too)

Have some fun. Take some photos and do a HPR episode.

Response to episode 2496 - b-yeezi | 2018-03-19


This is written for fish shell

for pi in pi1 pi2 pi3 pi4; cat what_pi | ssh "$pi" bash -; done

False Prophets - lostnbronx | 2018-03-14

Lostnbronx considers the effect that Elon Musk and SpaceX are having on the latest push for the exploitation and exploration of space, and the danger of pegging the future of the human race upon the showmanship of one man.

Racket, Nix, Fractalide and the sounds of a Hong Kong New Town - clacke | 2018-03-13

Listen to me walk through five shopping malls and one bicycle tunnel, as I rant about how flow-based programming microservices and functional package management will save the future of programming and software reuse, and usher in a new era of software quality and productivity!

If it sounds like I'm a bit down about working alone on racket2nix, you're interpreting me wrong! I didn't expect any feedback at all from the small to non-existent racket/nix intersection, but it turns out the intersection is larger than I thought, and I'm grateful for any words of encouragement, and feedback in any form on what the community needs.


Nix is the mother of Guix:

Build Your Own Lisp (A Book Review) - Brian in Ohio | 2018-03-12

Build Your Own Lisp



  3. Daniel Holden links:

My journey into podcasting - thelovebug | 2018-03-07

How I Got Into Podcasting

The Background

Audio production has always been an interest of mine: my late grandfather was an audiophile, my dad ran an AV studio in Woking (the one where the Spice Girls were formed - my dad got mentioned in a couple of their autobiographies) and now runs his own AV consultancy business, and my cousin also runs an AV consultancy... so there’s a definite family history in there.

I dabbled briefly with hospital radio (as a technician, rather than a presenter) in the late 80’s, and I was a technician and presenter on College Radio in the early 90’s where I hosted a show called “The Barry Manilow Fan Club” on Friday lunchtimes.

Yes, I am a huge fan of Barry Manilow - he’s given me a lot of inspiration as a musician - no, I didn’t play any Barry on the College Radio show.

I’d also had a few people say that I had a good radio voice. Others say a good radio face, but I don’t like them anymore.

The Catalyst

In 2007, I discovered this podcasting lark through a couple of friends who had their own podcasts. One was The Random Three: a personal musical journey where Mark - the host - would play three seemingly-random pieces of music from his own collection (thus, not podsafe) and explain the reasons why he chose them. Most of the time, these seemingly-random tracks actually had a theme, but it didn’t necessarily become apparent until after the second track. It was a great show - now sadly defunct - and I really miss it. I even submitted my own music choices for Mark to present.

The other was Dumbed Down Life: three chaps nattering about “stuff” and playing some music along with it. Another great show, which - although it still exists - currently releases episodes every year or so.

What drew me to these shows - apart from being friends, was the fact that these were regular guys, not professionals.

That led me to think “I can do that”, so I set about proving - to myself, mostly - that I could.

The Start

One Thursday in early March 2008, when the wife had gone to the gym for a couple of hours, I grabbed my Logitech headset, my Linux laptop, a handful of tracks from the Podsafe Music Network, and a piece of software called IDJC, and recorded the first ever episode of The Bugcast. It was just over 22 minutes long, and it was dire. Utterly dire. Every so often, I go back to it and listen and cringe and marvel at how much better the show is now!

The music back then wasn’t strictly podsafe either: the first track I played was Moloko’s Sing It Back… but I didn’t worry about it then, as I got the track from a source that gave implicit permission for use in podcasts.

I did do a show - episode 20 - which was a nostalgic trip back to my college years, where I played tracks by Chad Jackson, Japan, and Dream Warriors. This was a complete and intentional violation of copyright on my part, which led me to pull the show only a few weeks later. I did rerelease the show two years after that, but with the offending tracks removed. However, there is a story to the show, so I would recommend you go listen.

Back then, it was just me and a small listener-base of friends, their family, their families’ servants; their families’ servants’ tennis partners, and some chap I bumped into in the mess the other day called Bernard. But as time went on and I got more experience, I was really enjoying what I was doing, and started to experiment.

One thing I did discover by about episode 16 is that I wasn’t editing my shows in post, aside from topping and tailing silence. This made it so much easier for me as I was recording the shows as-live from the very beginning, but taking out the vocal gaps, gaffes and the like. So there was really only one place to go from there...

Going live

So in August 2008, on episode 24, to an audience of about 10 people, I streamed the first LIVE episode of the podcast. Wow, that was such a buzz! It was a major turning point in the show as I committed myself to do a regular show at a set time each week... turning a fun hobby into something a little step beyond amateur. There were a couple of non-live shows that I had to put together using the wife’s Windows machine when my laptop went bang and had to be repaired, but I hated doing that because I didn’t like the piecemeal sticky-tape method of production. There was little flow, and my spoken links between the music sounded very much like a bad Radio 4 anchor.

In late September 2008, I was accepted as a member of the now-defunct Association of Music Podcasting. This was another major step for me. All member of the Association were peer-reviewed as part of the criteria for membership. This meant that my podcast was sufficiently good to be accepted. That meant so much to me, and made me take things so much more seriously (and was the main reason why I pulled episode 20 just prior)

It also meant that the show was becoming more music-oriented - something I really did not have a problem with! Particularly as I was starting to strike up good relationships with some of the artists that I was featuring on the show. This led to me prerecording an interview with one of the bands in January 2009, and then again with another artist in March.

Having registered a proper domain for the podcast (rather than piggybacking my own personal domain) and then celebrated the first anniversary of the show... you could say that the show was fuelling its own progression. And I was enjoying that journey immensely!

Over the next 6 months, I joined the Made In The UK Show collective, interviewed an artist LIVE on the show, had the show syndicated on an internet radio station in the UK, and launched a new, independent chatroom for the website.

The Major Change

And then, in September of 2009, the 18 month anniversary of the show, and two days before my birthday, something happened to totally turn the show upside down.

I decided that I wanted to improve the show. Bearing in mind that I was still using my Logitech headset, my Linux laptop, and a piece of software called IDJC to record and stream the show, I felt it was time for a change. So I spent a small fortune on a mixer, microphones, stands, audio interface, and cables.

Yes, microphones. Plural.

Up to this point my wife, Caroline, had progressed from occasional listener, to regular distraction (I don’t think details are appropriate!), to researcher. So I asked her a question... if I bought two microphones, would you join the show as a permanent co-host? She said yes.

That really changed things. The dynamic of me talking to an imaginary audience (bar the activity in the live chatroom) changing to me bouncing off someone in the same room was electric! The show was totally transformed by that fairly simple change. Our listener figures jumped up, the music on the show was more varied, existing listeners enjoyed the show more... it was amazing.

There have been occasions where Caroline hasn’t been able to join the show (illness, kids, etc) and the listeners (and I) have really noticed her absence.

Since Then

  • we’ve launched an OGG feed, which comprises approximately 20% of the downloads from the site
  • at one point we were syndicated on 4 internet radio stations around the world
  • we’re major contributors to
  • in 2013 we were awarded the European Podcast Award for UK Personality
  • we’ve just celebrated 10 years of podcasting, producing over 500 regular episodes

So there’s a potted history of how I got into podcasting.

Beyond The Bugcast

Outside the realms of The Bugcast, which is still my primary podcast:

  • I’m a contributor to CCJam - a short-form community podcast which focuses on music
  • I’m one of the co-hosts of TuxJam - Linux news with Creative Commons music
  • I’m one of the co-hosts of the Duffercast
  • I’m an irregular contributor to HPR, as you’ll probably already know
  • I’m just become the producer of the Admin Admin podcast - my first producer-only gig

Also ran:

  • I’m the “owner” (if you like) of the Made In The UK Show - currently on haitus
  • I’m one of the co-hosts of Crivins - currently on haitus

I’m always happy to answer any questions or provide help with regard to podcasting, you can find various ways to find me over at my Contact page

Thanks for listening! :-)

Volume Of Thought - lostnbronx | 2018-03-06

Lostnbronx measures how loud his own thoughts are -- or rather, how loud outside noise has to be before they are disrupted.

It turns out that unwanted music in his ears at -30 dB is when his train of thought starts to derail.

Life without Google - Quvmoh | 2018-02-28

HPR 2017 New Years Eve show part 1 - Various Hosts | 2018-02-27

HPR NYE 2017 - 1

10 Years of Xoke - Xoke | 2018-02-23

HPR 40, on the 24th Feb 2008, was when a (slightly) younger Xoke debuted

YouTube Subscriptions - update - Dave Morriss | 2018-02-21

YouTube Subscriptions - update


I reported on some of my YouTube subscriptions in show 2202, where I concentrated on the various Maker channels I subscribe to.

Since then I have added a few more such channels, but this time I also want to talk about some of the others I subscribe to.

YouTube Channels

  1. Anne of All Trades
  2. bigclivedotcom
  3. Computerphile
  4. David Waelder
  5. EvanAndKatelyn
  6. ExplainingComputers
  7. HomeMadeModern
  8. izzy swan
  9. Jackman Works
  10. mugumogu
  11. Pask Makes
  12. Phil Pinsky Productions
  13. RetroWeld
  14. Thomas Sanladerer
  15. tim sway
  16. Unemployed Redneck Hillbilly Creations
  17. William Lutes
  18. Wintergatan

Long notes

I have another version of the above channel list in the long notes with more details and with some of my observations.

Some news with Finux - finux | 2018-02-19

The 3 stories covered in this episode

CONTEXT IS EVERYTHING - lostnbronx | 2018-02-15


hosted by Lostnbronx

Turning a large audio file into a tiny video file for a very specific use case.

This solution probably won't work for you, because none of the ones I found on the Internet worked for me. Trial and error led me here, and it's probably the only guide you'll have as well.

Start with as high a quality audio file as you can manage. .wav is good, but it's big. Let's convert it to .flac. If you already have a .flac file, skip this part.

1.) Convert .wav to .flac.

sox INPUT.wav OUTPUT.flac

2.) Convert the .flac to a very small mono .opus. Bitrate can be even smaller. I went down to 14.

opusenc --bitrate 18 --downmix-mono INPUT.flac OUTPUT.opus

3.) Combine the .opus file with a single static image, and output to a .webm video. This should not be very much bigger in file size than the .opus and .jpg combined. The smaller the image file, the better. (I tried using a .gif, but it was actually bigger than the .jpg I ended up with.)

ffmpeg -i INPUT.opus -r 1 -loop 1 -i INPUT.jpg -c:v libvpx -tune stillimage -shortest -y -c:a copy OUTPUT.webm

The final file. It doesn't sound great, but it's listenable, which is all that was desired.

Here's a better quality version of the audiobook.

The process and final result can be improved upon by people smarter than I, without doubt, but this works for now.

SPECIAL THANKS to the Urandom guys (X1101, Thaj, and Pokey), Monsterjavaguns (Jason van Gumster), and the ever-fabulous Klaatu, for their suggestions and encouragement. I would not have found a solution to this, nor even thought to do an episode of HPR, without them!

Editor's Note 2018-02-15: The wrong audio was accidentally released with this show. It has been corrected and should be re-uploaded by your podcatcher.

Psychology of Love - Aaressaar | 2018-02-14

Simple LibreOffice Repo for Fedora - ToeJet | 2018-02-13

Simple LibreOffice Repo for Fedora

My setup: You can look at the real setup. Hosted at home on a DLS connection so real usage is discouraged.

Actual Script

Repo file to put in /etc/yum.repo.d

Cron Entry. Should be run as web user, not root.

# m h d m w
# * * * * * command to be executed
# - - - - -
# | | | | |
# | | | | +----- day of week (0 - 6) (Sunday=0)
# | | | +------- month (1 - 12)
# | | +--------- day of month (1 - 31)
# | +----------- hour (0 - 23)
# +------------- min (0 - 59)
# m     h    dom mon dow command
0       3    *   *   *    /var/www/html/libreoffice/LOrepo

The Alien Brothers Podcast - S01E05 - I Saw the Invisible Man - The Alien Brothers Podcast (ABP) | 2018-02-09

Recorded December 23 2017

All links are external.

Real mobile recording platform(recording Exile on Main Street)

Let Me Drown” by Soundgarden

T-Mobile AccuRadio Online


Sonic Youth(band)

Thurston Moore’s other bands

Glowing Aura’s and Black Money” (the New York Times)

Robert Bigelow(wikipedia)

Tom DeLonge’s UFO Academy(consequence of sound)

Big Audio Dynamite “Rush”(YouTube)

Mick Jones(wikipedia)

Buy tuning machines!(amazon)

Ministry (band) (wikipedia)

The truth behind the Elf on the Shelf(wikipedia)

Redacted (twitter)

How Did Harry Reid Get Rich?(national review)

Mr Show - “Praying Machines”(youtube)

The Firm (film)(youtube)

Link collector(Loomis Bros)

Magnets and how they work(know your meme)

Mechanical Man(Devo) (youtube)

How to take apart a dryer(


Maytag Repair Man(Characterweb)

Extra heavy guitar picks(sweetwater sound)

Headphone splitter(zsounds)

The man in the moon(wikipedia)


lca2018: Katie McLaughlin - Clinton Roy | 2018-02-06

Clinton interviews Katie McLaughlin at 2018 on her role with the conference as community liaison and as the lead organiser of PyCon Australia.

Editor's Note: Corrected audio now available

Intergraph workstation - JWP | 2018-02-01

Been going through my old work servers.

They typically run until I can't update them anymore and then sit not used until I have a bit of free time. So I have an old intergraph box in it that I new pentium 4 motherboard from about 8 years back. I had the receipt taped to the inside of the box. And the Expense statement from work. I had centos 6.0 on it try as it must It got no more updates and repros. It also has a weak PSU as I had to remove the DVD and graphics card to get to work.

About intergraph:

Intergraph Corporation is an American software development and services company. It provides enterprise engineering and geospatially powered software to businesses, governments, and organizations around the world. Intergraph operates through three divisions: Hexagon PPM, Hexagon Safety & Infrastructure, and Hexagon Geospatial. The company's headquarters is in Huntsville, Alabama, USA. In 2008, Intergraph was one of the 100 largest software companies in the world. In 2010, Intergraph was acquired by Hexagon AB. Intergraph was founded in 1969 as M&S Computing, Inc., by former IBM engineers who had been working with NASA and the U.S. Army in developing systems that would apply digital computing to real-time missile guidance. The company was later renamed to Intergraph Corporation in 1980. In 2000, Intergraph exited the hardware business and became purely a software company. On July 21, 2000, it sold its Intense3D graphics accelerator division to 3Dlabs, and its workstation and server division to Silicon Graphics. The companies incorporated SmartSketch, a drawing program used previously for the PenPoint OS and EO tablet computer. When Pen computing did not take off, SmartSketch was ported to the Windows and Macintosh platforms.

The new TD-300 and TD-400 "Personal Workstations" offer 3D graphics capabilities equal to or below the prices of PCs configured as 3D workstations, the company said. The TD-300 and TD-400 Personal Workstations are available immediately, with prices starting at $5,495.

So the box now has a Pentium 4 dual core in it which is 64 bit. This chip is 2004-2007.

So I have the ubuntu 32 bit work. And Suse Enterprise 12, tumbleweed and leap on hyperV. I had my Transmeta box on Debian I386 32 bit. So I need a redhat flavor. Since its 64 bit I picked CentOS.

What is CentOS?

CentOS (/ˈsɛntɒs/, from Community Enterprise Operating System) is a Linux distribution that attempts to provide a free, enterprise-class, community-supported computing platform functionally compatible with its upstream source, Red Hat Enterprise Linux (RHEL). In January 2014, CentOS announced the official joining with Red Hat while staying independent from RHEL, under a new CentOS governing board. In July 2010, CentOS overtook Debian to become the most popular Linux distribution for web servers, with almost 30% of all Linux web servers using it. Debian retook the lead in January 2012.

In January 2014, Red Hat announced that it would sponsor the CentOS project, "helping to establish a platform well-suited to the needs of open source developers that integrate technologies in and around the operating system". As a result of these changes, ownership of CentOS trademarks was transferred to Red Hat, which now employs most of the CentOS head developers; however, they work as part of Red Hat's Open Source and Standards team, which operates separately from the Red Hat Enterprise Linux team. A new CentOS governing board was also established.

CentOS developers use Red Hat's source code to create a final product very similar to RHEL. Red Hat's branding and logos are changed because Red Hat does not allow them to be redistributed. CentOS is available free of charge. Technical support is primarily provided by the community via official mailing lists, web forums, and chat rooms. CentOS version numbers for releases older than 7.0 have two parts, a major version and a minor version, which correspond to the major version and update set of Red Hat Enterprise Linux (RHEL) used to build a particular CentOS release. For example, CentOS 6.5 is built from the source packages of RHEL 6 update 5 (also known as RHEL version 6.5), which is a so-called "point release" of RHEL 6.

Starting with version 7.0, CentOS version numbers also include a third part that indicates the monthstamp of the source code the release is based on. For example, version number 7.0-1406 still maps this CentOS release to the zeroth update set of RHEL 7, while "1406" indicates that the source code this release is based on dates from June 2014. Using the monthstamp allows installation images to be reissued for (as of July 2014) oncoming container and cloud releases, while maintaining a connection to the related base release version.

Since mid-2006 and starting with RHEL version 4.4, which is formally known as Red Hat Enterprise Linux 4.0 update 4, Red Hat has adopted a version-naming convention identical to that used by CentOS (for example, RHEL 4.5 or RHEL 6.5). AltArch releases are released by the Alternative Architecture Special Interest Group (AltArch SIG) to supporThere are three primary CentOS repositories (also known as channels), containing software packages that make up the main CentOS distribution: base - contains packages that form CentOS point releases, and gets updated when the actual point release is formally made available in form of ISO images. updates - contains packages that serve as security, bugfix or enhancement updates, issued between the regular update sets for point releases. Bugfix and enhancement updates released this way are only those unsuitable to be released through the CentOS-Fasttrack repository described below. addons - provides packages required for building the packages that make up the main CentOS distribution, but are not provided by the upstream. The CentOS project provides several additional repositories that contain software packages not provided by the default base and updates repositories. Those repositories include the following: CentOS Extras - contains packages that provide additional functionality to CentOS without breaking its upstream compatibility or updating the base components. CentOSPlus - contains packages that actually upgrade certain base CentOS components, changing CentOS so that it is not exactly like the upstream provider's content. CentOS-Testing - serves as a proving ground for packages on their way to CentOSPlus and CentOS Extras. Offered packages may or may not replace core CentOS packages, and are not guaranteed to work properly. CentOS-Fasttrack - contains bugfix and enhancement updates issued from time to time, between the regular update sets for point releases. The packages released this way serve as close candidates for the inclusion into the next point release. This repository does not provide security updates, and does not contain packages unsuitable for uncertain inclusion into point releases. CR (Continuous Release) - makes generally available packages that will appear in the next point release of CentOS. The packages are made available on a testing and hotfix basis, until the actual point release is formally released in form of ISO images. debuginfo - contains packages with debugging symbols generated when the primary packages were built contrib - contains packages contributed by CentOS users that do not overlap with any of the core distribution packages Software Collections - provides versions of software newer than those provided by the base distribution, see above for more details

The end of support on my box is currently 2024. During my setup I let the centos do something with LVM the drive had two WD 320GB disks. One was very hot so I moved it so it have some more air.


In Linux, Logical Volume Manager (LVM) is a device mapper target that provides logical volume management for the Linux kernel. Most modern Linux distributions are LVM-aware to the point of being able to have their root file systems on a logical volume.

Heinz Mauelshagen wrote the original LVM code in 1998, taking its primary design guidelines from the HP-UX's volume manager. LVM is used for the following purposes: Creating single logical volumes of multiple physical volumes or entire hard disks (somewhat similar to RAID 0, but more similar to JBOD), allowing for dynamic volume resizing. Managing large hard disk farms by allowing disks to be added and replaced without downtime or service disruption, in combination with hot swapping. On small systems (like a desktop), instead of having to estimate at installation time how big a partition might need to be, LVM allows filesystems to be easily resized as needed. Performing consistent backups by taking snapshots of the logical volumes. LVM can be considered as a thin layer of continuity and ease-of-use for managing hard drive replacement, repartitioning and backup. software layer on top of the hard disks and partitions, which creates an abstraction Basic functionality Volume groups (VGs) can be resized online by absorbing new physical volumes (PVs) or ejecting existing ones. Logical volumes (LVs) can be resized online by concatenating extents onto them or truncating extents from them. LVs can be moved between PVs. Creation of read-only snapshots of logical volumes (LVM1), or read-write snapshots (LVM2). VGs can be split or merged in situ as long as no LVs span the split. This can be useful when migrating whole LVs to or from offline storage. LVM objects can be tagged for administrative convenience. VGs and LVs can be made active as the underlying devices become available through use of the lvmetad daemon.

Setup with CentOS is not as simple as linux mint or ubuntu and very different than debian. You have to click and know a little about what you doing. For me with the basic 500GB install disk I got only a bare server with ssh. The machine was having power issues and would not boot from a usb stick so I had to go through 4 different DVD drives until I found one that worked with the DVD-R format. I had to use another deskop and power the DVD threw the other desk up connecting only the sata port the IDE drive was not working well either on this old board.

I had to remove the old centos 6 from the drives using Gparted. There were errors with the gparted but the centos installer worked great after I removed ext4 part of the lvms.

GParted is a free partition editor for graphically managing your disk partitions.

With GParted you can resize, copy, and move partitions without data loss,

Getting the mirrors working and getting it to work through a fire wall was pretty hard I had to make two config changes to the yum.conf one with the proxy address and the other to allow http cache. I also used export_proxy= to get it work globally. I had really trouble finding a fast mirror but I did not give up hope after a while it found fast mirrors that I got over 2MB per second from.

So I installed Gnome and made boot up at startup I will install x2go or vncserver on it also just in case I need it.

After some time of playing with it I was able to get it to fully update.

I then moved to the server room, got the IP address and connected it it from putty. I think the advantage of this box is that I will always have a Redhat 7 install ready to demo or learn something without having to setup a lot of things.

Reading Audio Books While Distracted - dodddummy | 2018-01-30

Just a quick and dirty episode on my attempt to solve the problem of listening to audio books at work or anytime you can't fully concentrate on the important thing, the audio book, of course.


I have more time to listen to books than to read them. I have no issues listening to audio books on my commute or when taking walks. The problem occurs at work. I have about 4 hours a day I could be listening to audio books. Over the years I've tried countless times, all with the same result. I get distracted by work and find I've missed key parts of the story and end up listening to music or podcasts I don't mind missing instead.

There's nothing wrong with music or podcasts I don't mind missing but that doesn't help with my growing list of books I want to 'read'.

I decided to treat this like a regular problem and break it down to see if I can find a solution to this problem.

Here are the variable I have to play with. These might be different for you.

  • Book in one file or broken into chapters
  • Listening speed

Design goals

Be able to listen to an audio book and have reasonable comprehension. Super Simple. I can't be seen as messing around with my player more than whatever it is that's keeping me from my player :)

Normally I listen to books in one large file because at one point in time it was easier for me to keep track of them in my player and bookmarking was easier for my little brain to handle. But I got to thinking this might solve the problem of wasted time when needing to repeat sections of the book. If the book were broken into pieces, I wouldn't need to repeat as often. I tried listening to 3 chapters at a time and had two issues. The first is that 3 chapters is still quite a bit of time and I was repeating sections I didn't need to repeat. For example, I might have been able to follow along with chapter 1 but not chapters 2 and 3. This meant repeating chapter 1 or messing around to manually skip chapter 1 when I repeat. Not good.

The second issue I had when listening to 3 chapter chunks was spoilers. If I got distracted during chapter 1 but not chapter 3, chapter 3 would contain spoilers for chapter 1 and chapter 1 would be spoiled on the re-listen :)


As it turns out listening in 1 chapter chunks solved both of these issues. So now I play one chapter on a loop until I feel I comprehend it well enough and then move to the next. This reduces the time when I need to re-listen because I was distracted and is simple because I only need to mess with the player when I'm ready to move to the next chapter.

It also reduces the spoiler issue. While there are still spoilers, they are limited to spoiling the same chapter. A good enough compromise for me.

As far as playback speed goes, I like to speed audio up when I can concentrate on the audio but prefer to listen at normal speed when I can't.

Other considerations

Some content might lend itself more to being broken into chunks by time rather than chapters. After all, not all chapters are the same length and podcasts don't usually have chapters. Assuming I decide to stick with this approach, I'll probably try running podcasts which require one to pay attention through a script that splits them up into chunks based on duration and treat those chunks as chapters in books.

If you try this and find it useful and/or have modifications, by all means, share.

Also, if this is a well known technique, feel free to make fun of me. It'll be fun listening to the comments being read on the community news show.

Open Source Gaming #3 The Atari Jaguar - TheDUDE | 2018-01-25
Hasbro Releases Jaguar Publishing Rights
Dana Henry
Hasbro Interactive

Beverly, MA (May 14, 1999) - Leading entertainment software publisher, 
Hasbro Interactive announced today it has released all rights that it 
may have to the vintage Atari hardware platform, the Jaguar.

Hasbro Interactive acquired rights to many Atari properties, including 
the legendary Centipede, Missile Command, and Pong games, in a March 
1998 acquisition from JTS Corporation.

This announcement will allow software developers to create and publish 
software for the Jaguar system without having to obtain a licensing 
agreement with Hasbro Interactive for such platform development. 
Hasbro Interactive cautioned, however, that the developers should not 
use the Atari trademark or logo in connection with their games or 
present the games as authorized or approved by Hasbro Interactive.

"Hasbro Interactive is strictly focused on developing and publishing 
entertainment software for the PC and the next generation game 
consoles," said Richard Cleveland, Head of Marketing for Hasbro 
Interactive's Atari Business Unit. "We realize there is a passionate 
audience of diehard Atari fans who want to keep the Jaguar system alive, 
and we don't want to prevent them from doing that. We will not interfere 
with the efforts of software developers to create software for the 
Jaguar system."

Hasbro Interactive, Inc. is a leading all-family interactive games 
publisher, formed in 1995 to bring to life on the computer the deep 
library of toy and board games of parent company, Hasbro, Inc. (ASE:HAS). 
Hasbro Interactive has expanded its charter to include original and 
licensed games for the PC, the Playstation(R) and Nintendo(R) 64 game 
consoles and for multi-player gaming over the internet. Headquartered 
in Beverly, Massachusetts, Hasbro Interactive has offices in the U.K., 
France, Germany, Japan and Canada. For more information, visit the 
Hasbro Interactive Web site at

Frotz - A Portable Z-Machine Interpreter - Claudio Miranda | 2018-01-24

Frotz is an interpreter for Infocom games (like Zork) and other Z-machine games. You can install it via your respective package manager or download the source code from the URLs below.

Forum Failure - lostnbronx | 2018-01-23

In 2017 I created a forum over at Proboards dedicated to my audio work and writing. It didn't attract a user base, and I deleted it when 2018 rolled around.

These are just some thoughts about why I wanted it to begin with, and why I think it failed.

I still believe Proboards is a good way to jump into forums and using forum software, and still recommend it for that reason:

Here are some of my projects mentioned briefly in this episode:

Tea Time! - operat0r | 2018-01-22

  • Yerba Mate Pajarito Special Selection/ Seleccion Especial 1.1lb/500 Gr Pajarito

THE WELL - operat0r | 2018-01-17

I record a video with audio on my fathers well setup in the sticks

I randomly talk about my laptops - swift110 | 2018-01-16

Just decided to start talking about my laptops after I installed Ubuntu Mate 16.04 to my x60.

ShareX is awesome - Xoke | 2018-01-15

Find it at

TronScript where have you been all my life! - operat0r | 2018-01-12

The Alien Brothers Podcast - S01E04 - Digital Instruments - The Alien Brothers Podcast (ABP) | 2018-01-11

Casper and Rutiger are back with a very simple topic: Making music with various Digital Audio Workstations.

Rutiger details his MacOS / iOS platform and the Apps he uses to create his noise:

Casper details his Windows setup with a relatively cheap DAW and various Analog and Digital transmissions he uses to create his noise:


Setting up a 32 Bit Ubuntu Server - JWP | 2018-01-10

So what is the purpose - I had an old windows backup workstation at work that I did a lot backups with. It got to the point where it was just too slow and low spec to handle the windows 7 updates and with my company switching to the 365/sharepoint/one drive it was not needed anymore. So I wanted not to throw it away as I had sprung for 160GB hard drive a long time ago. “I know at work and purchasing a hard drive for work.” But it lasted more than 10 years doing my outlook backups and file shares.

So my first problem was I was pretty sure I only had 32 bit.

So no centos or suse in 32 bit. I could have went fedora but I wanted a really long time with support. So it came down to ubuntu 16.04, Debian or Net BSD with I386 repos I could use long term. I was more comfortable with Ubuntu and 16.04 has about 3 years support left on it.

Its a small form factor computer so I carried it home for a few days. And got the ISO down loaded again no usb drive boot only DVD.

So what is it. I did a uname -a and and looked at the proc cpu to see what the cpu was.
The second linked worked best.

I had a lot of trouble with lamp and own/next cloud with both snaps and straight install. I broke the install several times. In the end I said what do really know how do well with it right now. So I installed Open SSH server, tightVNC, A really thin xfce 4, ffmpeg and youtube-dl and uget. So I will play with snaps only in the future and keep this basic config.

Note I did not auto start VNC because I found in my creations of this server that it used too much RAM vs just starting it and killing it.

It is the perfect video processing machine in the moment. If youtube-dl can’t get it I can use uget via vnc and that will then transcode if needed. Mostly for mp3. youtube-dl is a command-line program to download videos from and a few more sites. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on Mac OS X. It is released to the public domain, which means you can modify it, redistribute it or use it however you like.

I will work on the nextcloud snap and other snaps as they are easy to install or remove without hurting the base system.

Possible other projects - Owncloud or Storj
One you can make a little money with it :)

The Alien Brothers Podcast - S01E03 - Decline of American Empire - The Alien Brothers Podcast (ABP) | 2018-01-05


Casper and Rutiger opt for a time of ease and relaxation by discussing happy light topics: the decline of American Empire and recent reversal of Net Neutrality protections [or the rollout of Net Neuterality -c] (December 2017).

Links and Notes:

Re: Empire - moral decline and massive wealth inequality, role in imperial decline [1] -r
Re: Empire - Noam Chomsky and Decline of American Empire [2] -r
Re: Empire - moral decline - death as sport (Onion spoof) [3] -r
Re: Net Neutrality - Rutiger apologies - to Casper, for completely derailing the conversation on Net Neutrality by believing that pay-for-bandwidth/capacity and limiting access to content are both legitimate elements of the Net Neutrality debate, but over-focusing on the infrastructure/de-emphasizing the content argument. See Prevent Over-Use of Bandwidth and Pricing Models vs. Data Discrimination [4] -r
Re: Empire - consumption of human suffering as entertainment - modern Roman colosseum [5] -r
Re: Empire - the thought leaders over at Reddit on elements of declining empire [6] -r
Re: Thoughts - Volume One Chapter Two of Diek Minusky’s The Nature of Systems will be coming with… episode 4! Sorry folks. Hold… hold! -r
Re: Getting Things Done - by David Allen [7]

Timeline / Additional Links:

00:00:00 - 00:13:00 Settling in - Casper and Rutiger get acquainted after being off the air for a while. Skip this part if you don’t care about the characters Casper and Rutiger and their degeneration…
Begin Topic 1: Net Neuterality / Net Neutrality Rollback
00:14:00 - 00:30:00 The Deployment of Net Neuterality / Rollback of Net Neutrality - Casper attempts to boil this topic down nice and easy for Rutiger, yet Rutiger conflates this (see above), but that is OK as this is normal for pleebs. Members of HPR will understand.
00:30:00 - 00:36:00 Fox & Disney Merger - Coincidence or Conspiracy on timing w/ Net Neutrality rollback?
00:36:00 - 00:40:30 How Should HPR Community Respond or Mitigate This? Credit goes to Rob Placone and Jimmy Dore for mentioning Municipality developed internet
00:40:30 - 00:48:00 Discussion on Availability of Access
00:48:00 - 00:52:00 Casper takes a sharp pivot off track - A satellite is mentioned and Casper brings up DMB unfortunately for the listener
00:52:00 - 00:56:00 FREESTYLE JAM!@&#%^
00:58:00 - Ron Swanson has words for Ajit Pai
01:00:00 - Rutiger Does Not Speak in Tribe Called Quest Protocol call and response
01:05:00 - 01:20:00 Casper and Rutiger give their distinct definition of Empire and expand upon this
01:20:00 - 01:23:00 MUDs, OG Tech & Being Alone Together
01:23:00 - Casper mentions 150 people own EVERYTHING as mentioned here by Chamath Palihapitiya
“During his View From The Top talk, Chamath Palihapitiya, founder and CEO of Social Capital, discussed how money is an instrument of change which should be used to make the world a better place”
01:27:00 - 01:30:00 - Being Alone Together
01:30:00 - 01:33:00 - Bullying and how Technology can Exponentiate this
01:33:00 - How to DEBUG… seriously
01:39:00 - Consumerism and the Decline of Empire
01:40:00 - DW Documentaries Casper said he would find
Greed -
The Divide Part 1 -
The Divide Part 2 -
01:42:00 - Immortality Through Consumerism?
01:43:00 - Where are we if Not Here?
01:45:00 - Self Destruction
01:46:00 - Celebrity Chefs and the Tie to the Roman Empire - Casper remembered post-cast that this was from The Four Horsemen Documentary as explained here:
01:47:00 - Casper (Mis)Quotes Frank Zappa - by saying “Politics is the entertainment branch of the Military Industrial Complex”
01:48:00 - (S)Elections are becoming irrelevant
01:50:00 - Casper recommends International News Alternatives like BBC, RT, AlJazeera if you would like to know what is going on in the world
Addendum - Not mentioned in Podcast, but worth a link regarding the state of our MSM in reporting false information on Russia and WikiLeaks from Glenn Greenwald:
01:51:00 - Wrapping Up The Show & ShoutOuts to Klaatu!
01:53:00 - Casper argues with Gerald to cut the recording

free software's long tail - Joey Hess | 2018-01-04

Surprised to see in my podcast feed an episode about an insignificant program which I'd written two decades earlier, I thought I'd record a response with some thoughts on free software's long tail.

Chrome Plugins You Must Have - operat0r | 2018-01-03

Getting ready for my new Macbook Pro - knightwise | 2018-01-02

I am about to buy a new macbook pro and talk about the things I do to install and protect it.

Interface Zero RPG Part 5 - klaatu | 2017-12-29

An extra-long episode of the grand finale of the Interface Zero RPG play-through.

Spoilers: Chaiwei dies in combat and Syd runs off with Tina.

At the end of the show are all the credits containing sound effects and source materials. Here they are in text form.

Sound effects were taken from Thanks to the following artists:

  • interfacezero/muzak/70891__spukkin__trumpetmetal.wav

  • interfacezero/muzak/212926__simongray__mojo-cafe-nr-wagamama.flac

  • interfacezero/muzak/243629__lebcraftlp__heavy-rain.flac

  • interfacezero/muzak/382735__schots__gun-shot.flac

  • interfacezero/muzak/186104__marcel-farres__elevator.flac

  • interfacezero/muzak/187866__theomegapixel__metal-grind.flac

  • interfacezero/muzak/66713__sunnysidesound__desk-pound.wav

  • interfacezero/muzak/367222__bluedelta__thunder-rain-low-frequencies-4-channel-48khz.wav

  • interfacezero/muzak/212678__fridobeck__firework-explosion-1.wav

  • interfacezero/muzak/213610__dpoggioli__laser-gun-explosion.wav

  • interfacezero/muzak/100772__cgeffex__huge-rocket-launcher.wav

  • interfacezero/muzak/336735__newagesoup__double-explosion-bright-dark.wav

  • interfacezero/ep2/329877__klavo1985__music-of-the-black-circus-the-very-best-by-kris-klavenes.flac

  • interfacezero/ep2/94914__pcaeldries__lakeside2.flac

  • interfacezero/ep2/153376__inchadney__the-bay.flac

  • interfacezero/ep3/152396__taavi55__big-smash.ogg

  • interfacezero/ep3/135465__joelaudio__quick-smash-001.wav

  • interfacezero/ep3/387177__pfranzen__smashing-a-glass.ogg


  • Lyphrygerator and Wood/Water by William Kenlon, used with permission.

  • All other music by Klaatu.


Want to play this game yourself?

Editor's note 2017-12-28: link added from comments.

The Alien Brothers Podcast - S01E02 - Strictly Hacking - The Alien Brothers Podcast (ABP) | 2017-12-28

Casper and Rutiger attempt to STAY ON TARGET by discussing hacking… which when you think about it is an utterly pretentious and vague goal for a podcast presented by Hacker Public Radio, especially when considering the end result. Shame on us!

Other topics include Friendsgiving and giving thanks; probably the greatest gaming console of the 1970’s; early “hackings” (sic) committed by the hosts; << >>


  1. The link to the first chapter of Dief Minusky’s seminal the Nature of Systems is freely available here.
    Although we referred to the Chapter 8 material on system network security during the show, Rutiger decided it was better to release chapters, incrementally, in order let listeners gain a fuller appreciation for the work. Rutiger is also attempting to track down the original author, who never publicly released the work, to gain retroactive permission for this link, but for the moment Alien Brothers Podcast takes full responsibility for allowing access to this non-copyrighted work and we’ll just go ahead, you know, feel good about the possibility it will all turn out OK.
  2. Uber Data Breach (2017;
  3. How to Disable the Intel Management Engine Backdoor

Hydraulic Heavy Scale Project - David Whitman | 2017-12-26

Hydraulic Heavy Scale Project

by David Whitman

Why? - to weigh a heavy object yourself

Not very difficult. Can be done in about 1/2 hour by someone who has experience doing this type of stuff. Lots longer for beginners.

Things you will need: A drill motor, The right size bit for a small pilot hole and the right size bit for a fitting to connect the jack cylinder to the pressure gauge, A Thread TAP to make threads to connect the hydraulic 90 degree fitting to the jack, Some pipe dope is not a bad idea, A 90 degree appropriately sized fitting to connect a pressure gauge to the jack, a vise is nice, a wrench to dismantle the jack, A way to accurately measure the cylinder bore (best is a caliper) and some oil to refill the jack.

This link is a youtube to help you visualize the steps.

Hate this episode? No problem. Do a better one

Server Basics 105 OpenVPN Client - klaatu | 2017-12-25

In the previous episode of this series, you set up an OpenVPN server. In this episode, Klaatu walks you through:

  1. Installing OpenVPN on a client machine.

  2. Generating a key and certificate request.

  3. Signing a client cert from the server.

  4. Configuring the client.conf file.

  5. Configuring the client routing table to use the VPN subnet.

  6. Pinging the server over VPN!!!

Where to go from here?

Your next steps should be to investigate how your org wants to use VPN, how your clients actually want to join the VPN (Network Manager has some nice features that makes joining a VPN fairly transparent). Have fun!

Android Audio with viper 4 android and magisk - operat0r | 2017-12-22

Org-mode mobile solution - Brian in Ohio | 2017-12-21

brief introduction


Hi, I'm Brian in Ohio

inspiration for show

I wanted to tell a little about my trials and tribulations of finding a solution to taking org mode on the road. What's org mode? Listen to my last episode or do a duckduckgo to find out.


After switching from using a bullet journal to using emacs-org-mode as my organizing device I immediately saw that lugging a laptop everywhere was not going to work for me. I wanted to be able to access org-mode, especially the agenda view, anywhere I might be. Laptops with limited battery life and a large physical presence were not going to work for me.

mobile-org app

The first solution I tried, and the most obvious, was the mobile-org app. Its available for android or ios. I can only attest to the android version. Its an easy from the play store. This solution didn't work for me for a number of reasons. First, the documentation for the setup is terrible, and I became frustrated by the workflow and could not get useful results using the app. Mobile-org seems to be built around using dropox. In order to get around that I tried various methods of syncing my org files using onboard storage. Seeing this wasn't going to work I bit the bullet setup a dropbox account installed the clients, one on my slackware laptop and the other on my phone only to find dropbox doesn't support this application anymore. A little digging around and it seems the API used by mobile-org isn't up to snuff any more so, fail. I cut my loses and moved on to another possible solution.


My next crack at solving the portable org mode problem was getting a pitop laptop Pitop is a laptop based on a raspberrypi. I won't go into the details of the device here but I'll say my idea for using this device was its advertised 8+ hour battery life. My old linux laptops rarely give me 2 hours of life So even though the pitop was physically larger than I wanted I gave it a whirl. Lets just say the battery does last 8+ hours, it just can't survive many recharges. 2 battery packs later I gave up on the pitop and went looking for something else.


I heard klaatu mention a device called a pocketchip on his gnuworld order podcast I looked into it and here I thought might be a device that could work. Pocketchip is a handheld linux computer. After ordering the device I began setting it up for my use case. There are plenty of tutorials on the pocketchip website on how to extend the usefulness of this product. The size of the device was good and the battery life was ok. Some people complain about the chicklet keyboard but I actually did not mind it to much. It took some fiddling to get the emacs keybindings I use to work on the odd keyboard layout, but its a linux computer so there's plenty of information out there. I used a thumb drive as a repository for my org files, wrote a couple of scripts to sync up the files with whatever device the drive was plugged into and wala a mobile org solution! Alas, the pocketchips demise was its build quality. The heart of the pocketchip, the system board's usb mini plug fell off, and then one system tweak later I bricked the device. I'll recover it eventually, you can program it through the gpio pins, but this was a quest for portable-org-mode, not fixing pocketchips, so onward.

raspberry pi tablet

I saw a build of a raspberry pi tablet that looked very nice Always up for a challenge, I cobbled together a prototype and tried it out. The reason I eventually dropped this solution because the virtual keyboard didn't work well and I couldn't get the official raspberrypi lcd to rotate from portrait to landscape dynamically. Still a fun project and I'll get some use out of it sometime.

android phone

Well here's the solution I came up with. I was searching around on the internet and found a link telling about running emacs on an android phone. It involves installing the termux app, the hackers keyboard, both available in the google play store and apt-get installing emacs on the phone. After that I had full emacs running, all be it in a terminal so its slightly different then running on the desktop, and with emacs you get, drum roll please, org-mode. With this i have the device I always take with running org-mode. I sink my org files between my laptop and phone using the afore mentioned drop box account. The hackers keyboard works flawlessly and can digest any emacs keybinding I need. I also have a logitech bluetoothkeyboard that I can use if I have a lot of typing to do in org-mode on my phone, such as these shownotes!


I find org-mode so useful that I want it available any where I go. And over the course of the last 8 months I went on a journey trying to find a solution to that desire. In the end, the solution was pretty obvious, these portable computers we carry around are amazing and thanks to the developers of termux and the hackers keyboard my phone is now infinitely more useful to me. Thanks for listening.

Server Basics 104 OpenVPN Server - klaatu | 2017-12-19

In this episode, Klaatu demonstrates how to:

  1. Install OpenVPN

  2. Generate certificates for your OpenVPN server

  3. Generate a private key for your OpenVPN server

  4. Configure the /etc/openvpn/server.conf file

  5. Start the OpenVPN daemon

In case it is not clear, you can follow along with Klaatu, using the exact same options and configuration values as he is using for a successful install. You do not need to change

In the next episode, he will demonstrate how to do all of the above for OpenVPN clients.

VPN is a big topic that warrants a whole miniseries unto itself, so this and the next episode concentrate on getting a VPN up and running, with clients connected and pinging back to the server on a dedicated subnet. Additional config options based on your specific use-case are left for you to explore on your own.

Information Underground: Backwards Capitalism - lostnbronx | 2017-12-15

The Info-Underground guys consider why capitalism does (or maybe doesn't) work, why people use it as a tool for a better life (or maybe don't), and what the source of ambition, commercial aspiration, and greed truly is (or maybe isn't).

Interface Zero Play-through Part 4 - klaatu | 2017-12-14

The investigation continues!

Guest voice in this and episode 3 by Gort.

pdmenu - Dave Morriss | 2017-12-13



Pdmenu is a tool written by Joey Hess which allows the creation of a simple menu in a terminal (console) window. It is in his list of less active projects, and the latest version is dated 2014, but it seems to be quite complete and useful as it is.

I like simple menus. As a Sysadmin in my last job I used one on OpenVMS which helped me run the various periodic tasks I needed to run - especially the less frequent ones - without having to remember all of the details.

I do the same on my various Linux systems, and find that pdmenu is ideal for the task.


I found pdmenu in the Debian repositories (I run Debian Testing), and it was very easily installed. The C source is available as a tarfile, though I haven't tried building it myself.

Running pdmenu

Simply typing pdmenu at a command prompt will invoke the utility. It uses the file /etc/pdmenurc as its default configuration file, and this generates a menu with a demonstration of some of its features.

This is not particularly useful but it can be overridden by creating your own configuration, which by default is in ~/.pdmenurc. The pdmenu command itself takes a configuration file as an argument, so there is plenty of flexibility.

Full notes and examples

The full notes which describe the use of pdmenu with examples can be found here.

Server Basics 103 - klaatu | 2017-12-11

Klaatu walks you through installing, configuring, and running fail2ban, and discusses the basics about firewalls.

Server Basics 102 - klaatu | 2017-12-01

Klaatu talks about SSH, changing SSH ports, and using SSH keys for the server you presumably set up after hearing Server Basics 101 in this series.

You were right, I was wrong - Ken Fallon | 2017-11-29

Ken puts the record straight after inaccurate comments during hpr2416 :: HPR Community News for October 2017 about hpr2406 :: Putting Ends onto CAT6 Ethernet Cables by Shane Shennan.


Scanning books - Ken Fallon | 2017-11-24

I want to scan my Son's school books so that he doesn't get back problems lugging books to and from school. Something that for now at least remains legal in the Netherlands.

Steps involved

  1. Scan all the images using the entire length of your scanner. I use scantoimage.bash
  2. Confirm that there are no missing pages, and that every other page is upright and then upside down etc. If they are scan them and rename them so the name fits in between the pages
  3. Back up all the scanned images
  4. Manually crop the areas of the scans outside the area of the page. Usually this is on the side and bottom of the flat bed. Save is as something like ~/x.jpg
  5. Use GraphicsMagick Image Processing System to identify the dimensions of the cropped image.
    gm identify ~/x.jpg
    /home/me/x.jpg JPEG 2477x2609+0+0 DirectClass 8-bit 3.2Mi 0.000u 0m:0.000002s
  6. Crop all the images to that dimension
    gm mogrify -crop 2477x2609+0+0 *.jpg
  7. Rotate every second image by 180 degrees. rotate-every-second-image.bash
  8. Create a directory for the book and in there create a subdirectory for each section of the book. Manually copy all the images to the sub directory for that section.
  9. Then go to the root where there are no files only subdirs and run the command
    for i in *;do echo $i;gm convert "${i}/*.jpg" "${i}.pdf"; done

At the end you will have a pdf file for each section of the book.

Server Basics 101 - klaatu | 2017-11-21

Klaatu covers the very very basics of servers: what they are, how to know one when you see one, what one ought to run, and why we have them.

Intro to XSL - klaatu | 2017-11-17

Sure, you can use pandoc to process your Docbook XML, but why not learn a little XSL this weekend?


You must have xsltproc installed. It's available from your software repository.

Here is some sample XML for you:

<xml version="1.0">
    My name is <author>Foo</author>.

    You're listening to <emphasis role="bold">Hacker Public

And here's the complete XSL as demonstrated:

<xsl:stylesheet xmlns:xsl="" version="1.0">

  <xsl:template match="para">

  <xsl:template match="emphasis">

  <xsl:template match="emphasis[@role='bold']">

  <xsl:template match="author" name="host">

      <xsl:when test="$host = 'Klaatu'">

      <xsl:when test="$host = 'Gort'">


Open Source Gaming #2: Oolite - TheDUDE | 2017-11-15

The game's website. If you're interested in playing, check it out.

Also here's the forum I was looking up during the podcast to find out if Elite Dangerous was multiplayer or not.

Project Interest - lostnbronx | 2017-11-13

This is just a short "episode" wherein I ponder the nature of showmanship and razzle-dazzle regarding the success or failure of FOSS, and other projects that require collaboration. Your comments and opinions are ACTIVELY encouraged.

Netbooks - Keeping an old friend alive - Beeza | 2017-11-10

Beeza uses an Acer Aspire One netbook as a media player (principally audio).

The audio quality sent from the sound card out through the headphone socket really is excellent, so that when fed into a hi-fi amplifier the final reproduction is every bit as good as audio from a CD player - possibly better.

The netbook is over 5 years old. When it was first bought most Linux distros ran very well on it. Since that time, however, the optimal hardware spec for most distros has increased quite considerably, leaving a humble netbook relatively underpowered, having typically 1 Gb RAM and a sedate CPU.

All is not lost, fortunately. Raspbian X86, which is very closely related to the ARM version of Raspbian as used on the Pi, has a very light footprint and delivers performance on a netbook very much like what you would have experienced when they were brand new.

Raspbian X86 is not perfect, though. It works brilliantly straight out of the box, but its security model needs a bit of simple reconfiguration to get the best from it. There are also, tweaks and cheats that can improve the Pixel user interface which, in its default setup, may not be to everybody's liking.

In this episode Beeza explains steps he has taken to get the best from his netbook and, in the politest way possible, tells you what you can do with yours.


"Since recording the show I have installed Pulseaudio on top of Raspbian X86. It's a very simple install using Synaptic (or 'apt-get install pulseaudio'), after which you can run it as a daemon process with 'pulseaudio -D'.

The advantage of Pulseaudio is that it gives you greater control over the audio channels and devices than is possible with just the default ALSA sub-system. This will be handy if you ever record from streams or USB microphones.

If you install Pulseaudio, I strongly recommend installing pavucontrol as well - a mixer designed specifically to work with Pulseaudio".

Alien Brothers Podcast S1E01 - Introduction - The Alien Brothers Podcast (ABP) | 2017-11-09

This was an impromptu inaugural episode recorded in Bethany Beach, DE.

Casper and Rutiger work in the tech field and enjoy video games and popular media. We discuss the enigma that is the Handmaid's Tale, Tim & Eric Awesome Show Great Job!, the movie Kids, video games from paperboy to Quake to Fallout 4. We comedically discuss the disillusionment that one can incur working in the cubical jungle. We also discuss going back to minimum wage after enjoying a high paying tech industry.

We also reference obscure and not well-known music like Slint.

The sound quality is not great in this episode, as it was an impromptu recording. All future episodes will be produced at a much higher quality

Transmeta Crusoe - Fujitsu-Siemens Futro S210 (ThinClient) - Trouble Shooting and Debian 9 Install - JWP | 2017-11-07

I did the long awaited basement clean up project.
lots of old geeky stuff went to the bins and recycle yards :(

The Transmeta company made chips around 2000 and made chip x86 ready though a software layer. Since I love almost anything that is not Intel it was a match made in heaven.

The best info I found about the FSI 210 was at this site:
Fujitsu-Siemens Futro S210 (ThinClient)

If you want to do a project at raspberry PI prices just go to Ebay and type Futro - they have a lot of Thin clients with other chips.

About the chip:

bullet journal to org mode - Brian in Ohio | 2017-11-03

1 Brief introduction

1.1 Myself

Hi, I'm Brian in Ohio

1.2 Inspiration for show

I heard Shane Shennan on episode 2299 doing a what's in my bag episode where he briefly mentions using a bullet journal. Then I think I heard Ken Fallon wondering about bullet journals on community news for the month with that episode. So I thought a show was in order explaining how I went from using a bullet journal to using emacs org mode.

1.3 Parameters

I'm not an expert on any of the following topics: bullet journal, Getting things done (GTD), orgmode or emacs. I'm someone who has tried these tools, climbed the learning curve and have some observations to make through that process.

2 What's a bullet journal

2.1 Created by ryder carrol

The analog system for the digital age

2.2 Where I found out about it

2.3 What it is

Method of laying out a notebook and using it to organize and process ideas and tasks. I won't try to explain exactly how it is set up. The video tutorial is excellent. You can use any notebook and divide it up into index pages, future log, monthly log and daily log there's a visual indexing/ tagging system to help organize stuff. Its extremely customizable.

2.4 How I used it

I bullet journaled for 2 and a half years, initially set it up stock but later put the index at the back. I used it as a daily planner, idea storing device and short term and long term goal setting tool.

2.5 Strengths

Customizable but within framework, gives a method to get organized that you can tailor to your needs. Its pretty easy to find needed info, if you're diciplined about using. It its battery free

2.6 Shortcomings

Need to be disciplined. Can be tedious to enter items in month, daily and index sections. It takes time to set up. I think Shane's use case he mentioned in podcast as sort of a project/idea book sounds pretty cool and might be a really good use case for this system. Hard to edit, this may be a strength for some people, but for me as a daily planner it was a little daunting to use. Adding stuff to something requires either leaving space ahead of time or indexing to a new page. The monthly log was always a mystery to me on how to use it. If you lose it you've lost it, no easy way to back it up

3 What is org mode

3.1 Created by Carsten Dominik

3.2 what it is

Is an editing and organizing mode for notes, planning, and authoring in the free software text editor Emacs.

3.3 How I found out about it

3.3.1 emacs Wanted a commandline C development environment for microcontroller project development IDE

Worked with vim/ a bash shell as a sort of minimal IDE. I specifically was using it on a laptop that didn't have X installed on it. Just for fun, not my bread and butter. Wanted to try something new

Knew about emacs, had tried it didn't like it Thanks to klaatu for emacs hpr emacs episodes Thanks to youtube found out about org mode

Rainer Konig - getting yourself organized with org-mode

3.3.2 Switched in october 2016

3.4 How I use it

At its heart an org-mode is an outliner. I use org-mode to set up daily todo tasks, organize projects, jot down notes. Org-mode has a subsystem call agenda view that can generate daily planner views from your org-mode files. I initially tried to mimic the bullet journal in org-mode, but found that it was better to approach org mode relying on its strengths, which are different, as you can imagine, from a Bullet journal.

3.5 Strengths

I like it because its editable, searchable and customizable. Projects can be broken down into as fine a detail as you want and that detail level can expand or contract as necessary. The power of org-mode comes out when you use it to capturing ideas, tasks and information. Capturing these events is done via capture templates that you can create. This new data is then saved to the appropriate org file then shows up in your agenda view. Its extremely easy to back up, it's text based and therefore future proof. There are many good tutorials and resources online

3.6 Shortcomings

Need to know a little about emacs and that can feel overwhelming to try. This new tool will require you to use your brain. Emacs keybindings

4 What's next

Trying to find a good way to use orgmode portably. mobile-org app for android doesn't work for me. This has led to trying a couple of different solutions which I will record other hpr episodes about. Thanks for listening. If you have ideas on Bullet Journals or Org-mode I'd love to hear an episode about it. I'll put links into the show notes, this is Brian in Ohio signing off.

OLF 2017 Report - Ahuka | 2017-10-27

Ohio LinuxFest 2017 is a Free and Open Source Software convention in Columbus, Ohio, and presents a variety of talks over the entire weekend. In this episode I tell you about my own personal experience at Ohio LinuxFest this year.


RPG Counternote - lostnbronx | 2017-10-26

I started with tabletop role-playing games just about forty years ago. Klaatu recently did a two-part episode on the merits of RPG's, and it prompted some thoughts.


Putting Ends onto CAT6 Ethernet Cables - Shane Shennan | 2017-10-23

This is the graphic that I used to learn how to feed the wires correctly into the plastic end piece in the right order:

Open Source Gaming #1: Meridian59 - TheDUDE | 2017-10-19

Check out the game

Edited 2017-10-11T16:59:43Z (Wednesday) ken

Meridian 59

From Wikipedia, the free encyclopedia

Meridian 59 is known as the first 3D graphical massively multiplayer online role-playing game (MMORPG) and stands as one of the longest running original online role-playing games. Developed by Archetype Interactive, the team included John Hanke who later founded Niantic, Inc. and codeveloped Google Earth and Pokémon Go.

First published by the now defunct 3DO Company, the game was first launched online in an early form on December 15, 1995 and released commercially on September 27, 1996 with a flat-rate monthly subscription. Meridian 59 is currently available as open source software and is being run by original developers Andrew Kirmse and Chris Kirmse.


Music Theory Hara-Kiri - TheDUDE | 2017-10-16

Yeah just want feedback on what to do with a music theory show, since I see it was on the requested lists and no one was really doing it that I've seen.

My commute into work - thelovebug | 2017-10-13

In this episode, Dave records an episode across his entire commute into work.

Hacker Public Radio episodes by me so far:

How am I recording

I'm recording this episode, in my car, on a Samsung Galaxy A5 with a Neewer lavalier microphone (as recommended by HPR's own Jon Kulp) attached to my jacket, recording using the Auphonic Edit Android app (also on iOS).

Post-recording, I also ran the audio recorded using AuphonicEdit to the Auphonic website for levelling.

My portable podcasting setup

(previously mentioned on hpr2117) and used to record Sat On My Doorstep 1 - Alex, published to Anchor on 2017-09-13)

As an aside*

Both Caroline and I use that particular microphone each to record The Bugcast each week. Both the Samson and AudioTechnica microphones have been recommended by Daniel J Lewis of The Audacity To Podcast for those podcasters who cannot afford professional level equipment.

The cars I have owned

This list may contradict the detail provided in the episode... that's because I may have made a few errors in recollection when I was recording.

Shameless plugs

I also guested on:

Drive statistics

  • From Conisbrough to New Ollerton (rough location map)
  • roughly 28 miles
  • roughly 36 minutes

Using Super Glue to create Landmarks on Keyboards - dodddummy | 2017-10-12

Using Super Glue to create Landmarks on Keyboards

AutoHotkey Master of Automation ? - operat0r | 2017-10-11

The Urban Astronomer - Dave Morriss | 2017-10-10

The Urban Astronomer

I'm interested in Astronomy and listen to a number of Astronomy podcasts. I have listed a few of these in the past when doing HPR shows about the podcast feeds I subscribe to (shows 1516, 1518 and 2339).

One of the recent additions to my podcast list that I have been listening to this year is called "The Urban Astronomer", which has a website here and a podcast feed here. The site and podcast are run by Allen Versfeld, who is based in South Africa.

To quote from the website:

Allen is an amateur astronomer, an IT professional, a podcaster, a father of five beautiful kids and a barely competent chess player. He is also the director of the Astrophotography Section of the Astronomical Society of South Africa, where he coordinates and promotes the activities of people who are far better photographers than him.

I have been enjoying Allen's episodes a lot. There are some great interviews with some very interesting people in the world of Astronomy. Allen has a relaxed interviewing style which I find appealing.

I wrote to him, commenting on one of his episodes, and I mentioned Hacker Public Radio in my email. He has subscribed to HPR and has been kind enough to mention it on a recent podcast. I'm offering you a chance to listen to one of his episodes here.

The episode is number 12 of "The Urban Astronomer", from June 16, 2017. It is an interview with Jen Millard, a first year Astronomy PhD student at Cardiff University in the UK. Jen is also a host on the "Awesome Astronomy" podcast, as mentioned in the episode.

I hope you enjoy listening to this example episode.

Information Underground: State of independence - lostnbronx | 2017-10-09

Deepgeek, Lostnbronx, and Klaatu talk about the state of independent art.

PWGen - A password generator - Xoke | 2017-10-04

  • Download PWGen here
  • Download the 5 letter word list here

Weather, Ogg Camp, Server Room, ITO collection - JWP | 2017-10-03

A short show about the weather in Texas and Germany, Oggcamp 2017 and my Server room. I have been having trouble with my Raspberry Pi collection being too large and new in the box.

Thoughts on Lifetime Learning - b-yeezi | 2017-09-28

Thoughts on Lifetime Learning

For some of my other thoughts on this topic, consider reading this blog post.

The Decline and Fall of Tcl - clacke | 2017-09-25

Tcl is an interesting language that does many things "wrong", especially if you're coming from a LISP perspective, and especially-especially if you're coming from a Scheme perspective. Examples are all over the C2 wiki, but probably DynamicStringsVsFunctional is the epicenter.

It also forms an important part of modern Scheme history, as the Tcl War led to the creation of Guile.

What happened after that? Where Tcl and Tk went wrong, by David N Welton

TL;DL: Tcl was successful because it found its niche as a lightweight yet capable language able to both integrate and be integrated with C code, but it fell behind on Tk look-and-feel compared to GNOME and KDE and also on other mainstream development phenomena, it ossified because it was afraid to upset its installed base, it got stuck between not-slim-enough and not-featureful-enough, the syntax is too weird, and it spiraled into losing touch with the rest of the free software world, which ultimately also affected business use.

Further notes

  • Guile (again) faces several of these same challenges.
  • Haskell tries to avoid success at all costs, in order to not lose the freedom to improve the language.
  • Python and Perl both have Tk integrations and Python's IDLE is even implemented in it. Lua had ltk, but it's no longer maintained. There is even a Tcl/Tk package for R.
  • Ousterhout pronounces it OH-stir-howt, which may or may not be how I pronounced it. I think the guttural sound may be reserved for the Dutch "G" and have nothing to do with "H".

Potential episodes

  • Fossil
  • Tcl

Slackware in Scotland - Andrew Conway | 2017-09-21

Beni aka @Navigium visited Andrew aka @mcnalu in Scotland as part of a cycling tour and they decided to record a follow up to their previous HPR show on Slackware to mark the release of Slackware 14.2, or rather the first anniversary of its release.

Some points and links mentioned are:

  • Arch is for fruitflies, Slackware for elephants?
  • Destroying a hard drive hammer or drill?
  • Grub vs Lilo?
  • Changes in Slackware - no changes an end user would notice! Pulseaudio now included as needed for bluetooth support. In Andrew's experience of 14.1 and before, only one package needed Pulseaudio, namely the game VVVVVV and even then it just wanted to see it installed, didn't need it for sound to work!
  • You can get gnome for slackware with dropline GNOME.
  • Digression: Trains in Switzerland vs Scotland
  • Beni and Andrew generally build our packages using the There can be dependency issues but it's rare. Worst case is Pandoc with its Haskell deps but sbopkg queue files are a great help there. Beni recommends sbotools as an alternative that deals with this and feels like portsnap on FreeBSD.
  • Digression: Recommend this HPR show on open-sourcing of Colossal Cave Adventure by ClaudioM.
  • Managing WiFi networks: wicd vs NetworkManager vs rc.inet1 (slackware network config script).
  • When camping and cycling, power is precious. Beni explains how to pack a bicycle for air travel.
  • Expect Slackware in Switzerland!

The hosts wish to clarify that no Italian Arch linux users nor fruitflies were harmed during the recording of this show.

A Non Spoilery Review of "git commit murder" and "Forever Falls" by Michael Warren Lucas - FiftyOneFifty | 2017-09-19

A Non Spoilery Review of "git commit murder" and "Forever Falls" by Michael Warren Lucas

I met Michael at Kansas Linux Fest 2017 where he was a speaker. Turns out we've probably been walking past each other in the halls at Penguicon the last three years that I have attended. Michael is a BSD guy and one of us. As well as being an open source advocate, he works professionally as a systems admin and network engineer. I bought his texts "SSH Mastery" (because I've always needed help getting my head around reverse IP tunneling), "Networking for Systems Administrators", and "$ git commit murder", his latest novel. Because I was a good customer, Michael threw in "Forever Falls" for free.

"git commit murder" takes place at a BSD convention. The gathering in the novel is slightly less informal than the Linux conferences I've attended. The conference is targeted at the users, contributors, and managers of the fictional "SkyBSD". Our protagonist, Detroit native Dale Whitehead has come to Canada to deliver a talk on his mesh networking project. The conference is disrupted when attendees start to die in what appear to be unrelated accidents. Dale is unwilling to accept these deaths as accidents, and puts his analytical mind to discovering the killer. He also employees his hacking skills, having already created an admin account on the host university's server within minutes of checking in. This makes him understandably reluctant to discuss his theories with the authorities until he has positively identified a culprit.

The SkyBSD community is not without contention. A significant number of contributors want to move from Subversion to git for version control and just as many are vehemently opposed. Also, the recent release of candid photos meant to embarrass a contributor has many calling for a Code of Conduct and the banning of violators. Others think this is going too far. Dale has to contemplate whether either of these is reason for murder? Perhaps it is a struggle by an old guard who is not ready to surrender leadership to a younger generation?

At first, it was hard to get to like Michael's protagonist, Dale Whitehead. Dale suffers from an extreme form of Attention Deficit Disorder which requires medication and causes him to actively shun the company of other people. The same affliction that allows him to get "in the zone" when programming also makes being in crowds a fresh hell for Dale. He is in constant terror that some aberrant behavior on his part will reveal his condition to his companions and he finds it much easier to deal with other humans via e-mail or IRC. It's clear Michael Lucas has an understanding of the condition, either via research or contact with someone who suffers ADD.

At least one character in the story seemed to me to bear a passing resemblance to a familiar conference fixture in real life. Michael told me the sequel might be set at an open source/Sci Fi convention in a city near the great lakes. Time will tell if the Tuesday Afternoon Solaris Overview or a kilt wearing organizer will make an appearance.

"Forever Falls" is also a mystery, as well a SciFi story. Ella Forecourt is a recruit right out of college for the Montague Corporation. As a corporate security officer, she is assigned to investigate the death of a Montague research scientist at the Freefall installation. In the course of the novel, you learn that Montague has proprietary technology that allows them to "portal" into other universes or dimensions where the laws of physics are different from those of our universe. In Freefall, gravity runs parallel to the surface of the world. In other words, you don't fall down, you fall sideways, and with no ground to stop you, if you fall, you fall forever.

Montague has a research facility built into the "Cliff". With gravity travelling sideways, the surface of the planet appears as an endless cliff. "Above" the facility is a huge metal awning to deflect falling boulders. On top of the awning is where the security team discovers the body of Dr. Devin Grupper. The damage to the body suggests Dr. Grupper impacted with terminal velocity. Even in the lighter gravity of Freefall constant acceleration means terminal velocity is governed by air resistance. Montague does use airships for transport, but there are no records of how Grupper could have secured transportation and a pilot to wind up smashed on the awning without a ship going missing. Thus Security Second Ella Forecourt is assigned to the case. "Forever Falls" is but one in a series of Montague Portal novels by Michael Lucas. I look forward to reading the rest of the series.

Benefits of a tabletop - klaatu | 2017-09-18

Klaatu talks about the benefits of tabletop gaming over computer gaming.

sending a text message from the command line - Jezra | 2017-09-14

Notes? We don't need no stinking notes!

Edited 2017-09-08 by Ken
I beg to differ :).

This show was recorded on Audacity using a Logitech headset.

In episode hpr1892 :: my chicken coop jezra went to great lengths to protect his chickens. His system based on a BeagleBone Black ensures the door opens and closes only during the day.

In this show jezra explains how he gets the system to send him an email, and a text message using mailx and his phones providers free SMS to Email gateway.

Why Docbook? - klaatu | 2017-09-13

What's so great about Docbook, any way? Glad you asked.

A Rambling Drive Into Work - MrX | 2017-09-12

Please excuse the audio quality in the episode & feel free to skip if it's too painful on the ears. In the episode, I mainly talk about my two most recent cars as I couldn’t think of anything else to talk about off the cuff.

Docbook - klaatu | 2017-09-05

Forsake markdown now! Klaatu walks you through writing in Docbook, processing and rendering output.

Who is HortonWorks? - JWP | 2017-09-01

Just a quick show about Hortonworks and what they do.

They are the biggest contributor to the Apache Hadoop project.

Every cloude has a silver lining - mirwi | 2017-08-30

Just some rambling about HPR and that you should record a show!

The world's going down, the HPR queue is low.
Be one of the saviours, RECORD A SHOW!

Whatever topic, you are not alone.
Feel free to seek help, if you can't do on your own.

One will have to struggle, to find a friendlier crowd
with that wide range coverage from the simplest to "clouds".

From toy to high tech and from jokes to wise words.
Embracing you all. - Not just the nerds.

It's not a "service", HPR is WE!
So contribute the stuff, you'd like more of to see.

If YOU like it, others surely too will.
Diversity defines the realm, we are aiming to fill. 

Sure, there are heroes, lifting most of the weight.
But we all are the foundation, deciding HPR's fate.

Be thankful, you slackers, who leave those free slots,
for those few prolific, still filling the spots.

Please don't keep the burden on shoulders so few.
Chime in with some topic, by sharing your view.

High praise to those, stepping in a first time!
We need more of you though, to strengthen the lines. 

Like an episode? - Please let us know!
It's positive feed back, that's keeping us go.

Comment on the page or record a reply.
There's no reason for hiding or being overly shy.

It's a community effort to make the thing we love stay.
Because failing would mean, that HPR goes away.

But it takes more than bad times to make HPR disappear!
Together we stand, and we all are still here.

Bit by bit, sharing knowledge and fun,
building the confidence that HPR WILL go on. 

It's up to us, so just pick up the ball
and keep the show rolling, for the sake of us all.

How I create and post a show to HPR - MrX | 2017-08-29

Below are my original rough show notes I used to guide me along my rambling path of describing how I record a show

  • How I record a podcast

    • Start recording the show go through setting up recording level & adjusting my microphone, then do my usual introduction at the beginning.
  • How I record and post a show

    • First talk about folder structure

    • Write show notes. If I don’t know the subject well enough or perhaps want to go into some detail, Wikipedia can be very handy here.

    • Record it using cheap gaming headset with boom microphone, about 2 minutes into my show I give a demonstration of a badly placed microphone. I fully expected this to produce a lot of wind noise in the recording, this unfortunately didn't happen, the boom microphone I'm using is obviously much less susceptible to this than my previous microphone. Still it's always advisable to never place your microphone directly in front of your mouth. I tend to put mine at about chin level while making sure my chin never actually touches it.

    • Record it by pushing the record button and talking

    • Listen to it once or twice I tend to remove any bad stutters large silences, mistakes and some ums and ah’s.

    • Add my own theme music to the beginning of the track (Explain)

    • Intro and outro not required as HPR add this

    • Highlight track with voice on it and select compression

    • Write up show notes using LibreOffice writer while listening to show one more time.

    • Export track in flac format, don’t add any information when exporting such as artist title etc as this is added later by HPR

    • Go to the HPR calendar page pick a free slot

    • HPR will send you a time limited link via email

    • Click on link to open the upload page for your show

    • Fill in the required details from the show notes prepared in LibreOffice writer

    • Browse to final flac show

    • Submit show, job done

Just a little note if all this seems a bit complicated it doesn't have to be, this is how I normally produce a show you could instead just hit record on your recording device. Record it in just about any audio format, click on the free slot link on the HPR calendar page and upload the show without any show notes, HPR will do the rest.

Rolling out a radio-based internet service in rural England - Beeza | 2017-08-25

In the UK there is a lot of competition in the telecoms business but, in reality, most of the players rely on infrastructure owned and operated by one company - BT.

Urban customers benefit greatly from this competition and probably have the cheapest telecom services in Europe as a result. The emphasis of the providers is, understandably, areas of high population concentrations. The problem is that nowadays a lot of people living in rural areas need fast and reliable internet connections to do their jobs and run their businesses.

What do you do when you live in a remote area and the major internet providers have no plans to roll fast connections out to where you live?

In this episode Beeza describes how he found a solution and managed to get it implemented.

Managing Your Android with AirDroid - Frank Bell | 2017-08-24

Frank Bell talks about the Android app, AirDroid, a utility for managing your Android phone via your browser. You can use it to transfer files back and forth between your phone and a computer, edit your contacts, control your camera, and much more.


Some screenshots:

AirDroid "Accept Connection" Screen:

"AirDroid Devices" Screen:

AirDroid Browser Interface:

Cancelling my TV licence - Dave Morriss | 2017-08-23

Cancelling my TV licence

I get a letter

In July 2017 I received a letter from the TV Licensing organisation telling me they'd be taking £147 from my account on the 1st of August. I had set up a "Direct Debit" arrangement with my bank many years before which allowed them to do this, and had forgotten all about it.

When my kids were small, and later in their teens, a lot of TV was watched in my house. We used to watch all the over the air channels, and when things started to move towards digital in the UK I bought a PVR (aka DVR) which converted the Freeview channels into a signal for my analogue TV, and also recorded stuff on demand.

I watched some TV after I retired in 2009, but by 2013 with my kids having left home (to all intents and purposes), and the quality of what was available having fallen to a record low, I stopped.

When this letter arrived I realised I'd been paying for this licence to watch TV for several years without using it.

I throw out my TV

The old analogue, CRT TV sitting in the corner of my room (and the associated Freeview PVR) had not been turned on for 4 years, so it was time for them to go. So I took my TV to the recycling centre with the help of my son. The PVR will be hacked for useful components.

I cancel my licence

Next step was to stop paying this annual licence. The letter told me what to do. I discovered I fulfilled all the requirements listed there:

  • I never watch or record programmes as they are being shown on TV
  • I never download or watch BBC programmes on demand
  • I don't do this on a TV, desktop computer, laptop, mobile phone, tablet, games console, digital box or DVD/VHS recorder.

I called the number on the back of the letter and cancelled.

The guy I spoke to said I'd get a letter of confirmation soon. I asked if they'd cancel the Direct Debit or whether I should. He advised me to cancel myself, so I did it immediately.

I get my confirmation letter

A number of days later I received a letter entitled (rather oddly) "Your No Licence Needed confirmation". It told me my no licence was valid from July 2017 and expired July 2019.

The letter did point out that I might receive a visit to "confirm that a licence isn't needed".

A friendly leaflet accompanying the letter contained the question and answer:

Can I be prosecuted for watching BBC programmes on BBC iPlayer without a licence?

Yes. From 1 September 2016, you risk prosecution and a fine of up to £1,000 plus any legal costs and/or compensation you may be ordered to pay.

I get an urgent letter from TV Licensing

On the 12th August I received a letter from TV Licensing which asked me to call them urgently because my bank had declined a Direct Debit payment request.

I called on the 14th August and was told that this was a mistake and the letter could be ignored.

However, to get this answer I had to navigate 4 menus and give my details to a robot. Of course the person I eventually contacted asked for the details all over again! This made me wonder if the robot is there for any purpose other than to be a deterrent to callers. The same goes for the 4 menus.

I get a phone call from TV Licensing

On 17th August I found a message on my answering machine asking me to call TV Licensing. I did so, and navigated the 4 menus again. This time the robot asked for my licence number, but since I reasoned I didn't have one I gave it the reference number of my no licence. That didn't work.

It then asked for my postcode, street name, house number and payment details. It confirmed the address stuff but when I said I didn't pay for a licence it passed me to a human.

The lady I was speaking to then asked for my name, address, postcode, etc. I asked why I was being asked for this again having just given it to a robot. Apparently these weren't passed through because I "failed" to answer all the questions properly. That's odd because the same happened last time when I got the questions "right"!

This time it turned out that the problem was that my no licence had been cancelled. No reason was given.

I asked why, if a thing I had carefully set up with the expectation of it remaining in place for 2 years had been cancelled, I hadn't been notified. I didn't get an answer.


It seems that TV Licensing has one of the worst systems for managing its "customers" on the planet. I told the representative that this was my opinion while I was on the phone.

I'm wondering what's next in the saga. Will it be the "heavies" at the door (I'm not obliged to let them in without a warrant, I discovered), a legendary TV Detector van outside my house (I'd like to see one and take a picture of it), another spurious money demand or unexplained loss of my details?

However, although it has been bad, this story did give me something to write and talk about for HPR so it's not all bad!

Raspbian X86 on Lenovo x61s - Tony Hughes AKA TonyH1212 | 2017-08-22

This show is about putting the new Raspbian image onto one of the Lenovo x61s laptops that I have previously talked about.

These laptops do not have a DVD drive so normally I would create a boot flash drive using USB image writer in Linux Mint, but I had received a DVD of Raspbian with the MagPi magazine so I connected a portable USB DVD drive that I have and used the disc to install to the laptop.

On booting to the DVD drive you get several options including a live session with persistence (this allows the saving of data and system changes to a flash drive during the session if wanted), but the option I chose was to install to hard drive.

This gives a simplified Debian installer and for new users with no previous experience of installing Linux it recommends one of the options at each stage. The only issue I had was at the stage it asks where to install Grub it does not automatically highlight the main drive (Sda) a small gripe but for a newcomer it could confuse.

That said the install went flawlessly and upon first boot I was left with the PIXEL desktop with the task bar at the top of the screen and a short cut for the recycle bin. The boot time on this laptop with a Core2Duo 4Gig Ram and 120Gig SSD was about 30 seconds which is good also it was only using 87mb of the available RAM on start up, this shows the credentials of an OS built to run on the original 256mb Pi.

First job is to navigate to Raspberry config from the menu bar by going to:

Open Menu > Preferences > Raspberry Pi Configuration.

From here you have a number of options but the important one is to change the default password from raspberry to something a little more secure.   After this I connected the Laptop to my WiFi network which is flawless on the x61s as it is an Intel WiFi card, I can't comment on other cards here.

The next task that I did was to run the terminal commands 'sudo apt update' & 'sudo apt upgrade'. This will result in an updated system with all the security fixes installed and any package upgrades that are available.

The one thing I was not happy about is that Raspbian allows 'sudo' access for terminal commands without requesting a password by default, this can be fixed if you feel this is a major issue depending on what you are using the device for.  

After completing the upgrade I decided to add the 'Synaptic' package manager to the install as this makes finding software a little easier if you not sure exactly what you're looking for. This is as simple as 'sudo apt install synaptic' in the terminal and once installed you'll find a link to it under preferences in the menu.

One thing that I found that did not work out of the box was Audio, I had to install some Alsa packages and audacity to collect the needed dependencies for the audio to work. So I installed Alsa player, Alsa mixer GUI and Audacity and after this and a reboot miraculously audio now worked.

Also there was not battery monitor installed so I installed Batmon so that I could check the battery status of the laptop.   On the whole given that Raspbian has been built to be compatible with all iterations of the Raspberry Pi board the software installed by default while minimal includes all the basics for web use - Chromium, email - Claws and office work - Open Office suit, along side all the Pi favourites such as Scratch (including Scratch 2) and Python programming tools.   Would I use Raspbian x86 as a daily driver, with a few tweaks, I might, particularly on an older PC/Laptop. I need to try it on an old Atom Net Book to see if it will work well on a really low specified system but a Pentium 4 with a couple of gig of RAM should work reasonably well as a development and homework PC for a school student so could extend the life of an old machine you may have kicking around. But a Core2Duo is definitely a goer, even with a basic 1Gig of Ram it should work quite well and 2Gig or better no issues at all.

There is a link to the iso download via HTTP or torrent here:

Android ROM and PAIN - operat0r | 2017-08-17

Amateur radio round table #2 - Various Hosts | 2017-08-16

This time only the two of us:

  • Steve, KD0IJP
  • Michael, DL4MGM

A lot of off the cuff technical explanation.

Starting from the comment by David Whitman to the last round table, we talk about frequency, wave length, propagation velocity and their relations. Approximate wave length values are commonly used to reference to entire "frequency bands", which are the frequency spectrum portions allocated to a certain radio service in proximity. Status of (amateur) frequency allocation may vary with band or country. They may not be "exclusive" and there can be "primary" and "secondary" radio services sharing that spectrum. Secondary services must not interfere with primary ones, while the other way round has to be accepted.

What frequency is most powerful? - It depends! We ramble a bit how different frequencies have different propagation depending on certain factors like daytime, time of year, sun spot cycle. - Please help out with more in depth information here! Join us. There is a varying maximum and a minimum useable frequency for ionospheric propagation.

VHF (globally > 30MHz) and UHF (> 300 MHz) waves have a more line of sight propagation. Steve shortly introduces the concept of repeater stations. Usually at an exposed location, a repeater retransmits the signal that is received at another frequency, thus extending communication range. Participants only need to reach the repeater in order to be able communicate with each other. We hint at additional propagation modes for VHF, like sporadic E-layer propagation, but are not able to go into detail. - Please tell us, if you have experience in those fields!

Some thoughts about RF output power and how it is less important if conditions are right.

Modulation: Putting "information" onto a radio frequency signal. Staring out as a clean "carrier wave", its parameters are modified according to the modulation scheme. We start out and explain the basic concepts of amplitude modulation, AM, where the amplitude of the radio wave is altered by the modulating signal. Then frequency modulation, FM, where the modulation process influences frequency of the output signal. We use voice audio as an example as modulation content, but this can of course be of digital nature. SSB, single side band modulation. It is the standard voice modulation mode for short wave amateur communication. We give a very brief explanation of one possible way of generating it. We discuss how it is more efficient than AM in regard to occupied frequency spectrum use and transmit power.

This leads to ideas how great it would be if someone could record a show about those things, including audio examples. We further digress in how it may be a good idea to single out individual topics separate shows. The "rabbit holes" (tm MrX I think) we fall in while explaining other stuff. Make them available to be simply referenced in later shows and we can concentrate on the topic at hand.

There will be a place to put ideas and draw inspiration for shows here:

Next we pick up the discussion of frequency shift caused by the Doppler effect and its effect on satellite operation. This was triggered by a question in "hpr2216 :: Working AO-85 with my son" (

We ramble a bit how in the wide field of amateur radio no one can know everything right from the beginning. Take the jump start provided by the knowledge required for the test and go on with learning by doing.

How cool would it be to have shows from "Ham fests" like the "Dayton Hamvention", the "HAM RADIO" or any other event. A brief mention of the "ARRL Fieldday".

We have a mini poll and want to get feed back from the audience, if they would be interested to have some sort of decoding riddle in future shows.

Air Soft Mini Howto - operat0r | 2017-08-15

get off the computer !

Safely enabling ssh in the default Raspbian Image - Ken Fallon | 2017-08-14

In this post I will show you how to take a default Raspbian Image and safely enable ssh by allowing remote access only with authorized keys.

Recently, and correctly, the official Rasbian Pixel distribution disabled ssh with the note that from now on SSH will be disabled by default on our images.To understand why this is a good thing please read A security update for raspbian pixel. In short, having 11 million computers out there in the hands of non security professionals, with a known username and password, is not a good idea.

That said there are many cases where you want to access your Pi remotely, and a key part of that is the ability to access it securely via ssh.

The Raspberry Pi site offers a solution for how to reactivate ssh. One option is via the GUI, Preferences > Interfaces> SSHEnabled. Another is via the console sudo raspi-config > Interfacing Options > SSHYes > Ok > Finish. The third offers a more interesting option.

For headless setup, SSH can be enabled by placing a file named ssh, without any extension, onto the boot partition of the SD card. When the Pi boots, it looks for the ssh file. If it is found, SSH is enabled, and the file is deleted. The content of the file does not matter: it could contain text, or nothing at all.

This is exactly what we want. Normally you would burn the image, then boot it in a Pi with a keyboard, screen and mouse attached, and then add the file. A shortcut to that would be to burn the image, eject it, insert it again, mount the sdcard boot partition, and then create a file called ssh.

I don’t like either of these solutions as they involve varying amounts of user intervention. I want a solution that will automatically leave me with a modified image at the end without any intervention (aka human error) on my part.

So I want to build a script that can handle the following steps:

  • Download the latest image zip file
  • Verify it is valid
  • Extract the image itself
  • Enable ssh
  • Change the default passwords for the root and pi user
  • Secure the ssh server on the Pi

I could add to this list and customize every aspect of the image, but my experience has shown that the more you modify, the more maintenance you will need to do. When changes are made to the base Rasbian image, you will need to fix your scripts, and worse is the job of updating all those already deployed Pi’s.

A better approach is to use the base images and control them with automation tools like Ansible, chef, puppet, cfengine, etc. This allows the images to be treated as Cattle rather than Pets, to see what that means see Architectures for open and scalable clouds, by Randy Bias, VP Technology at EMC, Director at OpenStack Foundation.

Another approach to consider would be to Network Boot your Raspberry Pi and in that way the sdcard is barely used, and all traffic is run off the network. If you are deploying a lot of pi’s in a area with a good physical network then this is a great option as well. This has the advantage that all the files are kept on the network and can be completely controlled from a central location.

If you can’t be bothered to stick around and find out how I did it, you can download the script fix-ssh-on-pi.bash. Remember that it is intended more as inspiration rather than a working tool out of the box. I deliberately wrote it so you must edit it to make it fit your needs.

See the complete show notes for the step by step instructions that lead to the creation of the script file, with credit been given to the sites that offered each part of the solution.

Wii and WiiU Software Modding - operat0r | 2017-08-11 A complete guide to Wii U custom firmware, from stock to Coldboot Haxchi.

RoboThermometer - Epicanis | 2017-08-09

Sorry this is such a short episode. I don't know what came over me, I was just listening to Mr.X talking about doing something with Python in Hacker Public Radio episode 2340, and for some reason I just felt a compulsion to record some kind of episode myself. It was so strange. I'm way behind on my Hacker Public Radio contribution duties anyway, so here's a quick, geeky tutorial about a thing I did with a Raspberry Pi just to try it.

The temperature sensor I'm using is one of the many "1-wire" protocol devices supported by established kernel drivers, hence the reference to loading the modules for it:

sudo modprobe w1-gpio
sudo modprobe w1-therm

The part about adding "dtoverlay=w1-gpio" to /boot/config.txt and then rebooting is also necessary, otherwise the modules load but no devices show up in /sys/bus/w1/devices/ .

Part of the fun was coming up with a way of extracting the temperature reading in useful form without having to write a bunch of unnecessary python code. Not that there's anything wrong with python, but I get the impression that some people think everything "RaspberryPi" has to be written in python. An example of this that amused me is the piFM project, which cleverly abuses the first-generation Raspberry Pi spread-spectrum circuitry to turn it into a surprisingly powerful FM radio transmitter. This project had two ways to run it - the actual compiled C program that takes input audio and makes FM radio come out...and a python "module" that was literally just a system call that...ran the C program that takes the audio and makes FM radio come out.

Examples of reading the temperature data that I ran into tended to also be short python scripts, so I took it as a challenge to do without, resulting in the fun-to-recite command in the episode, which on my system is:

echo "scale=3; (`grep -o "[[:digit:]]\{5\}" /sys/bus/w1/devices/28-05167380f6ff/w1_slave`/(5000/9))+32" | bc

As an example of what you get with a correctly connected and configured DS18B20 module on a Raspberry Pi, in my case the device shows up as:


Your device's number after the "28-" will be different, so just replace my example with your own device's number.

If you read the "w1_slave" virtual-file in that directory, you get something that looks similar to this:

67 01 4b 46 7f ff 0c 10 c4 : crc=c4 YES
67 01 4b 46 7f ff 0c 10 c4 t=22437

To be completely proper, one probably should validate that output to make sure the CRC matches so you know for sure that the read of the temperature data was correct, but I've had Zabbix checking my living-room temperature once every minute for a couple of days now and seen no odd readings or failures, so I'm not going to bother making anything more complicated than my hypnotic one-liner, unless I ever try to use the same kind of setup to monitor something more important, like a tank of expensive fish or a bioreactor full of beer.

If you want some more detailed connection instructions for the DS18B20 temperature sensor and the Raspberry Pi, here is one of the many online pages with the whole process:

Ahuka Insurance - Understanding The Marketplace - Ahuka | 2017-08-04

In the U.S., health care, like most things, is driven by a private marketplace. We take a look at the principles that govern this marketplace in this episode.

An Intro to Apache Hadoop - JWP | 2017-08-01

Fixing a toilet roll holder - Ken Fallon | 2017-07-28

In this episode Ken discusses how a simple "life hack", turned a source of frustration, into an engineering problem with a simple solution.

Toilet roll holder without roll in place

Toilet roll holder with roll in place

Wherein our hero fails to repair a garage door. - Christopher M. Hobbs | 2017-07-25

My garage door failed spectacularly for a second time. I make an attempt to repair it but find that my extension cables are a bit too short. I hope I can explain a little about how garage doors work along the way.

Tracking the HPR queue in Python - MrX | 2017-07-21

In this episode I explain how I use python to track the number of shows in the HPR queue and then turn on a blinkstick to indicate the size of the queue.

Python code included below

#!/usr/bin/env python3

### This is a scratchpad file I've created to try out snippets of code in python

# The script below is for use with Python 3
# This script should work out of the box on most systems running a version of Python 3 
# If you happen to have a blinkstick lying about then your can uncomment the blinkstick module
# and uncomment the references at the bottom of the program that call the blinkstick functions
# Regards, Mr X

# Imported modules
from time import sleep          # used to pause program
#from blinkstick import blinkstick  # used to control blinkstick nano attached to usb port of raspberry pi
import urllib.request           # used to capture hpr webpage content to get the number of HPR shows in the que
import re               # regular expressions, used to find sting in HPR webpage (get_hpr_que)

# These functions control a blink stick nano attached to my raspberry pi USB port #################
# They can be ignored or deleted if you don't have one

def bstick_off():
# Search for all attached blinksticks and turn them all off
    for bstick in blinkstick.find_all():
        bstick.turn_off()   # Turn front blinkstick LED off
        bstick.set_color(channel=0, index=1, name="black")  # Turn rear blinkstick led off
        print("Blinkstick: " + bstick.get_serial() + " turned off")

def bstick_on(colour):
# Turn blinkstick on and set led colour to string value stored in var colour
# valid colours are, black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua
    for bstick in blinkstick.find_all():
        bstick.set_max_rgb_value(30)        # Sets max blinkstick RGB value to 15, makes LED dimm
        bstick.set_color(name=colour)       # Turn blinkstick on, var colour determines colour
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex") + " [" + colour + "]")

def bstick_on_random():
# Turn blinkstick on colour random
    for bstick in blinkstick.find_all():
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex"))

def bstick_blink_red():
# Flash blinkstick colour red
    for bstick in blinkstick.find_all():
        print ("Blinkstick: " + bstick.get_serial() + " | Colour: " + bstick.get_color(color_format="hex"))


def get_hpr_que():
# Goto hacker public radio calendar page and extract the number of shows in the queue
# then return the number of shows as an integer
# also turns on blinkstick LED and sends number of HPR shows in the que to the display

    url = ''   # HPR url for calendar page
        html_content = urllib.request.urlopen(url).read()   # Try to read hpr calendar page
        print("ERROR: Problem acessing url " + url)     # if error accessing url then return -1
        hpr_shows = -1
        return hpr_shows
    html_page = str(html_content)   # convert to string
    line_begin = html_page.find('There are only <strong>') # find position of string in html page
    line_end = line_begin + 70 # Store line end position (start position + 70)
    line = html_page[line_begin:line_end]  # Capture string line
    #print(line) # DEBUG Print line string
    digit = re.findall(r'\d+',line)         # Find digits in line
    #print(digit[0])    # print the 1st digit
        hpr_shows = int(digit[0])   # convert digit list to integer days
    except:                         # If show numbers not found then return -1
        print("ERROR: Problem getting number of HPR shows in que.")
        hpr_shows = -1
        return hpr_shows
    #print(hpr_shows) # DEBUG
    #return hpr_shows
    if hpr_shows > 9:       # If hpr show que > 9 turn on green LED
        print("Turn on green blinkstick LED")
    elif hpr_shows > 5:     # Else if hpr show que > 5 turn on blue LED
        print("Turn on blue blinkstick LED")
    elif hpr_shows > -1:    # Else if hpr show que > -1 turn on ref LED
        print("Turn on red blinkstick LED")     
        print("Flash red blinkstick LED")
        #bstick_blink_red() # Else blink LED to show error
    print("The are " + str(hpr_shows) + " shows in the HPR que...")
    print("Turn off all blinkstick LED's")
    #bstick_off()           # Turn blinkstick off

# Main program

The Kobo Aura eReader - Jon Kulp | 2017-07-18

I recently acquired a refurbished Kobo Aura e-book reader. This episode is a brief review.


Our Adventure Begins! - Claudio Miranda | 2017-07-13

In this HPR episode, I discuss the open-sourcing of Colossal Cave Adventure (a text adventure computer game), my childhood exposure to text adventure games, and passing along the text adventure torch to my middle son thanks to the "bsdgames" package.

Opening sound clip taken from "The Hobbit: An Unexpected Journey." Closing song is "The Free Software Song" performed by Mark Forry, Yvette Osborne, Ron Fox, Steve Finney, Bill Cope, Kip McAtee, Ernie Provencher, Dan Auvil (

IRC: ClaudioM on, #oggcastplanet

VirtualenvWrapper for Fish Shell - b-yeezi | 2017-07-12

In this episode, talk about how I created my own virtualenvwrapper-like interface using Fish Shell.

Fish Shell is "a smart and user-friendly command line shell for macOS, Linux, and the rest of the family. It excels in tab completion and ease of use, but virtualenvwrapper does not support it.

Virtualenvwrapper, like the name suggests, is a wrapper around python's virtualenv functionality, which allows you to use different versions of python packages in separate environments. To learn more, listen to BJB's show called A bit of background on virtualenvwrapper.

Functions and aliases in my fish config file:

# Set virtual directory root
export set WORKON_HOME=$HOME/Envs

# List virtual environments
alias lsenvs="ls -m $WORKON_HOME | sed 's/\///g'"

# Create python2 virtual environment
function -d "Like virtualenvwrapper for python2" mkvirtualenv2
    virtualenv -p python2 $WORKON_HOME/$argv;
    and source $WORKON_HOME/$argv/bin/;
    and echo "Virtual environment created."

# Create python3 virtual environment
function -d "Like virtualenvwrapper" mkvirtualenv
    virtualenv -p python3 $WORKON_HOME/$argv;
    and source $WORKON_HOME/$argv/bin/;
    and echo "Virtual environment created."

# Source a virtual environment
function workon
    source $WORKON_HOME/$argv/bin/; and echo "Switch to virtual environment."

# Delete a virtual environment
function -d "Like virtualenvwrapper" rmvirtualenv
    if test -n "$VIRTUAL_ENV"
    rm -rf $WORKON_HOME/$argv; and echo "Virtual environment deleted."

Installing DD-WRT on ASUS RT-N66U - Ironic Sodium | 2017-07-11


  • This worked for me, but it’s no guarantee it’ll work for you
  • It’s been a couple weeks and I’m doing this from memory with the help of the resources I used, so I may have missed or misremembered a step
  • Read the relevant documentation for yourself
  • DO NOT use the router database to determine the firmware version to use

Resetting and Clearing

  • Recovery Mode (use Reset Button):
    • With router unplugged, press reset button
    • Plug in power
    • Hold reset button for ~10 seconds until the power LED is blinking slowly
  • Clear the NVRAM (use WPS Button):
    • With router unplugged, press WPS button
    • Plug in power
    • Hold WPS button for ~10 seconds
    • Note: NVRAM is where the settings for the router are stored
  • 30-30-30 Reset
    • Push reset button with the router powered on for 30 seconds
    • Pull the power cord for 30 seconds while holding the reset button
    • Plug the power cord in for 30 seconds, while holding the reset button

Upload via Web GUI

  • Tried using the Web GUI method, but ASUS firmware checks to see if it’s an official version (i.e. signed by ASUS), and will only install it if it is
  • DD-WRT isn’t an official version, obviously, but not all is lost, uploading via recovery utility works

Upload via Recovery Utility

  • Download router firmware: dd-wrt.v24-26138_NEWD-2_K3.x-big-RT-N6UU.trx
    • big version includes more tools than mega version
  • Make the following network config information on the computer you’ll upload the firmware from:
    • IP =
    • Subnet =
    • Default Gateway =
  • Perform 30-30-30 Reset
  • Perform Clear NVRAM
  • Perform Recovery Mode
  • Navigate to and follow screen directions to upload DD-WRT firmware
  • It may take up to 10 minutes to reboot (don’t think it took that long, but I waited that long)
  • Perform Recovery Mode
  • Navigate to and select Reset NVRAM
  • Navigate to, and then select reboot and wait ~10 minutes
  • Perform 30-30-30 Reset
  • Navigating to should now bring you to your new DD-WRT installation
    • Remember to secure it
  • Note: installing mini version (referenced in online directions) isn’t necessary prior to installing the big/mega version


A Texan's view on Why only a Native Born person can be President - JWP | 2017-07-04

Based on my limited knowledge of our founding documents. I have read them a few times and had a few basic classes about our founding documents. So I am not lawyer or Professor just a normal person with a very normal education. I did see the starting documents at the national archive last sept 2016 and they are real and can be publicly read.

Opensusecon 2017 and Ubuntu 16.04 - JWP | 2017-06-29

Information about HTOP can be found at Information about Audacity 2.1.2 can be found at

Overall the opensuse con 2017 was a great event. Lots of talks, they had guy with 16 Raspberry PIs in a storage cluster and list goes on and on. Many of the folks there were suse employees or Open Cloud employees but they really had their passions down.

Ubuntu 16.04 is running fine on my MS surface tablet and is wife friendly.

How to Configure Mumble in Real Time - Thaj Sara | 2017-06-28

Links relevant to the show:

A bit of background on virtualenvwrapper - bjb | 2017-06-27

A bit of background on virtualenvwrapper

Or, Linux processes, the process environment and the shell.

speaker intro

Hi, I'm bjb. I've been using Linux for wow, 20 years now.


knox gave a nice podcast on virtualenvwrapper - it was timely for me, I was just trying to use it the other day and not finding all the bits and pieces. So thank you for collecting that info in one place.

knox asked why virtualenvwrapper behaves as it does ...


virtualenvwrapper is a combination of bash functions and programs.

To understand how it works you need to know a little bit about bash and Linux.

I know there have been some very good earlier and current! HPR shows on bash. But bash is a huge topic. The man page for it was 3500 lines about 10 years ago it is 4300 plus lines. It has a LOT of functionality, and when you're just trying to get something done, it's overwhelming to look at. So in this HPR episode, I will just answer one or two of knox's questions. It gives me an excuse to make an episode.

Also I'm not going to go too deep into the description. In order to keep the podcast short and to-the-point, I'm just going to cover what is needed. There is lots more depth - there are several shells you could use and I'm only going to talk about bash; at startup bash can read more than just the files I mention in this podcast ... I'm just not going to cover all the possibilities. That's what the over 4300 line man page is for : -). If you have questions, ask them in the comments, or make your own podcast and ask them! Maybe you'll get some answers - either from me or from another HPR community member.

environment for processes

A program that has no inputs is not flexible or powerful. As a simple example, a program that displays the results of a hard-coded search is certainly useful if you want to know about that hard-coded search term. But a program that can search for a term that you specify at run time is so much more useful. You do not have to recompile the program to change the search term.

Programs can receive inputs in several ways.

On Linux and other unix-like OSs, a program can be run with arguments, read and write to file descriptors (and that includes standard in, standard out and standard error), they can receive signals - and they have another input: the "environment". That is a bunch of key-value pairs that are made available to the program when it starts. Some examples of environment variables are PATH, HOME, EDITOR and PAGER. The name of the environment variable, 'PAGER', is the key, and the thing on the other side of the equals sign, like 'less', is the value - the pair make up a key-value entry in the environment.

People who program in C or C++ and maybe other languages know that the program starts with a main function, and that function has some parameters. The first one is a count of arguments and the second one is an array of strings, each string being one of the arguments passed to the program when it is launched. There is a little-known optional third parameter: an array of strings that represents the "environment".

The way the program gets these strings is that it inherits them from its parent process. The parent process of programs that are run from the command line is ... the command line itself, bash. Or csh, or whatever your shell is. When the program starts, it gets a copy of the exported parts of the environment of its parent.

environment in bash

Bash gives you the ability to set these environment variables and mark them as "available for handing to subprocesses", and that is what is happening when you give that "export" command.

You can view all the currently defined variables that have been marked for export by using the "env" command with no arguments. E N V - echo november victor. Or, env, short for environment.

Since these variables are passed down the generations from parent to child, it is usually sufficient to define it once at the top level.

The command line itself is a program called bash. It reads some files at startup.

As an example of the "generations", you can call bash from within bash. And you can call bash again from within that bash. Then the first bash is the parent of the second one, and the second one is the parent of the third. The third bash is the child of the second.

You can see the environment changing: Set a variable fred=one in the first shell and export it:

export fred=one

then run bash. In that bash you can echo $fred, and see that fred is one. Now you can change fred to two:

export fred=two

and run the third bash. In the third bash, you can see that fred is two:

echo $fred

now exit bash with the exit command.

If you echo $fred, you will see fred is still two, since we set it to two just before we ran the third bash. But if you exit again, you will be back to the first bash, and you will see that fred is now one. This is the environment that bash had, just before you launched the second bash. The second and third environments are gone - those processes terminated when the exit command was given on their prompts; and when they did, their environments were cleaned up and removed.

In the show notes, I have another exercise to help with understanding this environment thing.

Here's another exercise to illustrate this principle. Type bash and
enter, and you will be in a subshell. If you show a process listing
in a hierarchical format, with children indented from their parents,
you will see that the bash you are currently in is a child of
another bash. The command to see the list of running processes in
hierarchical format is:

    ps -efH

There are several bash processes. In order to pick out the bash
instance that I'm running, I look for the ps process, because it has
a uniqe string in the arguments: -efH. In the less session, search
for 'efH' by typing "/efH". The screen will jump to where the
ps -efH process is, and highlight the "efH" string that you searched
for. The line you searched for will be at the top of the display
... to see the few lines above, type "kkkk" (one k for each line to
move up). To exit from less, type q.

Go ahead and export another made-up variable - perhaps your street name:

   export CHESTNUT=rizwan

Make sure it is there with the env command:

   env | grep CHESTNUT

and then run another subshell, and search for it again:

   env | grep CHESTNUT

Exit the various shells with the "exit" command or by typing ^D. If
you exit the subshell, and the shell in which you created the
CHESTNUT environment variable, you can run the env command and
search for that environment variable - it will not be there. The
program in which the environment variable was created has terminated,
and its environment has been discarded.

bash startup files

When bash is a login shell, it reads ~/.bash_profile. When it is not a login shell, but some subshell of the login shell, it reads ~/.bashrc.

So for things that you only need to set once, you can put them in ~/.bash_profile. For things that you have to run for each new subshell, you put them in .bashrc.

(Note that most distributions will set up the user accounts so they will run ~/.bashrc from .bash_profile for interactive shells)

the PATH

This is important, because of two things. The first is the PATH. The PATH is one of the environment variables that is used by the system to look for executables. So if you want to run a program, it should be in one of the directories on the PATH, or you will have to specify the full path to the program when running it.

When you first get your account on a system, there is a default version of the .bashrc and .bash_profile files. In .bash_profile there should be a definition of the PATH. It contains the system directories like /usr/bin and /bin - you don't want to remove those from your path or your shell will become next to useless - you will have to use full paths for all commands. So the way that people add directories to the PATH is to assign the existing value of PATH to itself, plus the desired new directories. For example:


But if you put this in .bashrc, then every subshell will have another copy of the directory /home/bjb/bin tacked onto the end of the PATH. So the right place to put this definition is in ~/.bash_profile, where it will be executed once and then inherited by all the subshells.

shell functions and aliases

However not everything you need in the shell is inherited from the parent program. It turns out that another facility that bash supplies and that virtualenv uses is the ability to define and execute bash functions. Bash also has aliases.

A bash function is a series of bash commands that have been given a name, and that you can run by typing that name. It can also receive arguments that can influence how the function will behave. HPR episode 1757 by Dave Morriss called "Useful Bash Functions" talks about bash functions.

You can see the list of currently defined bash functions by using the bash command: declare -F

An alias is a simpler version of a function - it is (usually) just a shorter string to represent a longer or more complicated command, to make command line use easier (assuming you can remember all the aliases in the first place).

You can see the list of currently defined aliases by using the bash command: alias

virtualenvwrapper makes use of bash functions. This has consequences.

the bash builtin command 'source'

One is that you need to define those functions in every subshell. That's why you need to put "source /usr/local/bin/" in your bashrc.

Well it seems that on a Debian system virtualenvwrapper puts the workon shell function into your shell via a more convoluted route. I will describe it in the show notes. But in the end, the virtualenvwrapper file that defines the virtualenvwrapper adds the function workon to your shell by sourcing the file /etc/bash_completion.d/virtualenvwrapper whenever .bashrc is sourced. (Note that "." is shorthand for the bash "source" built-in command.) The "workon" function is defined in /etc/bash_completion.d/virtualenvwrapper (the definition is about in the middle of the file.)

- ~/.bashrc sources /etc/bash_completion or /usr/share/bash-completion/bash_completion
  (whichever one it finds first);
- which sources /usr/share/bash-completion/bash_completion;
- which sources all the files in /etc/bash_completion.d
- one of which is
- which defines the bash function workon.

Look at that, on a Debian system "apt-cache show virtualenvwrapper" does indeed list bash-completion as a dependency. The virtualenvwrapper upstream does not assume you will be using command completion, and in the comments at the top of the /etc/bash_completion.d/virtualenvwrapper file tell you to put "source .../" into your ~/.bashrc file.

A description of bash-completion could be a topic of another podcast (I'm not actually volunteering to do this one, heh, just suggesting it as a topic).

life cycle of environment

Another consequence is this: When you run a program, it will inherit a copy of the environment of its parent. When it is done, it will exit and that environment will disappear. So, you cannot run a program or subshell to try to affect your environment. It will affect the subshell or program environment, and as soon as the command is done, that updated environment will disappear.

The "source" built-in bash command is meant to allow you to run a bunch of commands in a file as if they had been typed on the command line. So you can put commands that affect the environment, and the environment will still have the changes when the sourcing is done.

back to virtualenvwrapper: conclusion

So, virtualenvwrapper is mainly changes to the environment. It consists of a few files that are stored in ~/.virtualenvs, with names like postactivate and premkvirtualenv. They are basically hooks to add functionality before and after the commands you would issue for virtualenv, so you can customize virtualenv.

To understand virtualenvwrapper, let's have a quick look at virtualenv first. The things you do with virtualenv are to create a virtualenv, destroy one, and activate one.

So the things you can do with virtualenvwrapper are to run some script or scriptlet before or after you create a virtualenv, destroy a virtualenv, or activate a virtualenv.

The main thing to customize is the "where to find the activate file" and the "what to do after activating 'postactivate'".

It does this by setting environment variables (like PATH and PYTHONHOME) appropriately and by defining bash functions to do things like change directory to where the project is.

You just have to edit .virtualenvs/postactivate to contain the location of your project files. You also define WORKON_HOME to be the directory that contains all your virtualenvs (for me that is /usr/local/pythonenv, but for most people it will be some directory in their home directory.


virtualenv manipulates the environment in order to allow you to have different python setups for your different projects - handy if you have one project that depends on different versions of python packages than another project and you want to run both.

But virtualenv leaves a few rough edges, like leaving it up to you to find the virtualenv in order to source the activate script. That is where virtualenvwrapper comes in.

We have talked about the environment, and how virtualenvwrapper manipulates the environment to make it easier to work with the virtualenvs that you have created.

The environment refers to the set of environment variables that are defined and passed to child processes. We also discussed the process hierarchy and that a new environment is created for a new process, and it is destroyed when that process exits. We covered sourcing a file of shell commands, so that if those commands affect the environment, then when the sourcing is done, the environment left is the one that was changed and the changes persist past the source command. We talked about the .bash_profile and the .bashrc files.

HPR exhortation

You've been listening to Hacker Public Radio. Anyone can make a show -if I can do it, so can you.

Living Computers: Museum + Labs - JWP | 2017-06-23

From Wikipedia:

Living Computers: Museum + Labs (LCM+L) is a computer and technology museum located in the SoDo neighborhood of Seattle, Washington. LCM+L showcases vintage computers which provide interactive sessions, either through time-sharing operating systems or single-user interfaces. This gives users a chance to actually use the computers on-line or in person in the museum. An expansion adds direct touch experiences with contemporary technologies such as virtual reality, self-driving cars, the internet of things, and robotics. This puts today's computer technology in the context of how it's being used to tackle real-world issues. LCM+L also hosts a wide range of educational programs and events in their state-of-the art classroom and lab spaces.

Minimal Music Site 17.05.39 now available on - mattkingusa | 2017-06-22

Hey this is MattKingUSA doing an update of my project Minimal Music Site. And also a review of my new laptop! Thanks for listening!

Talking about my thinkpads - swift110 | 2017-06-21

Penguicon 2017 Report - Ahuka | 2017-06-16

Penguicon 2017 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.

Troubleshooting Websites with XAMPP - Frank Bell | 2017-06-13

Using XAMMP To Toubleshoot a Website

XAMMP is package containing a complete LAMPP stack configured to work out of the box. It is avalable for Mac, Windows, and Linux from and includes

  1. Apache
  2. MariaDB
  3. PHP
  4. Perl

XAMPP is excellent for testing a new website, testing updates for an existing site, or troubleshooting a misbehaving site.

In this podcast, Frank tells how to set up XAMPP against the background of having recently had to troubleshoot his own recalcitrant website.

XAMPP startup messages:

# cd /opt/lampp
# ./lampp start
Starting XAMPP for Linux 5.6.30-0...
XAMPP: Starting Apache...ok.
XAMPP: Starting MySQL...ok.
XAMPP: Starting ProFTPD...ok.

Kdenlive Part 6 Workflow and Conclusion. - Geddes | 2017-06-09

Hello HPR listeners this is Geddes with part 6 the final article in this Kdenlive series entitled Workflow and Conclusion.

The topics included are:

  • The Gold Master
  • The render menu and the gold master
  • Encoding Workflow
  • Post production workflow
  • Conclusion

Here's the link to the original article.

Everyday package operations in Guix - clacke | 2017-06-07

Back at hpr2198 :: How awesome is Guix and why will it take over the world I wrote a comment about how I use guix in everyday practice. Here's the full episode for that comment.

The most common operations I do are:

  • guix environment --ad-hoc ncdu, where ncdu stands for something I heard about and want to try out, or something I only use once a month. It is then “installed” in the spawned sub-shell only. This is an awesome feature.
    • If you haven’t heard about ncdu, look it up.
    • Also in ~/.bash_aliases
    • Also in ~/.local/share/applications
      • Using stow, of course
  • guix package -i ncdu if it turned out to be something I like and use every day
  • guix pull to get the latest definitions for this user
  • guix package -u to upgrade my permanently installed stuff for this user
  • guix package -d to erase history of what I had installed before and release these references for collection
  • guix gc to reclaim my precious disk space

  • Followup episode material:

    • What's in my .bash_aliases?
    • Decentralized source control, for real this time, with git-ssb
    • What's so great about execline?
    • What's a stow?
      • How I got rid of stow and learned to love guix to the fullest (Future episode. That's not where I am today.)
      • Listen kids, stow is not a package manager (warning: fediverse drama ahead). It's a symlink farm manager that I use for package management.
    • Very short episode: ncdu, eh?

Configuring an HP Laptop for Dual Boot Linux and Windows 10 - Mongo | 2017-06-02

This presentation describes the installation of Ubuntu GNOME 16.04 to dual boot with Windows 10 Home on an HP Spectre x360-13 laptop. Previously, I had been using Linux in a virtual machine on Windows. After the update, there was a very significant improvement in performance working in Linux without the Windows/VM overhead. It turned out to not be difficult and was certainly worth doing.

I found a lot of helpful information here:

Get Clonezilla here:

Using Gnome 3 for the First Time - Shane Shennan | 2017-06-01

Here are the three Gnome 3 extensions I am enjoying:

Kdenlive Part 5 All About Audio - Geddes | 2017-05-31

Hello again HPR listeners this is Geddes with you again with Kdenlive part 5 All About Audio. The topics included are:

  • Audio Recording and Synchronization

  • Best Practices for a Basic Mix

  • Exporting

Here's the link to the original article.

The first Intel CompuStick - JWP | 2017-05-26

Well basically the stick out of the box was not very usable. I had to struggle with it for a long time to make it work for me doing even the most basic tasks. I went to and things got better.

Phantom Power Drain - brian | 2017-05-24

  1. disconnect negative battery cable.
  2. connect multimeter between battery and cable.
  3. read amp draw... 15-20 millivolts milliamps is on the high end.
  4. unplug fuses one at a time, until the problem circuit is identified.

... some lip smacking, and vocal fry.

Corrected 2017-05-27 - Editor

More Magnatune Favourites - Dave Morriss | 2017-05-23

More Magnatune Favourites

After nearly two years Andrew (@mcnalu) and Dave have prepared another show of some of their favourite music from Magnatune for your pleasure.

Activities with a Toddler - Shane Shennan | 2017-05-18

Here is the list I check when I am looking for something to do with my toddler. Note that these are good indoor activities.

[ ] Milk and TV
[ ] Duplo
[ ] Dollhouse
[ ] Meal preparation
[ ] Mixing bowl
[ ] Crafts or painting
[ ] Sink time
[ ] Chasing and tickling
[ ] Reading
[ ] Cat videos
[ ] Container of similar things

Arch on CELES - Hannah, of Terra, of Sol | 2017-05-15

ArchLinux on a CELES

Samsung Chromebook 3

Before begining


  1. Remove HW write-protect screw
  2. Developer mode
    • Enable Developer mode, and hold the Esc + F3 (Refresh) keys – then press the Power button. This enters Recovery Mode... Ctrl + D. It will ask you to confirm, then the system will revert its state and enable Developer Mode... Ctrl + Alt + F2 (F2 is the "forward" arrow on the top row, →)

...Use chronos as the username...

  1. SU & FW
    • Escalate privileges. sudo -i
    • ChromeOS Firmware Utility Script
      1. Install RW_LEGACY
      2. Set GBB Flags (1 second, SeaBIOS/Legacy)
      3. Remove ChromeOS Bitmaps (To look cool)
  2. OS & Kernel
    • Install ArchLinux
    • Install yaourt
    • Install kernel with IRQ patch:
    • yaourt -G linux-galliumos-braswell&&cd !:2
    • makepkg -sifCc --skipinteg
    • Install galliumos-braswell-config:
      • yaourt -S --force galliumos-braswell-config
  3. Grub
    • Regenerate Grub configuration file
      • grub-mkconfig -o /boot/grub/grub.cfg




GRUB_CMDLINE_LINUX_DEFAULT="quiet splash irqpoll"
GRUB_PRELOAD_MODULES="part_gpt part_msdos"


RootDir     = /
DBPath      = /var/lib/pacman/
CacheDir    = /var/cache/pacman/pkg/
LogFile     = /var/log/pacman.log
GPGDir      = /etc/pacman.d/gnupg/
HookDir     = /etc/pacman.d/hooks/
HoldPkg     = pacman glibc
CleanMethod = KeepInstalled
UseDelta    = 0.7
Architecture = auto
IgnorePkg   =
IgnoreGroup =
NoUpgrade   =
NoExtract   =
SigLevel = PackageRequired
LocalFileSigLevel = Optional
RemoteFileSigLevel = Required
Include = /etc/pacman.d/mirrorlist
Include = /etc/pacman.d/mirrorlist
Include = /etc/pacman.d/mirrorlist
Server =$arch
SigLevel = Never


Architecture :        x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Boutisme :            Little Endian
Processeur(s) :       2
Liste de processeur(s) en ligne : 0,1
Thread(s) par cœur : 1
Cœur(s) par socket : 2
Socket(s) :           1
Nœud(s) NUMA :       1
Identifiant constructeur : GenuineIntel
Famille de processeur : 6
Modèle :             76
Nom de modèle :      Intel(R) Celeron(R) CPU  N3050  @ 1.60GHz
Révision :           3
Vitesse du processeur en MHz : 642.089
Vitesse maximale du processeur en MHz : 2160,0000
Vitesse minimale du processeur en MHz : 480,0000
BogoMIPS :            3200.00
Virtualisation :      VT-x
Cache L1d :           24K
Cache L1i :           32K
Cache L2 :            1024K
Nœud NUMA 0 de processeur(s) : 0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch epb tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms dtherm ida arat


00:00.0 Host bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series SoC Transaction Register (rev 21)
00:02.0 VGA compatible controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Integrated Graphics Controller (rev 21)
00:0b.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series Power Management Controller (rev 21)
00:14.0 USB controller: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller (rev 21)
00:1b.0 Audio device: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series High Definition Audio Controller (rev 21)
00:1c.0 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #1 (rev 21)
00:1c.2 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCI Express Port #3 (rev 21)
00:1f.0 ISA bridge: Intel Corporation Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series PCU (rev 21)
02:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)

How to change the height of your Ironing board - Ken Fallon | 2017-05-12

Tired of having back ache after Ironing

Check out this amazing episode to hear how you too can transform a dull chore into an enjoyable experience !!!!

Ironing board modification

Sendy Send. Tell if your email has been read!! - sigflup | 2017-05-11

Installing and using virtualenvwrapper for python - Knox | 2017-05-10

Installing Virtual env wrapper in linux

Best documentation I have found for working with virtualenvwrapper:

Assuming you have pip installed.

  1. Install virtualenv
    sudo -H pip install virtualenv
  1. Install virtualenvwrapper
    sudo -H pip install virtualenvwrapper
  1. Modify your .bashrc file to include that following lines:
    export WORKON_HOME=~/Envs
    source /usr/local/bin/
  1. Test the commands:

    • mkvirtualenv <project_name>
    • rmvirtualenv <project_name>
    • lsvirtualenv (Lists all virtual environments you have created.)

    • workon <project_name>
    • deactivate

  2. Don't use SUDO when installing inside the virtualenv

Desparately Seeking Saving RMS - Introduction - dodddummy | 2017-05-09

My start towards the RMS ideal.

The Tick Conspiracy - TheDUDE | 2017-05-05

Reminder: This show is released in .ogg a non patent encumbered format.

Resurrecting a dead ethernet switch - mirwi | 2017-05-04

In this episode I simply let you participate with me replacing an electrolytic capacitor in the power supply of an Ethernet switch.

The broken capacitor shows a bulge in its housing and was therefore easily identifiable. The supply voltage in the fault condition could be observed with an oscilloscope to completely collapse when load is turned on. Both facts are illustrated in the image below.

Replacing the capacitor fixed the switch and brought it back in service.

Faulty capacitor

Saving money shaving with double and single edge safety razors - Dave Yates | 2017-05-03

The first Intel CompuStick sound fix with LUbuntu - JWP | 2017-04-27

Outernet and other projects - m1rr0r5h4d35 | 2017-04-25

First Microsoft Surface Pro Ubuntu 16.04 Dual boot - JWP | 2017-04-20

Hi. I purchased the first MS Pro on ebay after hearing of a like project on the Linux Action Show. I do a lot of traveling and I am always feeling bad about not having a something with open source on it.

So one of the best for travel is the MS surface pro.

In short it works great with Ubuntu.

Fountain Pens - m1rr0r5h4d35 | 2017-04-19

For a good basic rundown of the parts of a fountain pen, The Goulet Pen Company has a fairly decent page at:

Fountain pens on Youtube:

In Which Our Hero Takes 4 Hours to Install Hyper-V Server 2012 - OnlyHalfTheTime | 2017-04-18

So we had this server.

As all servers are wont to do, this one had run successfully for a number of years. Everything worked perfectly until it didn’t.

It ran, to my knowledge, only Hyper-V Server on its system drive, and had a second set of drives for hosting the VM that ran Microsoft Deployment Toolkit to service our depot. Our depot was on its own physical network, sharing with production only an ISP demarc.

I had long since abandoned the depot and its trappings, thinking it someone else’s domain, thinking my time better spent on client systems, thinking that I didn’t need to know what happened in the oft-ignored part of our operation. I assumed that it was set up properly since it had been so stable for so many years. But you know the old saying:

When you make assumptions you make an ass out of you and muptions.

The Problem.

Our monitoring systems reports the two depot servers offline, both the hypervisor and its virtual. I sent our depot technician to take a look. They come back online and he tells me that it needed to be rebooted. Having divested myself of giving a damn about the depot, I barely found the energy to shrug.

Then it happened again. I again sent the technician and promptly got wrapped up in some client-facing issue. I forgot about the servers until:

They went offline a third time. I didn’t have to tell my depot tech; he was watching the same feed as I. He rummaged a bit and came back with a story of defeat and virtual disks not being found.

“The server won’t boot because the Virtual disk can’t be found” he said.

“Ok, so you mean the virtual won’t come up, but what about the physical?” I replied.

“No, that’s what I mean. It won’t get past BIOS. It’s complaining of a virtual drive not being found.”

“Sounds bogus, let’s look.”

He was not wrong; that is what the screen said. And what it meant was RAID failure. I slid off the front of the server case and sure enough, one of the drives had popped.

Oh, did I mention? No backups.

The Rabbit Hole.

Drives pop sometimes, ain’t no thing. We build systems to be resilient. You slap a fresh one in there and it starts re-silvering and you get on with your day. Not this time, gentle reader.

While digging through the RAID controller, I found, to my amazement, horror, and utter confusion, that whatever chucklefuck set up this server put the two system drives in a RAID 0. As I stared at the screen and at the blinking amber drive light, all that could pass my lips was a quiet “Oh my god, why?”

In this scenario, I didn’t see any way forward, but through. So far, it had been demonstrated that the bad drive would behave for about 2 hours, then throw a fit. I shut down the server and took some time to think about how to proceed. In that time, I re-discovered some of the things the virtual machine was serving.

Things like: MDT, DNS, DHCP, PXE boot, but most importantly: the lone DC for depot.local (MDT needs a domain). Oh, and it was the only machine that was set up to manage the hypervisor through the Hyper-V console and Server Manager.


Compounding the issue, the virtual was not stored on the separate set of RAID 1 disks in this server as I had assumed. It was stored on the system drive. Oh joy, oh rapture.

My new mission: Rescue that virtual.

The Struggle.

First things first. I assume I’ll only have one chance to rescue this data before this drive bites the dust for good. I plug in the VGA and keyboard. Take a deep breath.

I turn on the server.

It fails to boot into the operating system. “Come on, you little shit.” Take out the drive and put it back in. Success. We boot into the OS and I’m presented with a log on screen. Password.

There are no logon servers available to process your request.

Shit, that’s right. The virtual is the only DC. K, local admin it is. Login successful. Presented with a command like and SConfig. Grab the terminal and start poking about. cd to C: and dir. Find a folder named VMs. Bingo. Started copying the VHDX to the RAID 1 set.

cp “C:\vms\Hyper-V Replica\Virtual hard disks\{guid}\{guid}.vhdx” E:\

The server moves the data at a respectful 700Mbps, considering its current degraded state. It eventually finished the transfer after about 10 agonizing minutes. Shut down the physical to preserve the bad drive.

We are out of the woods, but it’s still a long way to Gramma’s house.

The King is Dead; Long Live the King.

I have a plan. Now that I have the VHDX, and since we clearly need a replica server, I’ll push my luck. I’ll build a new server and see if I can replicate the virtual. I happen to have a disused server sitting right next to the bad server. It’s admittedly dissimilar hardware, but shouldn’t be a problem. I don’t know why it’s lying dormant or what it was used for in the days of yore, but it’s mine now. Eminent domain.

And here is the story of how it took me 4 hours to install an OS that usually takes 3 minutes.

We need to load up Hyper-V 2012 on this “new” server first.

As is standard practice, I disconnect all but one drive from the mobo. I do this because sometimes the Windows installer decides that the “SYSTEM” partition belongs on a different drive from the C partition and it makes me cry. I used rufus (what a fantastic little utility, really. I need to donate to that guy) to make a HV 2012 boot disk from ISO.

You know how it takes a few times to get a USB to go into it’s slot correctly? Not me. I whipped that bad mamma-jamma like a shuriken from 30 feet away and it slid perfectly into the front of the server. Fireworks, 100 doves, the works.

Boot it, get to the installer part where it asks you upon which drive you wish to install it. Boom, error:

Setup was unable to create a new system partition or locate an existing system partition.

Weird. Sounds like a problem with the disk, right? Open up diskpart, clean it, format, create partition, assign it a letter. No go. Try a different drive? Nope. Disconnect the cd drive maybe. No dice. Connect all the drives and try each one. Nada. Boot up into Ubuntu and use GParted to re-do what I did in diskpart. Zilch. Re-create the install media. Goose egg. Try the back USB ports. I’m running out of ways to say no, but in essence, nothing was making this error go away.

Screw it. Maybe this is why this server was sitting unused? Maybe it’s a bad mobo or something and frankly, I don’t care. Part out the drives and junk it.

We happen to have a literal pile of servers to pick from, so I grab the one on top because it’s the most similar to the bad server and because you must be out your damned mind if you think I’m digging through that mound of junk. This’ll do nicely.

Remember how I said I didn’t want to have anything to do with the depot? I still don’t. I want this new server to be unkillable, may he reign for a thousand generations. So, I may have gone a little overboard with the RAID setup for one simple hypervisor, which is going to be backed up and replicated.

That there is a 1TB RAID 1 with a hotspare and a 500ish GB RAID 5 with a hotspare. I never want to hear from this server again.

OK, so we start the Windows server install and:


No way. I have done this dozens of times, this is insane. I have used this exact same USB drive to do it! I can use it on an ancient spare laptop and go through the install perfectly fine. I have dug through pages of posts on forums and tried every last solution suggested except one. I find, on page 3 (!) of Google, someone say that it only failed for them when they used a USB 3.0 drive to install. I look at the end of my USB install media, see blue, then see red. NO. WAY.

So I hunt around for a USB 2.0 drive. Takes me a few minutes, but we had one holding up the leg of a table. Rufus took a bit longer this time. When the drive was cooked, I gingerly placed it in the receptacle and crossed my fingers. If this didn’t work, then I was all out of ideas. No clue.

It worked. I could not believe it. USB 3.0. Why, Windows, WHY?

Playing with Fire.

Creating a new domain is a pain in the ass. I considered a number of possibilities, but now that I had the re-install of this server figured out, I figured let’s go nuts and join the new hypervisor to the old domain depot.local. If you’ll remember from 6 years ago when I started telling you this story, the sole virtual server performed DCHP, DNS, and DC functions.

I powered up the bad physical server. It complained, but complied. Started the virtual, no issue. Waited a few minutes, then joined the shiny new server to the domain depot.local. From there, with the DC up and running it was a simple matter of using the Hyper-V console to set up replication. After about an hour of pacing back and forth like I was awaiting the birth of my first child, the virtual made it and was failed over successfully.

There were a few more issues to resolve, like the DNS server having the wrong IPs for just about everything even though they have been using statics for years, DHCP not responding on port 4011 for MDT for PXE Boot, DHCP being handed out by the virtual AND by the router on the same subnet (?!?!), and the DNS server refusing to connect over the HyperV vSwitch, but now at least I don’t have a knot in my stomach. I don’t know how this environment ever worked like this. What a mess to clean up.

I ripped the bad half of the RAID 0 out of the server like a man possessed. I nailed it to the wall behind my desk. There is a sign under it that reads: “RAID 0 is not RAID. If you use RAID 0 on anything, I will throw this hard drive at your head. I have good aim. It will probably hit your mouth.”

Managing tags on HPR episodes - 3 - Dave Morriss | 2017-04-14

Managing tags on HPR episodes - 3


This is the third (and last) show looking at the subject of Managing Tags relating to HPR shows.

In the first show we looked at why we need tags, and examined the advantages and disadvantages of the present system of storage. We considered the drawbacks of this design when searching the tags.

Then in the second show we looked at a simple way of making a tags table and how to query it in order to fulfil the requirements defined in the first show.

In this show we’ll look at a more rigorous, efficient, “normalised” solution.

Long notes

I have written out a set of longer notes for this episode and these are available here.

Chocolate Milk - venam | 2017-04-13

More on

Fish On! - Bill "NFMZ1" Miller | 2017-04-12

Whether hitting your local lake or planning a day trip out, it is always good to consult tech that can help out making the trip as successful as possible. Here are the items mentioned in the podcast:

Our Digital Art - sigflup | 2017-04-11

Sigflup's art!!!

Siss's art!!!!

Sigflup's Book!!!

Siss's books!!

WattOS on Lenovo X61s - Tony Hughes AKA TonyH1212 | 2017-04-07

This is a follow on show from the one about WattOS on the Acer AspireOne I did recently.

I talk about installing and running of the OS on this 10+ year old laptop and how they are still a viable option as a cheap laptop.

Note all the recording, and uploading to HPR of this episode was done on the X61s

At The Library - Bill "NFMZ1" Miller | 2017-04-06

Check out your local library.

If you are a cord cutter or looking for cheap alternatives to some of the following:

  • Ebooks
  • Emagazines
  • Audibooks
  • DVD's
  • Blu rays
  • CD's
  • And much much more!

Freak Does Geek - fth | 2017-04-05

Abstracting Nurse Jesus - Eric Duhamel | 2017-04-04

NOTE: the audio recording appears to have periodic jitter. As I recorded at 44.1 Khz this time, I wonder if my S2 just handles recording at a lower quality better, and if so I'll prefer lower quality over jitter in the recording.

In this episode I explain why and how I abstracted random number and choice generation into self-sustainable methods for objects.

  • A superclass was needed so that all the classes of object in the game engine would have access to these random generation methods.
  • I preferred to use methods in this case so objects would be self-sufficient and wouldn't depend on extra modules imported at the top of my code.
  • The syntactic sugar achieved by using customized methods instead of i.e. random.randint(0, 99) makes the code easier to write and understand at a glance.
  • Nurse Jesus is a pun on the acronym RNG for Random Number Generator
  • Let me know if you get the reference at 2:00 ;-)

I recorded this episode in parts using a program called Urecord on my pocket computer (mobile phone).

I program using Pygame, post on a GNU Social account, and maintain a personal website at NoxBanners.NET. I study programming techniques at, style at, and sometimes patterns at Portland Pattern Repository

Managing tags on HPR episodes - 2 - Dave Morriss | 2017-03-31

Managing tags on HPR episodes - 2


This is the second show looking at the subject of Managing Tags.

In the first show we looked at why we need tags, examined the present system and considered its advantages and disadvantages.

In this episode we will look at a solution using a separate table of tags.

Long notes

This is a detailed subject so I have written out a set of longer notes for this episode and these are available here.

Minidiscs: A Response to HPR 2212 - Jon Kulp | 2017-03-30

This is a walking-and-talking response to hpr2212 (meanderings Cyberpunk and the Minidisc, The Cyberpunk history of the Sony Minidisc, hosted by Quvmoh on 2017-01-24) with my own uses and recollections of this awesome legacy medium.

Video about my USB power supply hack:


Modular Game Scaling - Eric Duhamel | 2017-03-27

NOTE: the audio didn't cut together as smoothly as I remember from the first time, probably because I forgot to record at 44.1 KHz

In this episode I explain in broad terms how I programmed a game system to adjust its display resolution using three distinct modules operating individually and in concert.

  • The "metagame" (launcher) module accepts an argument describing the size of the window available for display
  • The "gameplay" module is informed of the space available as a 'window' into the game world and uses it for one thing or another
  • The "graphics" module opens a window at the specified size and modifies the graphical assets if needed

Once again I recorded in parts using a program called Urecord on my pocket computer (mobile phone).

I program using Pygame, post on a GNU Social account, maintain a personal website at NoxBanners.NET, and study programming techniques at, style at, and sometimes patterns at Portland Pattern Repository

The Good Ship HPR - Dave Morriss | 2017-03-24

The Good Ship HPR

Hacker Public Radio

What is it?

The podcast called Hacker Public Radio (HPR) is an amazing phenomenon. It has been providing an episode a day every weekday for years, and these episodes originate from the community.

I heard someone refer to HPR as “Crowd Sourced” which seemed like a good way of describing things. It is an open access resource which is managed under various Creative Commons licences, usually CC-BY-SA.

The content is very broad in scope. Anything “of interest to Hackers” is acceptable, which is interpreted in a wide variety of ways.

Access to shows is open to all through the HPR site, where shows back to episode 1 can be browsed, notes read, etc. There are feeds which propagate various updates: to shows, series, comments and email. Current shows are archived to the Internet Archive ( within a few days of appearing in the main feed, and older shows are gradually being archived this way with the intention of eventually storing everything there.

For example, to find show 1999 on look for The entire HPR collection can be browsed at

Some history

As you can see, if you examine the details on the website statistics page the predecessor of HPR started more than 11 years ago as “Today With A Techie”, transforming into “Hacker Public Radio” over 9 years ago.

Started:            11 years, 4 months, 12 days ago (2005-10-10)
Renamed HPR:        9 years, 1 months, 20 days ago (2007-12-31)

In the earlier days the frequency of show release was not the predictable 5 per week, every weekday, that it is now. There were gaps, sometimes of several days, and occasionally shows came out on the weekend. Stability was achieved in October 2012 and there have been no gaps since then!

There are currently 280 hosts who have contributed shows at some point in the history of HPR, and at the time of writing in February 2017 show number 2230 has been released. The number of episodes and hosts will be greater when the episodes from “Today With A Techie” are incorporated into the archive.

The Hacker Public Radio experiment has been very successful over the years, but there is a certain fragility in the way it works.

Long notes

The longer notes for this episode which are available here, talk about the details of the problem facing HPR and go on to suggest some solutions.

Introduction to Model Rocketry - Steve Saner | 2017-03-23

Introduction to Model Rocketry

In this episode I introduce the hobby of model rocketry. I specifically highlight some of the advanced elements of the hobby to show how model rocketry goes from being a fun activity for kids to a serious hobby enjoyed by many adults.


  1. History of model rocketry.
  • Early amateur experimentation with rocketry.
  • G. Harry Stine develops the model rocket motor.
  • Vern Estes develops a way to mass produce motors.
  1. Basic model rocket components and flight.
  • Airframe, nose cone, and fins.
  • The part of the model rocket motor.
  • Recovery mechanism (parachutes and streamers).
  • The launch pad
  • The basic flight profile of a model rocket.
  • Building a typical model rocket kit.
  1. Scratch building your own designs.
  • Using commercial components.
  • Using ordinary materials for rockets.
  • Fabricating components: Lathes, laser cutters, CNC machines, etc.
  • Using CAD and simulation software.
  1. Craftsmanship and scale modeling.

  2. Model rocket competition.
  • Regional, national, and international meets.
  • Events: Altitude, duration, advanced recovery methods, payloads, egglofting.
  1. High power rockets.
  • Large rockets.
  • High altitude rockets.
  • Supersonic rockets
  • Composite motors.
  • Regulations
  • Certification
  • Materials
  1. Complex rocketry.
  • Motor clustering.
  • Staging.
  • Dual deployment.
  1. Electronics
  • Altimeters
  • Flight computers
  • Tracking
  • Cameras
  1. Experimental motors.

  2. National associations.
  • National Association of Rocketry (NAR).
  • Tripoli Rocketry Association (TRA).
  • Safety codes.
  • Liability insurance.
  • Local clubs.
  1. Safety.

  2. A little about my personal interests in model rocketry.


The following is a non-exhaustive list of companies that manufacture and/or sell model rocket kits and suplies. I've primary listed those that I'm most familiar with. There are certainly others.

These are some of the major manufactures of high power composite motors.

These are the two United States national model rocketry associations.

Resource for competition rocketry.

Here are a number of other interesting links


In the show I said that G. Harry Stine worked at the White Sands Missile Base. The correct name for that facility is White Sands Missile Range. But, during the time that Stine worked there, it would have been called the White Sands Proving Ground.

How to make and use a stencil - @einebiene | 2017-03-22

To make a stencil you need

  • a motif
  • thick foil/cardboard/metal sheet
  • sharp knife/scalpel

To use a stencil:

  • stencil
  • tape
  • paint
  • sponge/spray can
  • a surface to put it on
  1. Find a motif or make your own
  2. Copy/print motif on thick foil
  3. Cut out the black parts carefully
  4. Tape stencil to surface
  5. Apply paint with sponge
  6. Carefully take off stencil
  7. Tadaaaaaaa


HPR New Year show episode 6 - Various Hosts | 2017-03-21

HPR new years eve show episode 6

HPR New Year show episode 5 - Various Hosts | 2017-03-20

HPR new years eve show episode 5

HPR New Year show episode 4 - Various Hosts | 2017-03-17

HPR new years eve show episode 4

HPR New Year show episode 3 - Various Hosts | 2017-03-16

HPR new years eve show episode 3

  • Carrie Fisher
  • voting / politics
  • heritages
  • Wikipedia for news
  • pizza gate
  • why we love Linux
  • text editors
  • forum fun
  • coffee is great
  • making money with free software
  • free software in the workplace
  • Single board computers

HPR New Year show episode 2 - Various Hosts | 2017-03-15

HPR new years eve show episode 2

HPR New Year show 1 - Various Hosts | 2017-03-14

HPR new years eve show episode 1

  • FiftyOneFifty’s home network
  • FiftyOneFifty talks guns
  • Reg A talks about his early days of computing
  • Caganer nativity scenes:
  • The US Air Force
  • booze food and cpap machines
  • earliest memories
  • discuss our early days of computing
  • knightwise and mobile computing
  • drw’s early days of computing and linux

My Custom RSS Comic and Security Feed - operat0r | 2017-03-13

Managing tags on HPR episodes - 1 - Dave Morriss | 2017-03-10

Managing tags on HPR episodes - 1


We have been collecting and storing tags for new HPR shows for a while now with the intention of eventually offering a search interface. In addition, a number of contributors, including myself have been adding tags (and summaries), to shows that do not have them, since August 2015. There is still a way to go, but we’re making progress. At the time of writing (2017-01-31) 56.29% (1248) of all HPR shows (2217) have tags.

In recent times the way in which we should use these tags has been discussed. In show 2035 on 2016-05-20 droops suggested:

The website, which is a lot of work, needs to have related shows listed on each individual show’s page. This will take a tag system and someone to tag all of the almost uncountable previous episodes.

This episode begins a discussion about some of the ways that tags can be stored, managed and accessed efficiently in the HPR database.

I started planning a show about this subject in the summer of 2016, and the amount of information I have accumulated has grown since then. There is now quite a lot, so I am going to split what was originally going to be one show into three.

The subject becomes quite technical in the later shows, discussing database design techniques, and all three of the shows contain examples of database queries and scripts. If you are not interested in this subject than feel free to skip past. However, you might find this first episode more palatable, and any thoughts you might have on the subject would be appreciated.

Long notes

I have written out a set of longer notes for this episode and these are available here.

building lineageOS - brian | 2017-03-09

i am too ignorant to build for the device that i want.

i mention a dev from xda.

i am running debian sid... also mention arch and the importance of shownotes.

following lineage wiki, i merge the extra commands from a 14.1 device page.

install adb fastboot repo with package manager and you can ignore creating ~/bin, chmod command, and PATH update as these tools were installed by your package manager.

install list given on the wiki of packages...some will not exist... search to find out their names.

cd into the location for your project.

$ mkdir -p ./android/system
$ cd android/system
$ repo init -u -b cm-14.1
$ repo sync
$ repo sync
$ repo sync

successful new 50G on my drive.

$ nano android/system/.repo/local_manifests/roomservice.xml

add the needed lines from the muppets and ignore extracting proprietary blobs.

$ repo sync
$ source build/
$ breakfast spyder
$ export USE_CCACHE=1
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G
$ export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
$ export WITH_SU=true
$ croot
$ brunch spyder

ran 99% and errored... xmllint command not found.

search for and install libxml2-utils.

rerun build and get an out of memory error... go to bed... try tomorrow... shutdown machine.

sift through old information as things have changed regarding file names and such.

$ nano ~/.jack-server/

change jack.server.max-service=4 to 2

start from again.

$ cd $OUT

boot phone to recovery and install

$ adb sideload ./

i remove some apps and install fdroid.

My Quick Tips E01 - operat0r | 2017-03-08

Amateur Radio Round Table - Various Hosts | 2017-03-03

HPR Amateur Radio Round Table

2017-01-27, 0300 UTC


  • cmhobbs KD5RYO
  • Jon KT4KB
  • Steve KD0IJP
  • Michael DL4MGM
  • Tyrel KG5RHT

After a short introduction of the hosts, we start discussing the question that came up on the mailinglist:

How do you get started at all? How do you get the license to participate in amateur radio?

Probably the amateur radio organisation in your country will provide the essential information required for obtaining an amateur radio license. Start looking at the International Amateur Radio Union at and track down your country. From there you can search for information about your local area and local groups. In the US, look for the ARRL at

If you do not chose to get involved with the local club before taking the test to get the license, we suggest you do so after that. Local events and clubs can provide the insight into the vast possibilities amateur radio has to offer. This will allow you to chose much better, where your personal interests are and where to start. Radio "nets", are mentioned as a good starting point to actually get "on the air" and to overcome any possible shyness.

Acronyms explained along the way

  • VFO: Variable Frequency Oscillator. The thing behind the main tuning dial to adjust the frequency, an important building block of radio equipment. In modern gear the VFO-mode is the mode where you can continuously change the frequency in certain increments, as opposed to memory mode, where you normally select from a set of fixed frequencies previously stored.
  • CW: Continuous Wave. Used to reference to Morse code telegraphy as an operating mode.
  • VHF: Very High Frequency. Generally this references the frequency range 30 Mhz to 300 MHz. In the context of a radio user, it normally means the sub range in there, that is assigned to the specific use.
  • UHF: Ultra High Frequency. 300 MHz to 3 GHz
  • HF: High Frequency. Range 3 MHz to 30 MHz. Also referenced to as "short wave" frequencies. Several amateur radio "bands" are spread out in that frequency range.

We often reference frequency ranges by wavelength. E.g. the "20m band", which is the frequency allocation for amateur radio at 14 MHz. The connection is: Wavelength = c / frequency, with c being the speed of light. A rule of thumb is: Wavelength [m] = 300 / frequency [MHz]

Hint: The manufacturer Tektronix offers a nice poster with the world wide frequency assignments worked in:

We went on describing a bit where our personal interests in amateur radio are.

Our combined interests cover all the way from Morse code over voice communication to digital modes and "foxhunt" (the radio sport of Amateur Radio Direction Finding). Note that there are many other facets to amateur radio. Even our combined interests are just a small segment of the possible activities within the avocation.

We talk about getting started with just listening to amateur radio traffic on the short wave frequencies.

Why do you need a license, why not just do it?

First, without a license, it is ILLEGAL.

Law makers have acknowledged that one important goal of amateur radio is education and experimentation. We are allowed to modify equipment or even build it completely from scratch and operate it legally on the assigned frequencies. This is a unique privilege that sets amateur radio apart from any other radio users which have to use certified equipment.

We give some amateur related podcast recommendations, among those: Linux in the ham shack ( and HamRadio 360 (

The Next Edition of the Amateur Radio Round Table

Next ham radio round table will be held in about a month, with a time that will be better suited for European time zones. We welcome anyone to participate, whether or not you are a licensed ham. Watch the HPR email list for announcements and details.

making jerky - Jezra | 2017-03-02

  • Slice meat thin and against the grain
  • Season the meat
  • Dehydrate the meat


Do you care? - Curtis Adkins (CPrompt^) | 2017-02-28

CPrompt talks about one of his pet-peeves. The phrase "I could care less"

Hoarding Raspberry Pis - b-yeezi | 2017-02-27

Show Notes

In this episode, I discuss my growing obsession with building a Raspberry Pi data center.

Tower of Pi

Items referenced in this episode:

Hope this was enjoyable, if not, informative!

FOSDEM 2017 K (level 1, group B and C) - Ken Fallon | 2017-02-08

Table of Contents


ReactOS® is a free open source operating system based on the best design principles found in the Windows NT® architecture (Windows versions such as Windows XP, Windows 7, Windows Server 2012 are built on Windows NT architecture). Written completely from scratch, ReactOS is not a Linux based system, and shares none of the UNIX architecture. The main goal of the ReactOS® project is to provide an operating system which is binary compatible with Windows.

Listen to the interview with Colin Finck



Haiku is an open-source operating system that specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful.

Listen to the interview with François Revol



Gentoo is a free operating system based on either Linux or FreeBSD that can be automatically optimized and customized for just about any application or need. Extreme configurability, performance and a top notch user and developer community are all hallmarks of the Gentoo experience.

Listen to the interview with Matthew Thode


CoreOS Linux

Container Linux by CoreOS (formerly CoreOS Linux) is an open-source lightweight operating system based on the Linux kernel and designed for providing infrastructure to clustered deployments, while focusing on automation, ease of application deployment, security, reliability and scalability. As an OS, Container Linux provides only the minimal functionality required for deploying applications inside software containers, together with built-in mechanisms for service discovery and configuration sharing.

Listen to the interview with Brian Redbeard



Debian is a free operating system (OS) for your computer. An operating system is the set of basic programs and utilities that make your computer run.

Listen to the interview with Sebastiaan Couwenberg



PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows. It is fully ACID compliant, has full support for foreign keys, joins, views, triggers, and stored procedures (in multiple languages).

Listen to the interview with Robert Juens



Nextcloud is a suite of client-server software for creating file hosting services and using them. It is functionally very similar to the widely used Dropbox, with the primary functional difference being that Nextcloud is free and open-source, and thereby allowing anyone to install and operate it without charge on a private server. In contrast to proprietary services like Dropbox, the open architecture allows adding additional functionality to the server in form of so-called applications.

Listen to the interview with Frank Karlitschek



Bazel is Google's own build tool, now publicly available in Beta. Bazel has built-in support for building both client and server software, including client applications for both Android and iOS platforms. It also provides an extensible framework that you can use to develop your own build rules.

Listen to the interview with David Stanke


Open Build Service

The Open Build Service (OBS) is a generic system to build and distribute binary packages from sources in an automatic, consistent and reproducible way. You can release packages as well as updates, add-ons, appliances and entire distributions for a wide range of operating systems and hardware architectures.

Listen to the interview with Richard Brown



openQA is an automated test tool for operating systems and the engine at the heart of openSUSE's automated testing initiative.

Listen to the interview with Richard Brown


Free Software Foundation Europe

Free Software Foundation Europe is a charity that empowers users to control technology. Software is deeply involved in all aspects of our lives; and it is important that this technology empowers rather than restricts us. Free Software gives everybody the rights to use, understand, adapt and share software.These rights help support other fundamental freedoms like freedom of speech, press and privacy.

Listen to the interview with Florian Snow



Libre Hosting Provider

Listen to the interview with Thomas Umbach

photo from the booth

photo from the booth


Tor Project

Tor is free software and an open network that helps you defend against traffic analysis, a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security.

Listen to the interview with A Volunteer at the Booth


Tails Project

Tails is a live operating system that you can start on almost any computer from a DVD, USB stick, or SD card. It aims at preserving your privacy and anonymity, and helps you to: use the Internet anonymously and circumvent censorship; all connections to the Internet are forced to go through the Tor network; leave no trace on the computer you are using unless you ask it explicitly; use state-of-the-art cryptographic tools to encrypt your files, emails and instant messaging.

Listen to the interview with A Volunteer at the Booth


Frënn vun der Ënn

Luxembourg based non-profit organization defending civil rights on the internet. We provide high-bandwidth Tor nodes all over the world to protect online privacy, anonymity, freedom of speech and fight censorship!

Listen to the interview with A Volunteer at the Booth


Nos oignons

Nos oignons is a not-for-profit organization created to collect donations in order to run Tor exit nodes. Tor enables users to create anonymous connections and bypass censorship on the Internet. Tor is at the same time a piece of software, a network of relays made of more than 7,000 servers and a project around which fortyish people gravitate.

Listen to the interview with A Volunteer at the Booth


Xen Project

The Xen ProjectTM is the leading open source virtualization platform that is powering some of the largest clouds in production today. Amazon Web Services, Aliyun, Rackspace Public Cloud, Verizon Cloud and many hosting services use Xen Project software. Plus, it is integrated into multiple cloud orchestration projects like OpenStack.

Listen to the interview with Julien Fontanet



Open source software for creating private and public clouds. OpenStack software controls large pools of compute, storage, and networking resources throughout a datacenter, managed through a dashboard or via the OpenStack API. OpenStack works with popular enterprise and open source technologies making it ideal for heterogeneous infrastructure. Hundreds of the world's largest brands rely on OpenStack to run their businesses every day, reducing costs and helping them move faster.

Listen to the interview with Aurélien Joga



oVirt is a virtualization management application used to manage hardware nodes, storage, and network resources, as well as deploying and monitoring virtual machines running in your data center.

Listen to the interview with Yaniv Kaul



Foreman is a complete lifecycle management tool for physical and virtual servers. We give system administrators the power to easily automate repetitive tasks, quickly deploy applications, and proactively manage servers, on-premise or in the cloud.

Listen to the interview with Greg Sutcliffe



GlusterFS is a scalable network filesystem. Using common off-the-shelf hardware, you can create large, distributed storage solutions for media streaming, data analysis, and other data- and bandwidth-intensive tasks. GlusterFS is free and open source software.

Listen to the interview with Mohamed Ashiq Liyazudeen / Kaushal M / Jiffin Tony Thottan



A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms

Listen to the interview with Holger Dyroff


CAcert is a community-driven Certificate Authority that issues certificates to the public at large for free. CAcert's goal is to promote awareness and education on computer security through the use of encryption, specifically by providing cryptographic certificates. These certificates can be used to digitally sign and encrypt email, authenticate and authorize users connecting to websites and secure data transmission over the internet.

Listen to the interview with Eva Stöwe



Der Verein fördert die Wissenschaft, Forschung und Verbraucherberatung. Insbesondere ist Zweck des Vereins die Förderung der Sicherheit im Internet und die Unterstützung von Anwendern bei der Anwendung sicherer Kommunikation.

Listen to the interview with Eva Stöwe


FOSDEM 2017 K (level 1, group A) - Ken Fallon | 2017-02-07

Table of Contents


KDE is an international community that creates Free Software for desktop and portable computing. Among KDE's products are a modern desktop system for Linux and UNIX platforms, and comprehensive office productivity and groupware suites. KDE offers hundreds of software titles in many categories including web applications, multimedia, entertainment, educational, graphics and software development.

Listen to the interview with Jonathan Riddell

photo from the booth

photo from the booth



GNOME 3 is an easy and elegant way to use your computer. It is designed to put you in control and bring freedom to everybody. GNOME 3 is developed by the GNOME community, a diverse, international group of contributors that is supported by an independent, non-profit foundation.

Listen to the interview with Bastian Ilso



LibreOffice is the most widely used free open source office software. It is a community-driven project of The Document Foundation. LibreOffice is developed by professionals and by users, just like you, who believe in the principles of free software and in sharing their work with the world in a non-restrictive way. At the core of these principles is the promise of better-quality, highly-reliable and secure software that gives you greater flexibility at zero cost and no end-user lock-in.

Listen to the interview with Italo Vignoli



Kopano is a thoroughly modern communication stack. It's fully MAPI based server (Core) provides access to email, contacts, calendaring through a web interface (WebApp), on the desktop (DeskApp) and can be used with mobile devices. Integration with online meetings tools based on WebRTC (Web Meetings) and integration with file storage services (Files) provide a complete set of tools to work together.

Listen to the interview with Michael Kromer



CiviCRM is an open source CRM built by a community of contributors and supporters, and coordinated by the Core Team. CiviCRM is web-based software used by a diverse range of organisations, particularly not-for-profit organizations (nonprofts and civic sector organizations). CiviCRM offers a complete feature set out of the box and can integrate with your website.

Listen to the interview with Alain Benbassat


GNU Taler

Taler is an electronic payment system providing the ability to pay anonymously using digital cash. Taler consists of a network protocol definition (using a RESTful API over HTTP), a Mint (which creates digital coins), a Wallet (which allows customers

Listen to the interview with Christian Grothoff


pEp foundation

The Swiss-based PEP foundation that intends to encrypt all digital written communication fully automatically giving "Privacy by Default"

Listen to the interview with Hernâni Matques


FreeBSD Project

FreeBSD is an advanced computer operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

Listen to the interview with Benedict Reuschling



This is the home of the illumos project, the open source fork of Sun's OpenSolaris. Launched in 2010, the project enjoys financial and technical support from several key companies which rely on the illumos kernel as the technological foundation for their own products, as well as the backing of a growing developer community.

Listen to the interview with Hans Rosenfeld



openSUSE, formerly openSUSE Leap 42.1 and openSUSE Tumbleweed, is a international Linux project with different distributions sponsored by SUSE Linux GmbH and other companies. It is widely used throughout the world, particularly in Germany. The focus of its development is creating usable open source tools for software developers and system administrators, while providing user friendly desktops, and a feature rich server environment.

Listen to the interview with Douglas DeMaio



The CentOS Project is a community-driven free software effort focused on delivering a robust open source ecosystem. For users, we offer a consistent manageable platform that suits a wide variety of deployments. For open source communities, we offer a solid, predictable base to build upon, along with extensive resources to build, test, release, and maintain their code.

Listen to the interview with Fabian Arrotin


Fedora Project

Fedora is an operating system based on the Linux kernel, developed by the community-supported Fedora Project and sponsored by Red Hat. Fedora contains software distributed under a free and open-source license and aims to be on the leading edge of such technologies.

Listen to the interview with Justin W. Flory

photo from the booth


Taking apart a tablet - laindir | 2017-02-03

My son's tablet stopped working a few days ago, so I took it apart to see if I could find the problem. I discuss my kit and give a sound seeing tour of the disassembly.

The Musings of a Novice Cable TV Cord Cutter - Reg A | 2017-02-02

I've included various websites of the items I discussed in the podcast.

One thing I didn't mention in my podcast is that to use Roku streaming applications you go to the Roku store via your Roku device or via a computer browser and set up a Roku account. Once you have an account you have downloading access to the apps. Most of these apps are free but most premium service require a monthly fee which can be paid through Roku or the streaming service.

Roku Channel Store:

For apps not in the official Roku Channel Store there is an unofficial Roku Private Channels store. These are applications for Roku devices similar to the Kodi/XBMC plug-ins:


DMCA Wikipedia:

I found a couple of apps in the Roku Private Channels store that can provide me access to ESPN if I wish to use them.

I don't condone piracy so use at your own risk:

General Roku information:

  1. Roku Wikipedia Info:
  2. TCL Roku TVs:
  3. Roku TVs Sold by Amazon:
  4. Roku Boxes:
  5. Amplified TV Antennas Review:,review-2354.html
  6. Indoor Amplified TV Antennas Sold by Amazon:
  7. Cox Communications:

Cool Stuff pt. 5 - Curtis Adkins (CPrompt^) | 2017-02-01

  1. Android App: Opera Mini
  2. Website: CharacterMap
  3. Music: Gilad Hekselman

building a new voice input device - Jezra | 2017-01-31

CHIP computer:

Post about the build:

Now I can get crackin on "How I make beef jerky" :)

Working AO-85 with my son - Christopher M. Hobbs | 2017-01-30

Working AO-85 with my son!

Given all the talk about Amateur Radio on the mailing list, I decided to record a live operation show. In this episode my son and I try to make a contact on AO-85. He eventually loses interest and it's just me yelling into a microphone.

We don't manage to make a successful contact but we do pick up the bird. One person toward the end tried to pull us out of the noise but there were simply too many people utilizing the satellite for us to make contact. Part of that may have been my Doppler shift settings.

Here is the pass data from gPredict (in CST) for this particular attempt:

Pass details for AO-85 (orbit 5478)
Observer: KD5RYO, Siloam Springs, Arkansas
LAT:36.20 LON:-94.48
AOS: 2017/01/16 15:03:52 Local
LOS: 2017/01/16 15:17:45 Local
 Time                  Az      El  Range Footp  Dop   Loss 
 2017/01/16 15:03:52 212.06  -0.00  3075  5738  2194 142.16
 2017/01/16 15:04:33 212.46   2.48  2801  5720  2195 141.35
 2017/01/16 15:05:15 212.94   5.23  2527  5701  2191 140.45
 2017/01/16 15:05:57 213.52   8.35  2254  5682  2179 139.46
 2017/01/16 15:06:38 214.26  11.99  1983  5663  2157 138.35
 2017/01/16 15:07:20 215.23  16.38  1716  5644  2117 137.09
 2017/01/16 15:08:02 216.60  21.92  1455  5624  2048 135.66
 2017/01/16 15:08:43 218.69  29.25  1207  5604  1924 134.03
 2017/01/16 15:09:25 222.35  39.50   979  5584  1692 132.22
 2017/01/16 15:10:07 230.57  54.21   793  5564  1245 130.39
 2017/01/16 15:10:48 261.54  72.25   683  5544   461 129.09
 2017/01/16 15:11:30 347.38  69.68   687  5524  -524 129.14
 2017/01/16 15:12:12  11.72  51.01   804  5503 -1288 130.50
 2017/01/16 15:12:53  18.88  36.54   995  5483 -1720 132.35
 2017/01/16 15:13:35  22.23  26.49  1225  5463 -1946 134.16
 2017/01/16 15:14:17  24.21  19.28  1476  5442 -2069 135.78
 2017/01/16 15:14:58  25.54  13.82  1739  5422 -2139 137.21
 2017/01/16 15:15:40  26.52   9.47  2009  5402 -2180 138.46
 2017/01/16 15:16:22  27.28   5.85  2283  5381 -2204 139.57
 2017/01/16 15:17:03  27.91   2.74  2559  5361 -2218 140.56

Finally, here's AO-85's page on AMSAT:


Upgrading Vehicle Lights From Halogen to LED - Jon Kulp | 2017-01-26

This episode is about the process of upgrading halogen vehicle lights to LED. I did this on my pickup truck for the interior dome light, the brake lights, the third brake light, front and back turn signal lights, the backup lights, and also for the license plate lights. While I'm talking about this process, I also install new LED brake light bulbs on our Honda CR-V. I almost forgot to talk about the necessity of installing resistors to handle the problem of hyperflashing with the blinker lights.

Click on the image below to view the photo album associated with this podcast.

LED Vehicle Light Upgrades


Clay Body - brian | 2017-01-25

Before we create ceramics, we will begin with some basic theory.

Added by HPR Admins after the show was released

meanderings Cyberpunk and the Minidisc - Quvmoh | 2017-01-24

My podcast workflow - Dave Morriss | 2017-01-23

My podcast workflow

I have been listening to podcasts for many years. I started in 2005, when I bought my first MP3 player.

Various podcast downloaders (or podcatchers) have existed over this time, some of which I have tried. Now I use a script based on Bashpodder, which I have built to meet my needs. I also use a database to hold details of the feeds I subscribe to, what episodes have been downloaded, what is on a player to be listened to and what can be deleted. I have written many scripts (in Bash, Perl and Python) to manage all of this, and I will be describing the overall workflow in this episode without going into too much detail.

I was prompted to put together this show by folky’s HPR episode 1992 “How I’m handling my podcast-subscriptions and -listening. Thanks to him for a very interesting episode.

Refer to the full notes for the details:

On Freedom of Speech and Censorship - m1rr0r5h4d35 | 2017-01-20

In this episode, I discuss some of issues that can arise with Freedom of Speech, as well as some of the finer points of what constitutes "censorship".

Calibre eBook Server - Jon Kulp | 2017-01-19

You can share your Calibre ebook library by running the calibre-server daemon, either from your desktop machine or on a server that is available on your local network. (Or, if you have it set up that way, it can be outward-facing to the wide world.)

To share your library from the desktop Calibre application, choose Connect/share from the menu at the top of the window, then choose Start Content Server. Make a note of the IP address and port, and then you can use other devices on your network to access the library at that address. Normally I use the "Get Books" function of the Marvin ebook app on my iPad, or else the "Experimental Browser" on my Kindle and download the books directly to the devices. On my Android phone, I use the Chrome browser and then long press on the link to an Epub file, choose to save to device, and then open it using FBreader.

To share the library from your GNU/Linux server, you'll have to install Calibre on the server and then put a copy of your ebook Library on the server as well. To start and stop the server daemon, you need to put a service startup script in the /etc/init.d directory with all of the other system startup scripts. An example is given below—fill in with the appropriate paths and user data for your setup. (See the calibre-server user manual for a full list of options and their descriptions.) When the script is in place and has executable permissions, you start and stop the service as follows (as root):

service calibre-server start|stop|restart

Service Startup Script


USER=<run_as_user>        # run daemon as this user
LOGIN=<end_user_username> # to log into library (optional)
PW=<password>             # to log into library (optional)

start() {
        echo "Starting Calibre server..."
        su -c "calibre-server --with-library=\"$CALIBRE_LIBRARY_PATH\" --username=$LOGIN --password=$PW -p $PORT --pidfile=$PIDFILE --daemonize" & 
        if [ $? -ne 0 ]; then
                echo "Could not start calibre-server."

stop() {
        echo "Stopping Calibre server..."
        if [ -e $PIDFILE ]; then
                read PID < $PIDFILE
                ps aux | grep "$PID" | grep 'calibre-server' > /dev/null
                if [ $RUNNING -eq 0 ]; then
                        kill $PID
                        if [ $? -eq 0 ]; then
                                rm $PIDFILE
                        echo "Could not find a calibre-server process with PID $PID."
                echo "Could not find pidfile: $PIDFILE"

restart() {

status() {
        if [ -e $PIDFILE ]; then
                read PID < $PIDFILE
                echo "calibre-server is running with PID $PID."
                echo "calibre-server is not running."

unknown() {
        echo "Unrecognized command: $1"
        echo "Try one of the following: (start|stop|restart|status)"

case $1 in
        start ) 
        stop )
        restart )
        status )
        * )


  • Calibre ebook Management Software
  • Marvin ebook app for iOS
  • FBreader open-source multi-platform ebook reader.

Kayak Camping - droops | 2017-01-18

I talk about my setup for camping out of my kayak and ways to do this for very little money using stuff you already have and getting good cheap gear.

Getting out into nature is my favorite thing and I love going where I will not see others for days at a time.

NATO phonetic alphabet - Hannah, of Terra, of Sol | 2017-01-17

NATO phonetic alphabet in block diagram:

[ English 26 letter alphabet ] --> [ Phonetic Function Box-machine-phone ] --> [ Output ]

A - Alfa
B - Bravo
C - Charlie
D - Delta
E - Echo
F - Foxtrot
G - Golf
H - Hotel
I - India
J - Juliett
K - Kilo
L - Lima
M - Mike
N - November
O - Oscar
P - Papa
Q - Quebec
R - Romeo
S - Sierra
T - Tango
U - Uniform
V - Victor
W - Whiskey
X - X-Ray
Y - Yankee
Z - Zulu
~ - ~
0 - Zero
1 - One
2 - Two
3 - Three
4 - Four
5 - Five
6 - Six
7 - Seven
8 - Eight
9 - Niner

Mike India Charlie Romeo Oscar Bravo Echo FULL-STOP Tango Victor

Charlie Oscar November Golf Romeo Echo Sierra Sierra India Oscar November Alfa Lima Delta India Siera Hotel FULL-STOP Charlie Oscar Mike

X-Ray BREAK Mike India November Uniform Sierra BREAK Oscar November Echo

Hotel Alfa Charlie Kilo Echo Romeo BREAK Papa Uniform Bravo Lima India Charlie BREAK Romeo Alfa Delta India Oscar

Please take care, TTFN, neighbor.


Quick Tips Roomba and silicone Packets - operat0r | 2017-01-13

  • First bit is about Roomba and keeping them clean and happy!
  • 2nd bit is about reusing Silicone Packets by baking them in the toaster oven!

MASSCAN - operat0r | 2017-01-12

I chat about my issues with our vuln scanner and destroy the discovery scan times from 5-8 days to 1hr with Masscan.

masscan   -p21,22,23,25,53,80,88,110,111,113,135,139,143,220,264,389,443,445,449,524,585,636,993,995,1433,1521,1723,3306,3389,5900,8080    --rate=14114 --open --excludefile BLACKLIST --ping -oX  172.xml

NOT SO SMART - operat0r | 2017-01-11

(tracer32.exe) and LogExpert regex (warn|\berr|fail|unabl|can|not|fault)

rsync --info=progress2 ( need to compile from source ... )
grub-install --force --removable --boot-directory=/s/boot /dev/sdd

grub-mkconfig -o /s/boot/grub.cfg

boot.ini ?!?!? ..( never could figure out how to boot my windows XP part from GRUB ...thought this would help with no luck )

multi(0)disk(0)rdisk(0)partition(2)\WINXP="Microsoft Windows XP Professional"
multi(0)disk(0)rdisk(1)partition(2)\WINXP="Microsoft Windows XP Professional"
multi(0)disk(0)rdisk(2)partition(2)\WINXP="Microsoft Windows XP Professional"
multi(0)disk(0)rdisk(3)partition(2)\WINXP="Microsoft Windows XP Professional"
multi(0)disk(0)rdisk(4)partition(2)\WINXP="Microsoft Windows XP Professional"
tune2fs -c 1 ( check drives on boot )

Linux provides other I/O schedulers such as the Noop scheduler, the Anticipatory scheduler and the Deadline scheduler.

Dec 31 14:59:46 plexserver console-kit-daemon[1463]: missing action
Dec 31 15:01:45 plexserver smartd[1038]: Device: /dev/sda [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 113 to 112
Dec 31 15:01:45 plexserver smartd[1038]: Device: /dev/sdc [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 112 to 111

40-50C range are optimal.

Makers on YouTube - Dave Morriss | 2017-01-10

Makers on YouTube


I have always enjoyed making stuff. I was born and brought up in the 1940’s and 1950’s when the UK was recovering from WW2, and in my experience everyone I knew repaired and made stuff. Most of them grew their own food as well.

I have never been particularly good at making stuff, but I have built some basic furniture, built storage solutions for the house, built a rabbit hutch and run for my children’s pets, and so on and so forth.

In high school, even though I went to a Grammar School, all boys attended mandatory lessons on metalwork and woodwork. We learnt how to use hand tools and some power tools, make joints in wood, we also learnt to do basic metal work like soldering and brazing, and so forth.

Learning this stuff at school was great but I have used the woodworking techniques more than the metalwork - other than soldering.

I stopped watching TV in 2013, preferring reading and listening to podcasts. In recent times I have subscribed to a number of YouTube channels which share woodworking and metalworking techniques and projects. In general these people are Makers and Artists who can turn their hands to many skills. I thought I would share some of my favourites via HPR.

Long notes

I have written out a moderately long set of notes for this episode and these are available here

Matthew "Lord Drachenblut" Williams - HPR Volunteers | 2017-01-09

Eulogies for Lord Drachenblut, including:

  • Klaatu
  • Randy Noseworthy
  • ClaudioM
  • Brian Proffitt (writing for Fedora Project)
  • Ahuka
  • Joe C. Hecht (ref: google+)
  • Lostnbronx
  • Knightwise

Incidental music by Severed Fifth

Episode one of the future of free software series - spaceman | 2017-01-06

Spaceman introduces a series on the future of free software as he sees it.

The full series is available on my hidden service: http://qzc3ou3vccr3yjyg.onion/free-software-podcasts/the-future-of-free-software/

You can access the site using the Tor Browser available here

Replacing the Throttle Position Sensor on My Truck - Jon Kulp | 2017-01-05

When the "check engine" light came on in my truck again, it turned out to be the throttle position sensor just like when I very first bought the truck about a year-and-a-half ago. That time, I was able to fix it by spraying contact cleaner on it, but this time that didn't work. I ordered a new part. In this episode I talk while I replace the part and I also talk about the nifty diagnostic tool that I used to get the trouble code and how it sends the information to your smartphone.

Throttle Position Sensor Pics

What you can gather with the torque diagnostic tool for Android:

  • View live OBD engine data on your Android phone - Connect to your vehicle ECU
  • Fully customisable dashboard screens - Design your own layouts and custom dials, use your own themes
  • Retrieve Fault Codes (DTCs) and clear Check Engine lights - View fault descriptions using the built-in databases
  • Upload live OBD2 data to your webserver or the torque web viewer in realtime
  • Check the performance of your vehicle with BHP / Torque / 0-60 & Quarter Mile widgets


How awesome is Guix and why will it take over the world - clacke | 2017-01-04

I heard a "holy crap" somewhere in there, so I guess this show is explicit. That's about the level you can expect. :-)

I recorded this together with over a year ago, on 2015-12-01. I told him I was hoping to get it out in time for FOSDEM. I didn't clarify which FOSDEM. :-D

So this thing has been lying around, and I've been polishing it and I've been thinking "man, 90 minutes is a bit rich for an HPR episode, I should edit this thing at some point". Procrastinator strikes again!

Well, that point never came in the course of one year, and HPR needs episodes, so this is what you get. I skipped around in it for QA reasons (audio sync) and I found that I wanted to listen to it again myself, so if your interests are anything like mine, I think it will be able to hold your attention. We had great fun recording it, and now that I've got it out of the gate, maybe I won't be ashamed to ask Chris to record another one about one of the many topics that came up during this show.

In the year since we recorded this, Guix has released versions 0.10.0, 0.11.0 and 0.12.0. It has functioning GNOME (based on Wingo's elogind) and can boot from a LUKS-encrypted drive.

DMD, the Daemon-Managing Daemon that was at the core of GuixSD, is now Shepherd, and still at the core of GuixSD.

Chris's project 8Sync is at version 0.2 and has a real GNU homepage (generated from S-expressions by Haunt!) and Guile 2.2 is closer than ever. 8Sync 0.2 uses some experimental features available in Guile 2.1 snapshots.

Guix and Software Conservancy still need your money (The FSF accepts Bitcoin!), and FOSDEM is still, or again, around the corner. I won't be going there this year, though, due to scheduling conflicts.

On my latest laptop I'm running NixOS and it's running just great. My Guix VM on the other machine is no longer running Enlightenment, now that GNOME is ready. :-)

I haven't fixed clusterssh in either Nix nor Guix, but tmux-cssh works pretty great too!

Someone should still write guix-bisect!

GuixOps has been dormant during 2016, but as late as two months ago there was some slight movement on the mailing list.

Links to various things and people mentioned in the show:

Why you should not say Free Software - Ken Fallon | 2017-01-03

As we all know the word Free has two meanings in the English language. Free of cost and Free from Freedom. So we get the expression "free as in Beer" and "Free as in Freedom" - or Free with a lower or upper F. Having disambiguity in a computer program is bad. So let's translate that problem to computer languages, and I'm going to deliberately pick the C language. So for example were the word "exit" (which is a function), and you wanted to use it as a variable.

set exit = 1;

This leads to problems as the computer can't tell if the references to "exit" the function or is it the "variable".

For that reason the "The GNU C Library Reference Manual" makes it clear that this is not allowed

1.3.3 Reserved Names
The names of all library types, macros, variables and functions that come from the ISO C standard are reserved unconditionally; your program may not redefine these names. All other library names are reserved if your program explicitly includes the header file that defines or declares them. There are several reasons for these restrictions:

Other people reading your code could get very confused if you were using a function named "exit" to do something completely different from what the standard "exit" function does, for example. Preventing this situation helps to make your programs easier to understand and contributes to modularity and maintainability.

It avoids the possibility of a user accidentally redefining a library function that is called by other library functions. If redefinition were allowed, those other functions would not work properly.

This was written by "Sandra Loosemore with Richard M. Stallman, Roland McGrath, Andrew Oram, and Ulrich Drepper for version 2.18".

In terms of the English Language, this results in:

  • segfaults where people just get confused.
  • Buffer overflows, where there is too much information to take in.
  • time outs where the amount of time available to explain has been exceeded.

Now you can get around the problem by prefixing the variable name with a name space, which is very common in XML.

set my:exit = 1;

However that's cumbersome and causes extra cycles to be expended, or abnormal termination of the program. Not many cycles but a few and it adds up over time. The more you use it the more wastage occurs. When you have two Bob's working in a company. You always need to specify if it's "Bob in Accounting" or "Bob in Sales".

It is often pointed out that this is not an issue in other languages, for example Dutch has "Vrij" for freedom and "Gratis" for without cost. However the FSF is a US organisation, in a English speaking area. So we should focus on the fact that the English compiler should have rejected at use of "Free" when it was first proposed because it was obviously disambiguous.

The GNU project was started in 1983 and looking at the software available around then I find it very hard to believe that the concept of "software you pay for" was not widely known.

  • WordStar, "By early 1980, MicroPro claimed in advertisements that 5,000 people had purchased WordStar in eight months"
  • WordPerfect, "The program was originally developed under contract at Brigham Young University for use on a Data General minicomputer in 1979."
  • VisiCalc, "It sold over 700,000 copies in six years"
  • Lotus 1-2-3, "Lotus 1-2-3 was released on 26 January 1983, and immediately overtook Visicalc in sales."

Looking at the archives of the Byte Magazine there are numerous examples where software "Free/free" and proprietary closed software was for sale as far back as 1979. Even the term freeware was coined in 1982 by Andrew Fluegelman.

So it would seem that the word "Free Software" was a bug from the start. Not that there is probably anything we can do about it now but if this bugs you then go over to the FSF and donate. If it doesn't bug you then donate. If you could care less, or indeed if you couldn't care less then also donate.

All you need to know when uploading a show - Ken Fallon | 2016-12-30

It has become clear that not everyone is aware of what the HPR community is, how it's run, and what the policies are. While these policies are valid at the time of recording, they may have been modified by the time you hear this.

As everyone was sick, I had to get a text to speech engine to read it out. See for more information.

The low-down on what's up in the Taiwan Strait. - clacke | 2016-12-29

Wow, my aim was really to be strict about the terminology and always talk about Beijing/PRC or Taipei/ROC, but I noticed that I was saying "China" and "Taiwan" a lot of the time. Lucky I'm not trying to be the President, eh?

I'm sorry it's so long, but on the other hand I think I speak pretty slow, so it's probably pretty amenable to sped-up listening. :-)

Or, you can skip ~27 minutes in to go straight to my overview of the current situation, without the "short" background.

Also, pardon my pronunciation of Chinese names, which is an unpredictable mix of Cantonese, Cantonese-accented Mandarin, Mandarin and English.


World powers cutting up China
(Image license: public domain)

Here's the text from IRC:

China doesn't want Taiwan to be independent because that would be a loss of prestige to China.

There are no technical details about it, it's all about symbolism.

The China thing is a really interesting thing to unpack. First of all, if you ask the traditional ruling party on Taiwan, the KMT or GMD (Guo Min Dang), there is no country called Taiwan. The KMT and the CCP (Chinese Communist Party) agree that there is only one China and Taiwan is simply a province of that China. Where they disagree is whether the true government of the whole is in Beijing or in Taipei. (fun fact: the official capital of the Republic of China (Taiwan) is Nanjing, which is not under ROC control)

Also, some de-facto parts of India and all of Mongolia is officially part of the ROC, according to their Constitution.

Map of ROC claims
(Image license: CC-by-SA, Wikipedia user ZanderSchubert)

If you fly from Beijing, there are domestic flights and "international flights and domestic flights to Hong Kong, Macau and Taiwan".

So the US and UN stance since 1972 is "there is one China, and its government is in Beijing". But at the same time US is giving military support to Taipei, which according to Beijing is an unruly province.

As long as the status quo holds – that Taipei claims to rule all of China and Beijing claims to rule all of China and no outsider that matters challenges that – China (both of them!) is happy. It works, there are extended business relations between the two jurisdictions (most of the electronics made in China are made in factories owned by Taiwanese companies)

Both the CCP and the KMT hope that in the long term, this can gradually creep toward a unification of China. If Taiwan would declare independence, that would mean war.

Now, the current ruling party, the DPP (Democratic Progressive Party) officially support driving toward a Taiwanese rather than a Chinese national identity, and at some point independence. They are being very careful about it though, because they are also aware of how Beijing would react if they went out and did it. Also, while they do control the majority of the Legislative Yuan, there is a significant minority in Taiwan that adhere to a Chinese identity, don't want to upset China, and don't want formal independence. The current quirky situation works, and barriers have been coming down over the years. Relations are abnormal yet normal. On the rhetorical level it's all messed up, in practice you can fly between the island and the mainland, you can conduct business and send post, etc.

When ROC (Republic of China, "Taiwan") and PRC (People's Republic of China, "Mainland China") representatives meet, there are no embassies or consulates involved, because neither acknowledges the other as a country. Neither President will call the other "President", because that would imply they represent a country, rather than a rebel faction inside what the other side considers China.

So when Trump goes on Twitter and says "The President of Taiwan CALLED ME today to wish me congratulations on winning the Presidency. Thank you!" that's a huge scandal in the eyes of Beijing. There is no President of Taiwan, and to imply so is to imply that Taiwan is a country and should be independent.

That's as short as I can make it, but that's the low-down on what's up in the Taiwan Strait.

Further reference (all Wikipedia):

Tangential background (all except one from Wikipedia):

a clean podcast with no swearing - spaceman | 2016-12-28

(replace-regex-in-string "fuck" "rainbows")

Fun with Oscilloscopes - m1rr0r5h4d35 | 2016-12-27

For an example of the effect, here is an example -

Here are some other interesting ideas for oscilloscopes -

Building a Soundboard Android App with App Inventor - droops | 2016-12-26

Building quick Android Apps is simple with App Inventor. Droops walks through how to build a simple soundboard to play fun fart noises. This is a great project that he has done with his kids to bring computer science and computational thinking to the young ones.

gui screenshot

fucking botnets how do they work? - spaceman | 2016-12-23

you can download the files, which includes the video tutorial on my hidden website: http://qzc3ou3vccr3yjyg.onion/software/gs-bot.tar.gz | you need the tor browser to do so

otherwise the video can be found on mediagoblin (minetest quality tho):

Working Amateur Radio Satellites - Christopher M. Hobbs | 2016-12-22


Art Appreciation - brian | 2016-12-21

A nod to Brian in Ohio...

Elements Of Design...

A mention of Dr. Don Bendel...

A note on artist statements...

My cup example is very much stimulated by Pete Pinnell...

Check out his short talk on cups.

(though I wish It were elsewhere besides youtube)

The Toshiba Libretto 100ct - m1rr0r5h4d35 | 2016-12-20

In this episode, I discuss some of the quirks I encountered when setting up my recently acquired Toshiba Libretto 100ct for retro gaming. I cover the hardware specs, a few tips on getting it running while dealing with Win98 woes.

Soldering a Soldering Fan - Ken Fallon | 2016-12-16

In the episodes hpr1037 :: Soldering Part 1 and hpr1047 :: Soldering Part 2: An audio demonstration of soldering, MrX inspired me to get into soldering. It's easy and if audio isn't your thing there is always the SOLDERING IS EASY complete comic book.

For my first project, I soldered a 12v power supply I got for €0 at the recycle shop, to a 12V fan from my old computer tower.

a ugly solder point

The result a ugly solder joint, but a working project.


Data Privacy: Farlands or bust - Bill "NFMZ1" Miller | 2016-12-14

Thanks to everyone for the emails and the opinion on the "Google It" episode.

I received a lot of emails and comments on my first episode. No one stated they disagreed with me on the opinion I was expressing but changed the conversation to be about their own privacy issues they have with Google's practices.

I wasn't dismissing those who feel Google overreaches in the privacy department. I was stating the fact that they are a very successful company DESPITE a lot of Tech writers and podcasters out here stating they aren't. You can argue the privacy points all you want but the fact is all I was stating was they are successful.

So with that said I weigh in on Privacy and how I see it. Disagree? let me know!

People I mentioned in the podcast:

why say GNU/Linux ? - spaceman | 2016-12-13

Stop saying Linux or open source or FOSS or FLOSS !!1!

Install OpenBSD from Linux using Grub - norrist | 2016-12-12

Install OpenBSD from Linux using Grub

Why OpenBSD

Tune in for another episode.

Why install from linux

  • Most VPS providers have images for linux, but not OpenBSD
  • Easier than trying to upload custom image or iso.


  • Start with a distro that uses grub2. I use Centos7
  • grub2 can load OpenBSD kernels.
  • The openbsd installer is a OpenBSD kernel.


  1. Make sure you have console access to the linux VM
  2. Record the Network info for the running linux VM. If not using DHCP, you will need to know the IP, netmask, default route (gateway), and a DNS server.
  3. Download the OpenBSD installation ram disk to /boot

    cd /boot
  4. Reboot
  5. Enter the grub command prompt by pressing c at the grub menu
  6. The grub2 prompt has tab completion which can be helpful.
  7. Type ls to see the available disks
  8. Load the OpenBSD installation ram disk and boot

    grub> set root=(hd0,msdos1)
    grub> kopenbsd /bsd.rd
    grub> boot

The Installation

  • The Installer will ask you several questions
  • The default is almost always what you want. If unsure, just press enter.
  • Look at the FAQ if you get stuck
  • Enter the network settings of the linux VPS
  • When asked "Location of sets", use HTTP

Mail to myself@myfirstemployment, Part 2 of 2 - clacke | 2016-12-09

Continuation of yesterday's hpr2179 :: Mail to myself@myfirstemployment, Part 1.

Follow along with the bullet points here: Mail to myself@myfirstemployment

The original was a comment in Swedish to a question on an evil, centralized, proprietary social network: Kodapor -- Vilket arbetssätt-relaterat tips skulle du ge dig själv ....

Mail to myself@myfirstemployment, Part 1 - clacke | 2016-12-08

Follow along with the bullet points here: Mail to myself@myfirstemployment

The original was a comment in Swedish to a question on an evil, centralized, proprietary social network: Kodapor -- Vilket arbetssätt-relaterat tips skulle du ge dig själv ....

Maybe this should be part of a series "Advice to a Young Hacker"?

Dice Mixer - klaatu | 2016-12-07

Klaatu reviews the Dice Mixer.

Spoiler: it's really amazing and a heck of a lot of fun to put together.

Assembling the device Dice Mixer built

Knowledge Interconnection, the thai express hack - spaceman | 2016-12-06

you can practice programming AFK, and hacking at the same time; doing problem solving on other things can be quite fun; and can seriously enhance your life;

happy hacking;

Kdenlive Part 4 Colour Correction - Geddes | 2016-12-02

Hello again HPR listeners this is Geddes back with Part 4 in the series covering the video editing application KdenLive. This time round we’ll be looking at colour correction which covers the following topics:

  • Workflow
  • The human element
  • Luma values
  • Levels
  • Colours
  • Things that look broken
  • Saturation
  • Copying values between clips
  • Colour Effects
  • Selective colour correction and rotoscoping

Here’s the link to the original article.

Driving a Blinkt! as an IoT device - Dave Morriss | 2016-11-30

Driving a Blinkt! as an IoT device


I managed to buy a Raspberry Pi Zero when they first came out in December 2015. This was not easy since they were very scarce. I also bought a first-generation case from Pimoroni and some 40-pin headers. With the Zero this header is not pre-installed and it’s necessary to solder it onto the Pi yourself.

I have had various project ideas for this Pi Zero, but had not decided on one until recently. Within the last month or two Pimoroni produced a device called the Blinkt! which has eight APA102 RGB LEDs and attaches to the GPIO header. This costs £5, just a little more than the Zero itself.

My plan was to combine the two and turn them into a status indicator for various things going on that needed my attention.

Long notes

I have written out a moderately long set of notes for this episode and these are available here

hello world - spaceman | 2016-11-28

I love programming, I make a living writing free software. However I am still a programmer without a keyboard. I want to share knowledge that gives us control over our own life. Tools that help us help ourselves.

Two main topics:

  1. computers (of course!)
    • everyday user
    • free software
    • programming
  2. AFK stuff
    • veganism,
    • minimalism,
    • botany,
    • engineering.

Lots of fun, life is interesting

happy hacking

How I connect to the awesome #oggcastplanet on mobile - clacke | 2016-11-24

On HPR #2162 I mentioned that I'm connecting to freenode IRC using Riot and Matrix. Here I explain a bit of background to why, what Matrix is, and why you should use it too.

Quick-quick version

Just go to, click Join and you're on the channel! If you register a user there (or maybe on another instance, like @lambadalambda's, you can then log in with the same username and password in the Android app and see all your joined channels there.

Correction to audio: Riot is on F-Droid. For some reason I couldn't find it at the time, even though it's clearly there, so I'm currently using the version from the Google Play Store. I hear that battery use may be an issue if you're independent from the evil GOOG.


Other ways of connecting to IRC over flaky or intermittent connections without losing context:

  • ZNC
  • In particular, check out this pretty elaborate ZNC-on-ZNC setup to solve the issue with having multiple devices that all want an independent scrollback buffer. I was just about considering setting up something like this when I discovered the Matrix bridge instead.
  • One colleague of mine uses Quassel and loves it.
  • Another colleague uses irssi ConnectBot or something similar and can't understand why anybody would want anything else.


Fodder for further HPR episodes

Analogue Random Number Generation - klaatu | 2016-11-23

Klaatu talks about different ways of coming up with random numbers without electronics.

Discussed: dice, flipping through a book, sequential modulo, shifting tables, and pocketdiceroller.

Google It - Bill "NFMZ1" Miller | 2016-11-22

Discussing some of Google's successes. Lately I have been hearing a lot of flak towards Google and how they are doing everything wrong. So I go down a list of some of their success stories. Disagree? Email me.

How to use a Slide Rule - Dave Morriss | 2016-11-21

How to use a Slide Rule

In my show 1664, “Life and Times of a Geek part 1”, I spoke about using a slide rule as a schoolboy. As a consequence, I was asked if I would do a show on slide rules, and this is it (after a rather long delay).

Long notes

I have written out a moderately long set of notes for this episode and these are available here

Get the most out of your commute with these great audio suggestions. - knightwise | 2016-11-18

The podcast :

Review/Criticism of Hipp's "Git: Just Say No" - clacke | 2016-11-15

Review/Criticism of Hipp's "Git: Just Say No"

I was recommended Richard Hipp – Git: Just Say No ( last night on the excellent #oggcastplanet channel on freenode.

I didn't listen to all of it, but I'm putting this out there with the material I have, because anything else would be procrastination and this is HPR. We Want Shows!

Here are his criticisms, or suggested enhancements, top 10:

  1. Show descendants of a check-in
  2. Simplified mental model
  3. Remember branch history
  4. Multiple check-outs from the same repo
  5. Sliced check-out and clones
  6. Check-out & commit against a remote repo
  7. "Busybox" version of git
  8. All comms via HTTP/HTTPS
  9. "git all" command
  10. "git serve" command

I think the killer of these is #2, the rest are nitpicks or incorrect. And for addressing #2 there is the very interesting gitless report and project, which I'm guessing doesn't abandon git entirely, just reworks the UI, which does need rework. Not for people like me, who already learned the nooks and crannies and make productive use of several of what might be misfeatures, but to lower the threshold for people coming to our software projects and whatever other source code we are managing.


  1. Why? Complete git log and less does the job, even for the oldest git project – git.
  2. YES, see gitless.
  3. Why?
  4. Already works.
  5. Presumably already works, don't know how well.
  6. Why?
  7. (Didn't listen) Why?
  8. (Didn't listen) Why? It has HTTP/HTTPS, but it also has the ssh model, which is great.
  9. Didn't listen.
  10. (Didn't listen) git serve sucks, use gogs.

Fodder for further episodes

  • I'm connecting to freenode through Matrix using Riot, both on web and mobile.
  • Is Matrix a big fat NIH? (hey look, WikiWikiWeb is back online!)
  • Why not just use XMPP?
  • It works great for me, and I didn't have to bother setting up a native IRC bouncer like ZNC or Quassel.
  • The quick-quick version: Just go to and you're in the best IRC web chat available, in the #oggcastplanet channel on freenode.
  • gitless (or gl)
  • Fossil

What's in my freezer? - Inscius | 2016-11-14

A short true tale of what I store in my (small) freezer, mid-October 2016. It is also the first time I record a podcast with a portable recorder.

"American blueberry" "European blueberry" a.k.a. "Bilberry"

Haricot vert a.k.a. green beans



Broad beans

An Audio Illustration Tying the Bowline Knot - David Whitman | 2016-11-11

The following is partial copy from Wikipedia:

"The bowline (/ˈboʊlɪn/ or /ˈboʊlaɪn/)[1] is an ancient and simple knot used to form a fixed loop at the end of a rope. It has the virtues of being both easy to tie and untie; most notably, it is easy to untie after being subjected to a load. The bowline is sometimes referred as King of the knots because of its importance. It is one of the four basic maritime knots (the other three are figure-eight knot, reef knot and clove hitch).

The structure of the bowline is identical to that of the sheet bend, except the bowline forms a loop in one rope and the sheet bend joins two ropes. Along with the sheet bend and the clove hitch, the bowline is often considered one of the most essential knots.[2]

Although generally considered a reliable knot, its main deficiencies are a tendency to work loose when not under load, to slip when pulled sideways[3] and the bight portion of the knot to capsize in certain circumstances.[citation needed] To address these shortcomings, a number of more secure variations of the bowline have been developed for use in safety-critical applications".

Art Club - Brian in Ohio | 2016-11-09

Ohio LinuxFest 2016 - Ahuka | 2016-11-04

Ohio LinuxFest is an annual Linux and Open Source conference held in the fall in Columbus, Ohio, USA. This year it happened on October 7-8, and I was not only an attendee, but a speaker. This program is about my experiences there this year.

Replacing a Bicycle Brake Cable - Jon Kulp | 2016-11-03

Part of my series of fixing stuff and wearing a microphone while I do it, listen along as I replace the brake cable and housing on my bicycle. For information about the tools I'm using, check out my earlier episode about the tools in my bicycle repair toolbox. Check the Flickr photo album below for pictures to go along with the narrative. Sorry I kept sniffling so much. Allergies were terrible. The church bells in the background are from Our Lady of Fatima Church, which is nearby. I remember Dave wondered about the church bells from a previous episode.

Bicycle Brake Cable Replacement


Splitting a Block of Bees Wax - brian | 2016-11-02

I need to cut a block of wax...
I use a heat gun, some string, and a knife...
Also some ramblings about other stuff.

photo fo the bees wax block

What is in my Pentesting Bag? - operat0r | 2016-10-27

Glass cutting bottles - operat0r | 2016-10-25

Daily notes and todo list with markdown - norrist | 2016-10-21

Using Markdown and git to store your todo list and daily journal

Why markdown
  • No distractions
  • Simple syntax
  • Plain text, Human readable.
  • Inline HTML
  • Easy conversion to other formats
Why git
  • Any SCM probably OK
  • Github and Gitlab render markdown.
The todo page
    # TODO

    ### Can do now
    * Bullet 1
    * Bullet 2

    ### Near term
    1. Numbered 1
    1. Numbered 2

    ### Long term
The journal script
    DAILYFILE="/Users/norrist/Projects/todo/daily/$(/bin/date +%F).md"

    if [ -f $LOCKFILE ]
            echo "$LOCKFILE PRESENT - ABORTING"
            read -n1 -p "Remove and Continue? [y,n]" doit
                case $doit in
                    y|Y) echo "Continuing with $LOCKFILE PRESENT" ;;
                    *) exit 1 ;;

            echo "NO LOKCFILE"
            touch $LOCKFILE


    if [ -f $DAILYFILE ]
            echo "$DAILYFILE exists"
            echo  >> $DAILYFILE
            echo  "-----">> $DAILYFILE
            echo "# $(/bin/date +%F)" >> $DAILYFILE
            echo  >> $DAILYFILE
            echo "### Projects" >> $DAILYFILE
            echo  >> $DAILYFILE
            echo "### Tickets" >> $DAILYFILE
            echo  >> $DAILYFILE
            echo "### Walkups" >> $DAILYFILE

    /usr/local/bin/edit -w --new-window $DAILYFILE
    /opt/local/bin/aspell -c $DAILYFILE
    /opt/local/bin/aspell -c $TODOFILE

    rm $LOCKFILE
    rm $DAILYPATH/


    for f in $(ls  -r $DAILYPATH/2*md)
     do cat $f >> $DAILYPATH/
     echo >>$DAILYPATH/

    cd /Users/norrist/Projects/todo; /usr/bin/git add . && /usr/bin/git commit -m "$(date)" && /usr/bin/git push origin master

Daily file template

    # 2016-08-02


    ### Projects

    ### Tickets

    ### Walkups
aspell is awesome

Book Reviews - m1rr0r5h4d35 | 2016-10-18

It's been a while since I submitted a show due to time constraints. I was actually feeling pretty bad when I recorded the show, so my voice may not be as loud as usual.

The first book I talk about is "Hacker Culture" by Douglas Thomas

The second book is "A History of Modern Computing" by Paul E. Ceruzzi

Make Web Python with Flask - klaatu | 2016-10-17

Klaatu talks about the Python web framework, Flask. Think Ruby-on-Rails but for Python, or a lightweight Django.

Links in this show:

From Org Mode to LaTeX Beamer to PDF - Clinton Roy | 2016-10-13

I have recently been fortunate enough to give a presentation to two conferences, PyCon Australia and Kiwi Pycon, the Australian and New Zealand Python conferences, respectively. I'm not going to give a talk based around the presentation, as it's rather code heavy, and we know that doesn't translate well to an audio medium.

Instead, what I wanted to do, was to talk a little bit about the presentation pipeline that I used to prepare this talk. The input is a plain text file, edited in Emacs, using a mode called Org mode. The intermediate form is a LaTeX file, using the document class Beamer which is designed for presentations that are going to be projected. Beamer is apparently the German word for digital projector. The final output form is a plain PDF.

HPR isn't known for having many Emacs talks, so I should probably explain the idea of modes. Emacs has major modes and minor modes. For every document that you're editing there's one major mode, and any number of minor modes. So if I was editing a Python file for example, I would have the Python major mode which understands Python and can thus do Python specific things like Python code completion, and I would have a spell checker minor mode to check the spelling of comments, and another minor mode to automatically line wrap comment lines that are very long, and another minor mode to show what line number I'm currently editing, and another minor mode to blink the cursor and so on.

The other topic that I haven't heard too much on is LaTeX. LaTex is the venerable typesetting solution for Unix based systems. LaTeX documents have a single document class, and then any number of packages. In the case of my presentation, the document class is Beamer, which sets up all the margins and fonts to be good for presentations. Some of the packages I'm using are the symbols package, for arrows and maths symbols, and several graphics packages so I can draw trees in my slides.

I'm fairly comfortable with LaTeX, I could certainly write this presentation directly in LaTeX, but I think there are some advantages in using Org mode to generate my LaTeX instead.

As the name suggests, Org mode is designed to be an organisational mode, helping you write TODO lists and organise documents. While the document is just a plain text document that you can read and write with any text editor, the Emacs Org mode understands its own mark up and provides an outlining mode, where you can hide and expand trees of bullet points. The basic layout of a set of slides for a presentation is a tree of bullet points, where the top level bullet points are slides, and the second level of bullet points are lists of information put into each slide.

Another mark up that Org mode understands is that of code blocks, so that we can easily say ``this chunk of code is a Python block''. Org mode understands how to export this Python code block as a separate file, run it under Python, and can even insert the output of the program, or the result of a function, back into the original document as a code output block.

The advantage of having just one file for my presentation, versus one file for my presentation and a separate file for each code block, is that the code examples in my presentation never get out of sync with the code that I'm actually running. This style of programming where the documentation is the primary document, and the code files are generated, secondary documents, is the inverse of the typical way of programming where the code documents are the primary documents, and documentation, the secondary documents, are automatically generated.

This style of programming, where the primary document is documentation is called literate programming. The process of creating the documentation (the PDF in my case) is called weaving. The process of creating the code files is called tangling.

I really like having just one file to generate one PDF presentation file, so I'm going to keep using this technique in the future.

Now, I have to admit that my presentation is not completely literate, there are some bits of output in my presentation that are copied and pasted, rather than automatically gathered, so I've still got some work to do.

Down to brass tacks. The conventional file name extension for Org mode files is dot org. The typical metadata you put in presentations are Author, Email, and Title. In mine I've also added Subtitle and Institute. Now, the interesting one here is Institute, for whatever reason, it's not a piece of metadata that Org mode knows about, but it's really easy to drop down into LaTeX and just use the LaTeX institute command directly.

There's a metadata line that Org understands called Options, I request that my presentation has a table of contents, and that all the bullet points of level two become line items in that table of contents. Then I'm straight into the slides. Bullet points at the first level are converted to sections, bullet points at the second level are turned into slides, and anything deeper than that are turned into contents of that slide. I have many code blocks, and I use options that specify what file this code block is tangled to, and to leave the white space alone when the code block is exported, as white space is critical to Python. I also turn on an option that gets line numbers printed for the code blocks. In a couple of places where I want to highlight certain areas of the code, I add labels to the code, then outside the code block I can refer to the label, and LaTeX will replace this with the line number. I think I'd prefer to do this referencing with highlighting, or an arrow or something, but I'm not sure I can do that.

Engineering is the process of dealing with tradeoffs to get something done, there are many trade offs when writing code to solve a problem, writing code for slides has quite a different set of tradeoffs, you want code to be easy to read, in terms of using long variable names, but you also need code blocks to contain as few lines as possible, so that you can use a large font size on the projector, and you also don't want to have to split an example across multiple slides if you can help it. I'm also of the view that syntax highlighting is a waste of time, it's just a pretty layer of obfuscation that the mind has to understand, then drop in order to actually see the code. This stance of mine was vindicated when several presenters with syntax highlighted code realised on the day that the projected code was impossible to read due to the low contrast projectors used in a reasonably well lit room.

One feature that I would like to add is the ability to reveal new code. It's quite common to have a code block, reveal a problem with it, and display the same code block again, but with a minor change that fixes the previously explained problem. Ideally the old code and new code would be rendered differently, but I don't think that's an option right now. The other thing that I couldn't work out was how to run custom programs on my code blocks, I was wanting to run the Python unit test program, not the Python interpreter, and could not find a way to do that.

There's a single command to run inside Emacs to create the output PDF, M-x org-beamer-export-as-pdf.

So, overall, I'm very happy with this pipeline. It lets me have a primary document with code snippets, and it lets me have LaTeX snippets wherever I like. It's not perfect, but I'm hoping to find ways to improve it.

Hack the Box with Bandit - NYbill | 2016-10-12

NYbill talks about a Linux ‘War Game’ called Bandit.

Pause All The Things, Sega Genesis - sigflup | 2016-10-11

Correction, the microcontroller would have to watch the vertical sync, I misspoke.

Pausing the Sega Genesis

Shutdown Sequence Systemd - klaatu | 2016-10-06

Set up a service to trigger FIRST (this would be the shutdown service):

# cat /lib/systemd/system/fakehalt.service

Description=Fake-Halt Service

ExecStart=/usr/local/bin/ #this will fail until fakevm succeeds

And then set up the one that you want to run and complete BEFORE shutdown is permitted:

# cat /lib/systemd/system/fakevm.service
Description=Fake Service


Create a script to represent the VM shutdown (or any process that you cannot anticipate the duration of)

# cat /usr/local/bin/

sleep 21
if [ X"$test" = "X1" ]; then
    echo "vm has shut down" > /tmp/fake.test
    exit 0
    exit 1

And a script to pass for a shutdown signal:

# cat /usr/local/bin/

sleep 3
cat /tmp/vmfake.test > /tmp/haltfake.test

Start the service you want to happen AFTER the first one:

# systemctl start fakehalt

What "should" happen is that fakehalt will fail to find a file called /tmp/fake.test to cat from, and so everything should go horribly wrong.

What actually happens is that systemd places fakehalt service on hold until it gets an exit 0 signal from the fake service. So if you wait 21 seconds and cat /tmp/fakehalt.test, you see that the cat from a file that did not exist when fakehalt was started - actually succeeded.

Compression technology part 1 - The Bishop | 2016-10-05

Fax (short for facsimile), sometimes called telecopying or telefax (the latter short for telefacsimile), is the telephonic transmission of scanned printed material (both text and images), normally to a telephone number connected to a printer or other output device. The original document is scanned with a fax machine (or a telecopier), which processes the contents (text or images) as a single fixed graphic image, converting it into a bitmap, and then transmitting it through the telephone system in the form of audio-frequency tones. The receiving fax machine interprets the tones and reconstructs the image, printing a paper copy.[1] Early systems used direct conversions of image darkness to audio tone in a continuous or analog manner. Since the 1980s, most machines modulate the transmitted audio frequencies using a digital representation of the page which is compressed to quickly transmit areas which are all-white or all-black.

Run-length encoding (RLE) is a very simple form of lossless data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. This is most useful on data that contains many such runs. Consider, for example, simple graphic images such as icons, line drawings, and animations. It is not useful with files that don't have many runs as it could greatly increase the file size.

RLE may also be used to refer to an early graphics file format supported by CompuServe for compressing black and white images, but was widely supplanted by their later Graphics Interchange Format. RLE also refers to a little-used image format in Windows 3.x, with the extension rle, which is a Run Length Encoded Bitmap, used to compress the Windows 3.x startup screen.

Typical applications of this encoding are when the source information comprises long substrings of the same character or binary digit.

Various glass bottle cutting methods - operat0r | 2016-09-28

This episode describes various methods of glass bottle cutting and my experience

Tabletop Gaming - klaatu | 2016-09-27

Klaatu ponders analogue programming and tabletop gaming.

My new (old) tablet - Alpha32 | 2016-09-26

It took a while, but I finally figured out how to install custom recovery and flash a new OS on my $1 tablet.

Repairing a Cloth Shopping Bag with a Sewing Machine - Jon Kulp | 2016-09-22

In this episode I repair one of the straps/handles of a cloth shopping bag. I talk about using a sewing machine, about those dreadful bobbins, and about sewing a Halloween costume one time. I actually cut out about four or five minutes of near silence from when I was trying to get the thread to go through the needle. That's getting much harder to do as I get older. See the Pictures too.

Shopping Bag Repair

WEBDUMP wmap EyeWitness phantomjs selenium - operat0r | 2016-09-16

What is App Inventor? - Nacho Jordi | 2016-09-14


App Inventor for Android is an open-source web application originally provided by Google, and now maintained by the Massachusetts Institute of Technology (MIT).

It allows newcomers to computer programming to create software applications for the Android operating system (OS). It uses a graphical interface, very similar to Scratch and the StarLogo TNG user interface, which allows users to drag-and-drop visual objects to create an application that can run on Android devices. In creating App Inventor, Google drew upon significant prior research in educational computing, as well as work done within Google on online development environments.

Duffer Gardening - Dave Morriss | 2016-09-12

Duffer Gardening

In August I was invited on the Duffercast podcast as a guest.

While waiting for all of the participants to arrive, inscius (Mikael) in Sweden, chalkahlom (Gavin) in Hungary and myself in Edinburgh, Scotland, decided to record a show for HPR, since we were using Mumble. Because two of the participants are gardeners we chatted about gardening.

This show is the result.

More about The Duffercast may be found at

Thanks also to The Bugcast for the use of their Mumble server!

Note: The Calendula that Mikael mentioned is more commonly known as a Marigold

sqlite and bash - norrist | 2016-09-07


0 3 * * 0 /bin/du -m /data/ > /home/USER/du_files/"du_$(/bin/date +\%Y\%m\%d)"


cd ~/du_files
TODAYS_FILE="du_$(/usr/bin/date +%Y%m%d)"
YESTERDAYS_FILE="du_$(/usr/bin/date --date="7 days ago" +%Y%m%d)"
/usr/bin/echo "create table old (oldsize integer, path varchar);" > delta.sql
/usr/bin/echo "create table new (newsize integer, path varchar);" >> delta.sql
/usr/bin/echo '.separator "\t" ' >> delta.sql
/usr/bin/echo ".import $TODAYS_FILE new" >> delta.sql
/usr/bin/echo ".import $YESTERDAYS_FILE old" >> delta.sql
/usr/bin/echo ".mode csv" >> delta.sql
/usr/bin/echo ".headers on" >> delta.sql
/usr/bin/echo ".out deltas.csv" >> delta.sql
/usr/bin/echo "select *,newsize-oldsize as delta_in_megabytes from old natural join new where oldsize<newsize order by delta_in_megabytes desc;" >> delta.sql

/usr/bin/sqlite3 < delta.sql

echo $YESTERDAYS_FILE|/usr/bin/mailx -a deltas.csv -s deltas.csv

Resulting SQL

create table old (oldsize integer, path varchar);
create table new (newsize integer, path varchar);
.separator "\t"
.import du_20160821 new
.import du_20160814 old
.mode csv
.headers on
.out deltas.csv
select *,newsize-oldsize as delta_in_megabytes
from old    natural join new    where oldsize<newsize
order by delta_in_megabytes desc;

My old home server - MrX | 2016-09-06

Overhauling a Bicycle Hub - Jon Kulp | 2016-09-02

I record and talk while overhauling the rear hub of my 1985 Schwinn road bike. I wasn’t able to take pictures because my hands were really greasy, so if this interests you and you want to see how it’s done, search the web or YouTube for instructional materials. This episode was recorded on my phone with the $2 lapel microphone, uploaded straight to the HPR website. Easy!

Hacking my inner ear - Dave Morriss | 2016-09-01

Hacking my inner ear

In April 2015 I suddenly found myself getting dizzy as I bent down – to the extent where I actually fell over at one point. I went to see a doctor but didn’t get a diagnosis.

A medical student I know suggested it might be BPPV - Benign Paroxysmal Positional Vertigo, and with that in mind I researched it and found what turned out to be a cure.

See the full notes for more details:

Changing the Oil on My Wife's Car - Jon Kulp | 2016-08-31

Since people don’t seem to be adding enough shows, you’re going to be subjected to listening along while I change the oil on the car. This might be fascinating or it might be boring, but in either case I hope it inspires someone else to start uploading more shows. Incidentally, I recorded this whole thing on my phone, I’m doing these show notes on my phone, and am going to upload it from my phone as well, without adding the intro and outro music, showing just how easy it really is (as the saying goes).

Makefiles for Everyday Use - Jon Kulp | 2016-08-30

In this episode I talk about how I use Makefiles to ease the process of building complicated projects in Lilypond and HTML. You can use Makefiles to run any kinds of commands you want. It does not have to be building actual computer programs. In my case I use them to build musical scores and web pages. Keep in mind I'm not an expert on this, and I'm hoping I will make enough mistakes that it will prompt a series of follow-up episodes by people who actually know what they're talking about.

Here's an example. This is the Makefile for my Counterpoint workbook Gratis ad Parnassum, which I wrote in 2009. Written in a combination of LaTeX and Lilypond, this requires very complicated and long commands to build the workbook, and I found that the only way to do this project in a sane manner was to create a Makefile that would keep track of changes in the files and only rebuild when necessary. It also meant that the only commands I would have to type were very simple, because the long command line options were all stored in the Makefile.

LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
PDF=cd $(OUTDIR) && pdflatex $(FILE)
HTML=cd $(WEBDIR) && latex2html $(FILE)
INDEX=cd $(OUTDIR) && makeindex $(FILE)
PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf >& /dev/null

all: pdf web


cp -R $(WEBDIR)/$(FILE)/ ./
sleep 1
$(BROWSER) $(FILE)/index.html &

keep: pdf
cp $(OUTDIR)/$(FILE).pdf gratis.pdf
pdftk gratis.pdf update_info output GratisAdParnassum.pdf

rm -rf $(OUTDIR)

rm -rf $(WEBDIR)

tar -cvvf free-counterpoint.tar \
--exclude=out/* \
--exclude=*.tar \
--exclude=*.zip \
--exclude=htmlout/* \
--exclude=workbook_main/* \
--exclude=*midi \
--exclude=*pdf \
--exclude=*~ \
tar -xvvf free-counterpoint.tar
zip -r FreeCounterpoint
rm -R FreeCounterpoint

And here is the Makefile for my song collection called Canciones para niños, using Lilypond source files.

piece = lorca
#CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
LILY_CMD = lilypond -ddelete-intermediate-files \
                    -dno-point-and-click #-djob-count=$(CPU_CORES)

notes = \
cancioncilla.ily \
cantada.ily \
caracola.ily \
china.ily \
lagarto.ily \
nana.ily \
paisaje.ily \

.SUFFIXES: .ly .ily .pdf .midi

#CURDIR = $(shell pwd)
VPATH = $(CURDIR)/Scores $(CURDIR)/PDF $(CURDIR)/Parts $(CURDIR)/Notes %.ily
%.pdf %.midi: 
$(LILY_CMD) $<
mv *.pdf PDF/
mv *.midi MIDI/

$(piece).pdf: $(notes) 

cancioncilla.pdf: cancioncilla.ily
cantada.pdf: cantada.ily
caracola.pdf: caracola.ily
china.pdf: china.ily
lagarto.pdf: lagarto.ily
nana.pdf: nana.ily
paisaje.pdf: paisaje.ily
remanso.pdf: remanso.ily

.PHONY: score
score: $(piece).pdf

keep: score
cp $(CURDIR)/PDF/$(piece).pdf $(CURDIR)/CancionesParaNinos.pdf

tar -cvvf lorca.tar \
--exclude=*.pdf \
--exclude=*.midi \
--exclude=*~ \
tar -xvvf lorca.tar
zip -r Canciones
rm -R Canciones


My Podcast Client - MrX | 2016-08-29

This is a show about my podcast client. Apologies for any rough edges as I did it in a hurry to answer the call for more shows

Basic Audio Production: Reverb - Nacho Jordi | 2016-08-25

Here is the calf reverb plugin, neat and with a nice graphic interface (it contains a few parameters that I don’t cover in the podcast, thought).

You can probably download it too directly from your Package Manager

DIY Book Binding - Ken Fallon | 2016-08-24

I love books, dislike technology when reading about technology, so what to do when the only available option is a pdf or ebook format ?

With a hpr1480 :: Continuous Ink Supply System and 500 pages of A4 paper costing just €3, the option to print out books at home is not only possible but down right affordable. Even more so when when printing booklet format of 4 pages per physical sheet of paper.

Small books of around 100 pages/25 sheets and a long arm stapler works fine, of larger sizes you can get a Comb binding machine but I dislike the sound and feel of these solutions

My solution, a Jig Saw, some wood clamps, PVC Plumbers Glue, and some drywall/plaster board tape (pdf)

Clamping the book and cut in half with a Jig Saw
Clamping the book and cut in half with a Jig Saw.

Clamp both halves together, aligning them together on their uncut edge, and trim the cut edges to give a clean cut
Clamp both halves together, aligning them together on their uncut edge, and trim the cut edges to give a clean cut.

Builders supply stores and DIY shops carry the tape and glue
Builders supply stores and DIY shops carry the tape and glue.

Glue and tape repeatedly and allow to dry
Now apply a liberal amount of glue to the cut edge, apply the tape and let it dry for 30 minutes. Then apply another layer of glue and fold down the excess tape. Apply at least two more applications of glue.

AngularJS's ng-repeat, and the browser that shall not be named - Rho`n | 2016-08-23


At my work, we are in the process of revamping our internal call logging system. Moving from .NET and Microsoft’s ASPX pages for both the client side and back end processing, to an HTML5 based Single Page Application (SPA) using AngularJS for the client side interface with a .NET WebAPI service for the back end processing. The main page for both versions contains a list of the current days calls laid out in a table with 9 columns. Users are able to switch to a specific day’s calls by selecting a date via a calendar widget, or by moving one day at a time via previous and next day buttons. By the end of a typical day, the page will contain between 40 and 50 calls.

During recent testing of the SPA client on the proprietary browser we all love to hate, or at least have a love/hate relationship with if you have to support it, I noticed that rendering of a whole days worth of calls would take seconds, freezing the UI completely. This made changing dates painful. As we reload the data any time you re-enter that page (a manual way to poll for new data until we implement either timer based polling or a push service through websockets), the page was almost unusable. The page rendered fine in both Mozilla and webkit based javascript JIT engines, but Microsoft’s engine would choke on it.

After a bit of searching on “AngularJS slow rendering” and “AngularJS optimize”, I found many references about using Angular’s ng-repeat directive when rendering long lists of data (see references below for the main pages I read). I tried a couple of the methods mentioned to optimize the ng-repeat directive. I used the “track by” feature of ng-repeat to use the call’s id as the internal id of the row, so ng-repeat didn’t have to generate a hashed id for each row. I implemented Angular’s one-time binding feature to reduce the number of watches being created (reducing the test day’s number of watches from 1120 to 596), but even these two combined optimizations didn’t have enough effect to render the page in an acceptable amount of time. The next optimization I played with was using ng-repeat with the limitTo filter. This limits the number of items rendered in the list that ng-repeat is looping through. This is particularly useful combined with paging of the data. I set the limitTo option to different values to see how it affected the rendering time. I found that rendering 5 rows was fast and consistent for every day’s worth of data I viewed. From my reading, I knew if I updated the limitTo amount while keeping the array of items the same, ng-repeat would only render any un-rendered items, and not redo the whole limited list.

The Code

<tr ng-repeat="c in results | limitTo:displayRenderSize">

Inside your directive, set an angular.$watch on the list of items to be rendered by ng-repeat. In this example the list is stored in the variable results.

return {
        scope: {
            results: "=",
        link: function (scope, element, attrs) {
            scope.renderSizeIncrement = 5;
            scope.displayRenderSize = scope.renderSizeIncrement;

            scope.$watch('results', function () {
                if (scope.results) {
                    scope.displayRenderSize = scope.renderSizeIncrement;
            scope.updateDisplayRenderSize = function () {
                if (scope.displayRenderSize < scope.results.length) {
                    scope.displayRenderSize += scope.renderSizeIncrement;
                    $timeout(scope.updateDisplayRenderSize, 0);

Any time the results are updated. The displayRenderSize variable is reset to render the default number of items, and the updateDisplayRenderSize function is called. This function calls itself repeatedly via angular’s $timeout service ($timeout is a wrapper for javascript’s setTimeout function). It increments the displayRenderSize variable which is being watched by the limitTo filter of the main ng-repeat. Each time the displayRenderSize variable is incremented, the ng-repeat renders the next set of items. This is repeated until all the items in the list are rendered.

The magic happens because ng-repeat blocks any other javascript, which does not effect angular’s digest path, until it is finished rendering. By calling the updateDisplayRenderSize with a timeout, the function doesn’t get called again until after the next set of items is rendered. Making the $timeout delay 0, sets the function to be called as soon as possible after the ng-repeat digest cycle stops blocking. In this instance, the sum of the rendering time for parts of the list is shorter than the sum of the rendering time for all of the list at one time.


There are a couple small glitches with this solution. Scrolling can be a bit jerky as the chunk sized renders cause a series of micro UI freezes, instead of one big long one. Also, if you don’t have a fixed or 100% percent wide table layout, and you don’t have fixed column sizes, the table layout will dance a little on the screen until the columns have been filled with their largest amounts of data. This is the result of the table layout being re-calculated as more data fills it. That being said, overall, this solution works great. It moved the pause from seconds to under half a second or less—making the page go from unbearable to usable on Microsoft’s latest browser offerings.


[1] AngularJS Performance Tuning for Long Lists; Small Improvements; Tech blog; blog; viewed: 2016-08-09

[2] Optimizing ng-repeat in AngularJS; Fundoo Solutions; blog; viewed: 2016-08-09

[3] AngularJS: My solution to the ng-repeat performance problem; thierry nicola; blog; published: July 24, 2013; viewed: 2016-0809

Re-Enable Copy and Paste in Browsers - Ken Fallon | 2016-08-19

This episode deals with the annoying, and frustrating practice of disabling copy and paste on websites through the use of javascript.

For a detailed explanation of the why please read this excellent article by Nicholas Miller Re-Enable Copy & Paste on Annoying Sites That Block It. In this article Nicholas explains that you can set dom.event.clipboardevents.enabled in Firefox to prevent this.

In Chrome, you are going to need to install extensions to get the same functionality. The following ones worked for me:

Dat Muzak Showz - x1101 | 2016-08-18

Note, starting any of while doing anything else with audio is probably a poor choice. At least in Linux. Because Linux audio is still slightly Lovecraftian.

Tools Thaj suggested:

  • LMMS,
  • Ardour,
  • Qtractor,
  • Fluidsynth,
  • Hydrogen,
  • Luppp,
  • Guitarix,
  • Rackarack

Minimal Music Site? - mattkingusa | 2016-08-17

Project available

A very small responsive website for uploading content. Originally designed primarily for musicians needing an easy interface to share content. Upload files in the admin pages. Automatically saves files in directories and lists content on main pages by date. I'm sure there are many improvements that could be made.

My new love - swift110 | 2016-08-09

Everyday Unix/Linux Tools for data processing - b-yeezi | 2016-08-08

Here are some of the tools I use to process and clean data from all manner of customers:


The detox utility renames files to make them easier to work with. It removes spaces and other such annoyances. It’ll also translate or cleanup Latin-1 (ISO 8859-1) characters encoded in 8-bit ASCII, Unicode characters encoded in UTF-8, and CGI escaped characters.

See other episodes for great sed information. I like to remove DOS end of line and end of file characters:

sed -i 's/
//g' *.txt


sed -i 's/\r//g' *.txt

Command-line tools

  • ack
  • awk
  • detox
  • grep
  • pandoc
  • pdftotext -layout
  • sed
  • unix2dos and dos2unix
  • wget
  • curl

R libraries

  • RCurl
  • XML
  • rvest
  • tm
  • xlsx

Python libraries

Vim tricks

  • buffer searches (:vim /pattern/ ##)
  • Ack plugin
  • bufdo (:bufdo %s/pattern/replace/ge | update)

Other tools

A Docker Dialog - Thaj Sara | 2016-08-05

Thaj and Lyle (x1101) have a discussion about Docker and its use.

Solving a blinkstick python problem - MrX | 2016-08-04

This is a show describing how I solved a problem of using my new Blinkstick Nano in Python, the problem occurred because I inadvertently installed the blinkstick module to the wrong version of Python as I have multiple versions of python installed on my raspberry pi.

A blinkstick is a USB powered device with attached RGB led’s, it can be controlled using a wide range of languages, and supports the Raspberry Pi, Linux, Microsoft Windows & Apple

As a side note I forgot to mention that the blinkstick hardware and software is Open Source

Initially I blindly followed the advice given at which recommended the following commands

sudo apt-get install -y python-pip python2.7-dev
sudo pip install blinkstick
sudo blinkstick --info
blnkstick --add-udev-rule

I discovered that the blinkstick module was not being found when I ran my python script, this turned out to be because I was invoking a different version of python in my script from that which I installed the blinkstick module. I installed the blinkstick module to Python 2.7, my script was running python 3.2

I ran the following commands to rectify the problem

sudo apt-get install -y python3-pip
sudo pip-3.2 install blinkstick
sudo blinkstick --info (Run in my script)
blinkstick --add-udev-rule (Not required 2nd time round)

Here are some links I looked at to get some understanding of what was going on

You can get a list of your installed python modules by first going to the python interpreter by typing python at the command prompt and issuing the following command

>>> help('modules')

You can list your python search path by first going to the interpreter by typing python at the command prompt and issuing the following commands, the search path is the list of system directories that python will search to run things like commands and modules

>>> import sys
>>> sys.path

Magazines I read Part 2 - Tony Hughes AKA TonyH1212 | 2016-08-02

Hi Hacker Public Radio this is Tony Hughes again with the second episode about the magazines I like to read. All of the magazines I’ll be talking of today I read on my Magzter ( Application on my tablet. I have a Magzter Gold subscription which gives me access to literally 100’s of magazines.

  • Vegetarian Times (
    I’m a bit of a foodie and have been a vegetarian for many years, so access to good food magazines is important to me. This is a US publication so not all the advertised products are available in the UK but the articles and recipes are excellent.

  • Feel Good Food (
    A British magazine aimed at Women but non the less still a source of some brilliant recipes for delicious food for food lovers everywhere. Not a veggie magazine but there is usually something of interest. Like most of the food magazines I read I dip into them find recipes I like save them and move on.

Moving on from food to Sci Fi and cult fiction.

I’ve grouped these together as they both deal with this subject. They review the latest books, films, TV, comics and audio recordings for this genre . They also cover classic examples, often examining work from the so called golden age of a particular subject. Along with Total Film magazine ( you will always have access to reviews of the latest films & TV and if they are worth the price of a cinema ticket or space as a series record on your PVR.

Another armchair hobby of mine is archaeology I’ve loved Time Team from the beginning. So my next magazine on Magzter is Archaeology ( this is a bi monthly magazine published in the US, but covering the latest archaeological news from around the world. For someone into my modern technology its interesting to read about what the latest technology was hundreds or even thousands of years ago.

Moving on, one of my other interests over the last 20 years has been motorcycles although I no longer ride I still retain an keen interest so a Bike magazine has to be something I dip into to drool over shiny metal every so often. So I currently have Back Street Heroes ( as a favourite in Magzter and dip into it when I need a shiny metal fix.

Finally a more active hobby of mine is photography so there has to be a photography magazine in this list. Amateur Photographer ( claims to be the worlds oldest weekly photography magazine. It covers all aspect of photography and the equipment you need. From high end Professional stuff to point and shoot cameras, and all the other stuff from bags to flash lights.

Cleaning the Throttle Body on My Pickup Truck - Jon Kulp | 2016-07-28

In this episode I take you along for the ride as I do a little bit of maintenance on my pickup truck. I've been trying to track down the source of of a rough idling problem that sometimes turns into stalling out. I already replaced the fuel filter (did not solve the rough idling problem but probably was due anyway), and here I make an audio recording as I clean the throttle body, which apparently is one of the first things you should do when your vehicle is idling roughly and stalling out. Still not sure if I have totally fixed it but it seems to run OK so at least I did not mess it up any worse.

Throttle body photos for HPR


Basic Audio Production - Equalization - Nacho Jordi | 2016-07-26

The bread and butter of open source audio production:

Fixing my daughter's laptop - Dave Morriss | 2016-07-25

Fixing my daughter’s laptop

My daughter is a student at university and uses her laptop with a headset most of the time. She shares a flat with a friend and they are both studying, so they don’t want to annoy each other with noise.

The headset my daughter uses has a very long cable and earlier this year she tripped over it. The microphone jack was OK, but the headphone jack snapped off at the first ring and the remaining piece was left in the socket.

This episode is about my attempt to remove the broken piece of the jack plug. To find out more about the method I used and how successful it was see the full notes with pictures here.

Note: The Amazon links below are for information. I have no financial involvement with Amazon; these are not Affiliate links.

Kdenlive Part 3: Effects and Transitions - Geddes | 2016-07-22

Hello again HPR listeners this is Geddes back with Part 3 in the series covering the video editing application KdenLive. This time round we’ll be looking at effects and transitions which covers the following topics

  • Layout Mods
  • Fades
  • Dissolves
  • Slides and wipes
  • Chroma Key, aka green screen
  • Composited images and titles

Here’s the link to the original article.

Everyone Loves Some Acid House - sigflup | 2016-07-21

In this episode of hpr sigflup makes some acid house. She uses Technobox2, which simulates the tb-303 and the tr-808

Roland TB-303 and TR-808 and self hosting for friends and family - Christopher M. Hobbs | 2016-07-19

What is is an island of pseudo-freedom. This project was established in order to pursue ideals of Free Software, Free Culture, ethically sourced hardware, self hosting, and sharing with others. Generally it consists of personal content, though some community resources reside here as well.

The name came from an old programming group and was repurposed. I would really like to find a new name!

Similar networks


The network

Set in three physical locations: two in Northwest Arkansas, one (a VPS) in Sweden.

One recycled shuttle rig called “summernight”, one ThinkPenguin nano called “aprilshowers”, and a VPS known as “eremit”. Two or three inaccessible machines for backups and other automation.

Wireless access provided in the model at both US physical locations.


  • Websites
  • Shell accounts
  • DNS
  • wireless access
  • XMPP
  • IRC Bots
  • Git
  • MediaGoblin

Future services

  • Game servers
  • and GNU Social instances
  • mail server
  • PBX with DID lines
  • data service

Events and community

The community is very loosely organized and rarely operates under the name of the network, though we sometimes gather for events in the same location as the machines. In the past we’ve had a cryptoparty and I am trying to organize a FreeDOOM LAN party.

How to host your own services

  1. Acquire a machine, any machine! Could be a junk rig, an old laptop, or a fancy single board computer.
  2. Install your favorite distro or try freedombone/freedom box.
  3. Get a domain name with your favorite registrar.
  4. Get a static IP from your ISP if possible or go with Dynamic DNS
  5. Install Bind or set up your router to manage DNS.
  6. Invite some friends to play on your new server! Maybe have a party!
  7. Set up backup scripts.

What Magazines I read Part 1 - Tony Hughes AKA TonyH1212 | 2016-07-18

Magazines I Read

Hi This is Tony Hughes for Hacker Public Radio, I'm trying to do a show once a month or so and I was thinking of ideas that might be of interest to the listeners out there.

While there are regular shows on 'What's on my pod-catcher' I've never heard one about what magazines that people in the HPR community like to read. With the advent of digital media and subscription services such as Issuu, Magzter, Google Play Newsstand and I'm sure many others which offer both Free and subscription content I'm sure many of you like me have quite a number of magazines you regularly read, and some you dip in to from time to time. So this show is about the Magazines I like to read.

First I'd like to say that to facilitate regularly reading of digital media I feel for me a 10" tablet is the smallest format for comfortable reading (although for those of you with young enough eyesight to be able to read small fonts with no difficulty you may feel different). However my Tablet of choice is the 12" Samsung SM-P900 which I purchased in February 2015. My only gripe with this tablet is I'll probably never get Android 6 on it as it's now over 2 years since original release. While I agree with Apple that the 4:3 screen configuration for reading on a tablet is more user friendly I can not bring myself to spend that kind of money or be tied to the Apple ecosystem.

So what Magazines do I actually read?

  • Linux Voice ( This is a Linux magazine that was set up a couple of years ago by some of the former editorial team from Linux Format after a successful Kick Starter Campaign. Good content for and about Linux and the Linux community and they support the community by distributing 50% of their annual profits back to the Open Source Community after a ballot of readers. They also release issues of the magazine with a creative commons licence 9 months after publication. This is the only magazine I currently have a Paper subscription to (it also comes with a free DRM free PDF copy for subscribers)

  • Linux Format ( Similar in content to Linux Voice but without quite the same community philosophy, but still a very good publication.

  • MicroMart ( This is a more general computer magazine that started in 1985, as a place you could buy and sell computers and components but is now more of a regular weekly magazine format with news, reviews and articles about all things computer and technology related. As I said in my Journey to Linux show this was the Magazine that introduced me to Linux in the late 90's early 00's. They still have a weekly Linux page and regular Raspberry Pi and other Linux related content.

  • MagpPi ( This is the official Monthly magazine of the Raspberry Pi Community and as you will have worked out is focused on all things Raspberry Pi. Lots of Good content including: News, tutorials, and reviews of new peripherals for the Pi, and since being brought in house by the foundation it has a very professional look and feel about it. All the content is provided by members of the Raspberry Pi Community both from inside, and outside the Foundation. You can get a free Creative commons PDF from the website or to support the foundation you can subscribe to both Print and digital copies if you wish to.

  • Full Circle Magazine ( This is a completely community driven magazine for all things related to Ubuntu Linux and its derivatives. They carry news of what is happening in the World of Ubuntu and articles and tutorials of how to use Linux software for both the beginner and more experienced users. This is a Creative Commons and can be downloaded free from the website in both PDF and e-book formats.

  • PCLinuxOS Magazine ( This is another community driven magazine from The PCLinuxOS community and is similar to Full Circle in its content, with the aim of helping users of this distro to get the most out of it they can. Also available as a free Creative Commons PDF download from their website.

Experience With A Neighborhood Cat - brian | 2016-07-14

An old friend comes home...

That Awesome Time I Deleted My Home Directory - sigflup | 2016-07-12

Omg, Sigflup deletes her home directory! Commands in this episode include:

grep -b -a "what you remember" /dev/sd0a > /tmp/log
dd if=/dev/sd0a bs=1 skip=12345 of=/tmp/out count=123456

This is a capture of the program that sigflup recovered. It's a mouth tracker.

Adventures with Jonathan Slocum - David Whitman | 2016-07-08

A 3 layer Birthday Cake

With Frosting

May I suggest that you partake of the layers in this order?

  1. Voyage of the Liberdade by Joshua Slocum
    Find the book at Gutenberg Press
    “Project Gutenberg offers over 50,000 free ebooks: choose among free epub books, free kindle books, download them or read them online.
    We carry high quality ebooks: Our ebooks were previously published by bona fide publishers. We digitized and diligently proofread them with the help of thousands of volunteers.
    No fee or registration is required, but if you find Project Gutenberg useful, we kindly ask you to donate a small amount so we can buy and digitize more books. Other ways to help include digitizing more books, recording audio books, or reporting errors.
    Over 100,000 free ebooks are available through our Partners, Affiliates and Resources”.

    Find the book in all available forms (HTML, EPub, Text, Kindle) at:
    The text file is here:
    First create an espeak of the text file:
    Voyage of the Liberdade by Joshua Slocum
    To create an espeak run this commmand against the text file:

    espeak -f location_text -w output_file_here(.whatever_extension_you_want)

    Or read the book old school

  2. Sailing Alone Around the World by Joshua Slocum (Audio Book read by Alan Chant)

  3. A YouTube Movie that explains more about Captain Slocum.

The Cremation of Sam McGee Robert W. SERVICE (1874 - 1958) Read by Kristin Hughes

Haste - the pastebin alternative - John Duarte | 2016-07-05


A walk through of installing haste as an open source federated alternative.

See the project at

I ran into project this while following John Kulp’s notes on his blather intro.

Installing node.js

Installing via a package manager. See nodejs website for most up-to-date information. Commands given below are just for reference.

RedHat based systems

curl --silent --location | sudo bash -
sudo yum install -y nodejs

Debian based systems

curl --silent --location | sudo bash -
sudo apt-get install -y nodejs

Upgrade npm

npm install npm -g


Take a look at the haste-server project on github

Clone haste-server git repository

git clone
cd haste-server

Choose storage method


  • file system
  • redis
  • memcached

If you will be using the file system storage method, delete storage section in config.js using your favorite text editor.


npm install
npm start &

Use server

You can now browse to your new haste-server at the server name or ip at port 7777. Follow the icon links on the page for usage.


Using shell to add content

Create a bash alias to pipe files to the haste file server.

Add the following to your .bashrc file:

haste() { a=$(cat); curl -X POST -s -d "$a" $HASTE_SERVER/documents | awk -v server="$HASTE_SERVER" -F '"' '{print server"/"$4}'; }


Test-Driving Devuan - Frank Bell | 2016-06-30

Frank Bell takes the Devuan Beta for a test drive and finds it accelerates smoothly, corners nicely, and rides comfortably.


Now The Chips Are Definitely Down - MrX | 2016-06-28

I’d like to start by apologising for the rather fast and excited speaking style of this show particularly towards the end, hope it doesn’t spoil the content too much, it was all done in rather a hurry.

In this show I describe a thought provoking documentary I stumbled upon from 1977, the documentary is about the the silicon chip and explores the far reaching implications it will have on society.

The title for the original documentary was “Now the chips are down”.

I came up with the altered title “Now the chips are definitely down” to signify that not only have the changes already happened but that it’s also had a massive cost reduction impact as my newly purchased piece of equipment demonstrates.

The new piece of equipment that I bought only became so affordable because of the great advances and massive reductions in cost over time. A similar piece of equipment cost me around £120 maybe ten years ago and due to inflation you can probably double the cost again. The price of my new piece of equipment was astonishingly cheap I thought though on reflection its cheap price may also be down to it being a more mass produced item than normal amateur radio equipment.

Links to Horizon documentary

Standard C510A /C510E links

Baofeng UV-5R links

Chirp links

Handwriting - droops | 2016-06-27

Yesterday I listened to an episode of Freakonomics ( on handwriting. As a child I disliked penmanship and was horrible at it (still am). Eventually my teachers just told me to print so that they could read my answers. This is also a tech show, which should have an audience that leans toward the fact that computers are awesome. But most of you fine listeners should be interested in what is the best solution to a problem. Especially if that solution is contrary to conventional thought.

Many reasons were given for handwriting to be a thing of the past and I think most of them are a lot of bull.

First some more qualifications for me. I am a college dropout that did eventually graduate. Until last week I was a teacher who worked with students who were not always the best. I have been without a cell phone for two years and I love fountain pens. This probably does not qualify me for much, as I am certainly not a doctor or a scientific researcher, but I do have some real world experience and have been experimenting on my students (all in a good way).

So here are some of the cons:

  • Handwriting is old fashioned – true
  • Typing is faster – true. Cursive is on average 30 words per minute.
  • Hands hurt after writing – true
  • Lack of success as a child demotivated me, left me “school damaged” – true

These are all excuses that I have made and are all excuses my students have made. As a computer science teacher, I require all of my students to keep a handwritten notebook in my classes and they can use it on all of their tests, quizzes, and assignments. What an old fashioned stick in the mud I must be (they must have a cooler way to say this).

There is nothing wrong with using tech to help with anything, but if you do not understand concepts of why and how, all the tech in the world will not help you and many people try to use tech as a crutch.

Typing is faster, most students get to the point they can type everything that is said in a lecture. This skips a crucial part of learning where you use your brain to analyze what is being said. Writing is slower but should force you to put content in your own words by thinking about it and being an active listener.

The pain in your hand should go away with practice, good form, and proper tools. I like fountain pens as they glide over the paper and you do not have to hold them in a death grip. Form means to use your arm, not your wrist, to write. With practice this can be done.

I was bad at handwriting as a child and my teacher was wrong to tell me to stop. Part of education is to teach about failure and difficulty. If people only do the easy things who will do the hard ones? A person interviewed on Freakanomics said their school put too much emphasis on handwriting so they moved their child to a different school as this was having too much of a negative effect on his feelings. Way to teach your child to run away from hard things. I hope no college professor ever hurts his feelings to requires too much from them. Life gets harder, education should be hard to prepare students for the work of life.

So enough cons, how about some pro argument.

Laptops are full of distractions, most adults I know cannot focus with their email and social media trying to grab their attention.

In an independent study talked about on Freakanomics, two researchers found that handwriters and laptopers had no difference in learning faces, unless they were allowed to review their notes before the quiz, where handwriters gained an edge. Concepts on the other hand, handwriters always held and almost like they thought about the concepts more than the students who just typed everything that was said.

Something not really covered was writing new content. I give my students fountain pens as rewards and this makes writing so much more special. They take more time to write things and think more about what they are trying to say. This is a win-win.

Now everyone is different. Please try handwriting for a few weeks and see if it helps you retain more. If you are not a student, watch a lecture on the internet or read a book and see if you learn more.

Finally handwriting is personal. I am willing to mail a postcard to almost anyone that sends me their address (droops @ gmail) so that they can get that personal feeling.

So I made some arguments, handwriting makes you smarter, helps you develop grit, makes you feel special, and gives you super powers. Hopefully you will try it out.

This has been droops and this is Hacker Public Radio… HPR.

Fountain Pen Suggestions

More Tech, Less Magic - Todd Mitchell | 2016-06-23

This was my first show for HPR! I wanted to offer up something unique–hopefully not too much so to enjoy.

In this episode I talk a bit about the differences between how my son will grow up with gaming technology, and how I did. There’s a lot of nostalgia, a little humor, and also a bit of language.

All in-show music was created by me.

GNU Nano Editor - JWP | 2016-06-17

I recently heard an HPR Podcast where it was mentioned that Nano was not a real text editor. That somehow VI or Emacs or Kate or Gedit were in some way better than Nano. I just wanted to set the record straight that Nano is a serious editor that has a huge following and a facebook page.

My 2nd HPR Beer Podcast - JustMe | 2016-06-15

Hi everyone,

It's MeToo here again recording for HPR with a follow on beer tasting podcast. Let me first apologize for the audio quality of this and the next eleven beer podcasts. They were all recorded live on my phone in the Nobody Knows Bar, so there is a bit of a background noise. I just hope it's not too distracting.

The following twelve beer podcasts were recorded over a period of several months. A couple of them, even though they were recorded at the same "sitting", I've chosen to break up into several podcasts, just so as to add more podcasts to HPR.

In a few cases, it's obvious that I get a little tongue tied. Please forgive me. I normally tend to just have one beer per sitting, but the beer is so good and I'm with friends, and as such have had more than one per sitting at those times.

But enough of the explanations and apologies. Let's get on to the heart of the podcast: my impressions of several beers.

One more thing before we start. The beer in this podcast is Old Foghorn. I mislabeled it in the recording as Old Fog.

hand holding beer

[Audio from pre-recorded report]

Well. there you have it. Not one of my better recordings. But I hope you liked it nonetheless.

So, this is MeToo here signing out until next time, wishing you happy trails and happy beers.

A Nerdy Conversation With Linden About Technology - sigflup | 2016-06-14

In this episode of HPR sigflup interviews Linden who specializes in databases. The subject of this interview varies wildly. All the way from databases to python and arch linux

You can contact Linden on twitter at @tesherista

Developing Black & White Film - handsome_pirate | 2016-06-10

  • Intro to the film and the chemicals used
  • Mixing chemicals with water
  • Load developing tank with film
  • Live recording of the developing process itself.

My Raspberry Pi Home Server - knightwise | 2016-06-09

Knightwise talks about how he uses his Raspberry Pi to get things done, and keep his connection to the Internet secure and private when he's away from home. He also discusses a number of command line tools that he uses on the Pi which help to keep the workflow simple and clutter-free.

The Hubot chat-bot - John Duarte | 2016-06-08



Hubot is a chat-bot written by the folks at GitHub. It is a node.js application written in CoffeeScript.

Hubot has a variety of adapters that allow it to connect to a variety of chat platforms. These range from IRC to Slack. So, the platform you are interested in probably already has an adapter available for it.

Hubot uses individual CoffeeScript scripts to provide chat-bot functionality. There are a slew of existing scripts available in the npm. Just search for hubot-scripts.

You can also write your own in order to make sure that Hubot provides the functionality that you need.


Hubot is available as an npm package. So, you will need to install node.js and npm on your system. I will leave this as an exercise for the listener.

I will however, throw out a tip for those of you using a Raspberry Pi for this. The node.js platform should be deployed on an ARM system using the armhf (ARM hard float) architecture. The nod e.js stack needed to run Hubot will not properly install if you are using the armel (ARM soft float) architecture.

Once you have node.js and npm installed, you can install hubot and its dependencies with the following command.

npm install -g hubot yo generator-hubot coffee-script

You create your own instance of hubot by using yeoman generator. You need to do this as a non-root user. When you create your bot, you will give it a name and specify the adapter to use. These can be specified as command line flags, or the generator will prompt you for this information.

  • Owner
  • Name
  • Description
  • Adapter


yo hubot

Providing the answers

yo hubot --name mybot --description "My Helpful Robot" --adapter shell --defaults


Once hubot is installed, you can run it with the following. I will use the shell adapter, which provides an interactive shell from which to trigger hubot scripts.

./bin/hubot --adapter shell

Our Hubot instance is now active and ready to receive commands. We will start with a simple ping command.

mybot> mybot ping
mybot> PONG

We can see the available commands by asking Hubot for help

mybot> mybot help
mybot adapter - Reply with the adapter
mybot animate me <query> - The same thing as `image me`, except adds a few parameters to try to return an animated GIF instead.
mybot echo <text> - Reply back with <text>
mybot help - Displays all of the help commands that Hubot knows about.
mybot help <query> - Displays all help commands that match <query>.
mybot image me <query> - The Original. Queries Google Images for <query> and returns a random top result.
mybot map me <query> - Returns a map view of the area returned by `query`.
mybot mustache me <url|query> - Adds a mustache to the specified URL or query result.
mybot ping - Reply with pong
mybot pug bomb N - get N pugs
mybot pug me - Receive a pug
mybot the rules - Make sure hubot still knows the rules.
mybot time - Reply with current time
mybot translate me <phrase> - Searches for a translation for the <phrase> and then prints that bad boy out.
mybot translate me from <source> into <target> <phrase> - Translates <phrase> from <source> into <target>. Both <source> and <target> are optional
ship it - Display a motivation squirrel

We will try a couple more.

mybot> mybot echo "Hello world"
"Hello world"
mybot> mybot the rules
0. A robot may not harm humanity, or, by inaction, allow humanity to come to harm.
1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
2. A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.
3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

Adding Scripts

npm scripts

npm install hubot-simpsons

Add hubot-simpsons to the array in the external-scripts.json file.

mybot> mybot simpsons quote
mybot> Disco Stu⦠likes disco.

Writing scripts

You can add your own custom scripts by adding them to the scripts directory. An script was included when Hubot was installed. It includes a variety of examples of things Hubot can do. I will illustrate by paring this down to a simple single script that responds to requests to open doors. Our simple script will open most doors, but will politely refuse to open the 'pod bay' doors.

The script uses the respond method on the robot module. This method takes a regex patten to respond to. It returns a result that contains a match array when the pattern has been detected. In our script we capture the group between 'onen the' and 'doors'. We then use this to determine which response to provide. The response is triggered with the robots reply method.

module.exports = (robot) ->

 robot.respond /open the (.*) doors/i, (res) ->
   doorType = res.match[1]
   if doorType is "pod bay"
     res.reply "I'm afraid I can't let you do that."
     res.reply "Opening #{doorType} doors"

Restart Hubot by...

Now we can use our new, useful Hubot script.

mybot> mybot open the french doors
mybot> Shell: Opening french doors
mybot> mybot open the pod bay doors
mybot> Shell: I'm afraid I can't let you do that.


A rose by any other name... If you would like your Hubot to respond to another name, you can assign your Hubot aliases to respond to. I really like this feature and I assign the '!' as my Hubot alias. This allows me to invoke Hubot with a single character.

mybot> ! open the pod bay doors
mybot> Shell: I'm afraid I can't let you do that.


Obviously the shell adapter is not very useful aside from allowing us to play with or develop Hubot scripts. Hubot comes with several adapters that allow it to integrate with existing chat systems. These include: * IRC * XMPP * Campfire * HipChat * Slack * IRC * IRC


I hope this gives you a sense of what Hubot can do and how you can utilize it. Personally, I use Hubot in a variety of ways ranging from silly entertainment to useful communication tool. Using the eight-ball script, I can see if I will have a good day.

mybot> mybot eight-ball Will I have a good day?
mybot> Shell: Most certainly!
mybot> :-)

Using a modified version of of the sms script, I can send text messages to my family members who are not available online.

mybot> mybot sms trinity   See you on the other side!
mybot> Shell: Sent sms to 3125550690
mybot> :-)

Neo Fetch 1.5 - JWP | 2016-06-07

I was reading Linux Voice I heard Dave Morriss talking about shows and made a sort one about Neofetch 1.5. Its a command that displays system information.

Bring on the Power! - NYbill | 2016-06-02

It this episode NYbill talks about power supplies used for electronics work.

My First Beer Podcast - JustMe | 2016-06-01

Hey. It's MeToo here again. On this episode, were diverging from my last podcast of coffee and switching topics to, wait for it. Wait for it. BEER.

Now, you might think to yourself, "What the heck! Beer?" I know. I know. It's so plebeian, right?

Well. I too, use to think like that. What with the shades of Budweiser, Michelob, Iron Horse, Iroquois, Genesee, etc... All squaw piss. Right?

I was raised on wines & cocktails. But, over recent years, especially after listening to many of you guys' podcast on beer-making and drinking, I became interested in wanting to try some of these artisan beers you all have spoken of. But, being overseas in a foreign country, my chances of such are like a snowball's chance in hell. Or so I thought.

Then came one night when I was on my way to teach a class at one of the local universities, and passed by a newly opened bar with the humorous name of "Nobody Knows Bar." Where, when I glanced in the window and to my amazement, were many of the very beers you all had been talking so much about. Wow! Here was my chance to partake. So, I went to class and afterwards stopped in to the bar.

So, I tried a beer. It just happened to be an IPA. Now, don't get me wrong. Many, many years ago I had tried an IPA and found it far from my liking. So, my first choice wouldn't have been an IPA normally. Again you ask, "Why did you choose an IPA this time?" Well, the reason was bartender recommended it.

And again to my amazement (to coin a phrase), it was great. I guess the reason for enjoying it over before is that, as like everyone, my taste buds had changed. And truthfully speaking, I've come to like IPAs over many others.

So, to no longer digress. Let me tell you what I chose and my opinions on the beer.

The beer? A 12oz. 8.2% Alc. by vol., glass bottled Lagunitas Brewery's Lagunitas Unlimited Release Maximus IPA Maximus Ale. I love the labeling. It reads: "Life is uncertain. Don't dip." Also, "If some is good, more is better." And one final one, "Instant gratification isn't fast enough." What a lark!

Enough diddle dallying. On to the tasting: The nose on this beer is crisp and light. The first mouthing brings a floral, fruity semi-sweet taste. The fruitiness continues into the aftertaste with an added semi-dryness. And yet, despite the alcohol content, doesn't ring your clock. The longer after flavor is strongest on the underside of the back of the tongue. Very pleasant.

So. There you have it. My first beer tasting. I hope you found it telling. And maybe you too will try a bottle. I highly recommend it. I will continue these tasting over the course of time. Now don't get me wrong. I'm no sot. And I still like my coffees, but I have now found a new "like" and it's artisan beers.

hand holding beer bottle

Until next time. This is MeToo signing out and wishing you happy trails and happy beers.

Router Antennas More = better ? - Lyle Lastinger | 2016-05-30

Really complicated phasing of radio signals.

Diagram of a router with 4 antennas

Alternative antenna

Lyle Lastinger

Attempting to fix a plastic boat - Jezra | 2016-05-25

I'm on a boat!

Glasgow Podcrawl 2016 - Dave Morriss | 2016-05-23

Glasgow Podcrawl 2016

Kevie and Dave Morriss chat about the upcoming Glasgow Podcrawl. This year's event takes place on the 29th of July 2016 and kicks off at 6pm in the State Bar, Holland Street.

The event is open to anybody with an interest in podcasting, open source software or creative commons music. Whether you're an enthusiast or just interested in finding out more, also if you're a member of a band, then we would love to have you along for a yarn over a few pints.

Check out for more details and a map of how to get to the bar.

Music on this episode is "Beer" from Darkman Sounds

Building Community - droops | 2016-05-20

This is droops and this is also Hacker Public Radio.

I love HPR and noticing our current need for shows, I put it on my list that I needed to help out. But what to talk about?

Let’s talk about growing HPR. It is a cool show and project, but if the community does not grow the show will end. People run out of shows to host and others have to fill that space.

I think we do a great job doing outreach to the community by going to conventions, getting mentioned in articles and magazines, and being cool with everyone. But as a community we could do a little more to get to the 4000 show mark. Even my lazy butt can help with these things.

First, let’s bring more traffic to the site. To do this we need content, which is really all we have. But we need to be more clever with how we use it.

We need to transcribe all of our shows. This allows search engines to better index our content and bring more people to our site. Maybe they won’t subscribe or even listen to a show with the content being readable, but they were not going to listen anyway by not finding us. This is a big chore and we would need a team with leadership to do it.

We need more popular hosts (this sounds bad taken at face value) to guest host shows and mention HPR on their shows. We used to do this by sending in bumpers like “this is droops from Hacker Public Radio and we live whatever this show is. Hacker Public Radio is a daily show created by the community”. Let’s make a list of podcasters we want to guest host or mention our show and go after them.

Speaking of guest hosts, let’s work on interviewing more people who will put our show on their blog/social media. We did this in the early days of Twatech with Moka5 and we got a lot of traffic from this. I do know that we already do this, but not everyone who listens contributes a show and this is an easy way to do it.

What if we made it easier to record shows? Maybe have an Android/iOS app to record and submit shows from.

We could have a tool to submit show topics or do a survey to find out what people are interested in. This may prompt people to record shows by knowing that someone would be interested in it.

Someone could get some free stock photos (or better yet we could just take our own) and put show titles over the images to share on social media. People click on images. I will do this so that everyone can see my ugly face.

a photo of droops

On that note, how about a video that explains what HPR is. This may be a good droops project. That would be something awesome to share on social media.

The website, which is a lot of work, needs to have related shows listed on each individual shows page. This will take a tag system and someone to tag all of the almost uncountable previous episodes.

One of my favorite show formats is reviews of software/media. This is so much in our community to keep up with and HPR is perfect for this. Everyone should do a show about some unique software they use or a cool book they are reading or a cool documentary they watched. Five minutes about something cool would bring me into learning more about it.

Currently my classes are watching a documentary about the Silk Road called Deep Web ( I should do a show on it to talk about privacy, government, all the cool things it brings up. We have not gotten far into the documentary yet as we keep stopping it to have discussions.

Also I love stickers, we should set up a store to sell stickers and t-shirts. Heck this is HPR, we should have tote bags. We can either sell them at cost or make a profit to pay for hosting or swag to give away.

Hacker Public Radio is driven by the community and our community as a whole is much smarter than I am. Let’s put our minds together and grow our show.

Distro Review: Bodhi Linux - m1rr0r5h4d35 | 2016-05-18

As with my last episode, you may hear some sniffling or pauses as I catch my breath. It is springtime in Kentucky, and my allergies are full force right now.

In this episode, I take Bodhi Linux for a test drive. I'll tell you what I liked, what I didn't like, and how well or bad it performed on my test machine.

How I Came to Linux - Steve Saner | 2016-05-17

I tell the story of how I learned about computers and eventually came to be an avid Linux user.

I've been using Linux as my primary operating system for almost 20 years now. My primary distribution of choice has always been Slackware, but I have branched out to some more "modern" distributions as well, particularly for workstation environments.

I have been an HPR listener now for several months and this is my first show. I enjoy the podcast very much and hope to see it continue for many more years. Thank you to the administrators and leaders to make it all possible. And, of course, thank you to everyone that contributes shows.

A quick intro to OBD2 with Android - pope523 | 2016-05-16

Book Review: The Pocket Ref - m1rr0r5h4d35 | 2016-05-13

Recorded this episode while suffering from some severe seasonal allergies, so please disregard any sniffing, wheezing or coughing that may have crept in.

This is a brief introduction to the Pocket Ref by Thomas Glover. In this episode, I don't go into great depth of the books many topics, primarily due to the nature of the book itself. It is meant to be a reference book, and as such it contains a treasure trove of reference material from a very broad range of topics.

Also, I mention a few other titles in this series - links below.

Some basic info on alarm systems - schism | 2016-05-11

A very basic bit of information on some alarm equipment.

Old Engineers and New Engineers - Gabriel Evenfire | 2016-05-10

This is a short episode about a puzzle that I got for my birthday from my in-laws. I gave the puzzle to two of my children to solve after I'd taken a crack at it. It was amusing to see see how and old engineer thought about the problem compared with young ones. Pictures of the puzzle are attached. The object is to get one ball in each notch at the end of the block at the same time.

half moon puzzle from side

top view showing bearings in the centre hollow

bearings are at the far rims of the cresent

Using a Smarphone as a microphone - njulian | 2016-05-06

Hello citizen of the Internet, my name is njulian, and in my first Episode for HPR I want to talk about an App called "Microphone". This App is available for Android in the F-Droid repository, link is in the Shownotes.

All it does is sending the audio input from the microphone directly into the audio output. This causes horrible feedback loops, if the output happens to be the Phone's speakers. But if you plug a Male-to-Male 3.5mm cable into your Phone and the other end into your Computer you can use your Smartphone as a Microphone. Actually I am using this right now to record this show with Audacity on my Laptop. The reasons for that are pretty simple: I don't have enough free space on my Phone to record a show with Urecord and the other is that I was curious if this app really works.

Well, actually there is not much more I could tell about the App. It has no menu, no way to customize it, and as you can hear no noise suppression.

That's about it, thanks for listening.

The App:

The Cable:

Remapping Keys with xmodmap - Jon Kulp | 2016-05-05

In this episode I talk about how I tried to implement an idea that my son had when we were talking one day. I was complaining about file names with spaces in them, and he asked what if the computer automatically changed the spacebar so that it made underscores whenever somebody was trying to save a file? I thought this was a great idea. I even thought of a way implement it, though not quite as magically as he had envisioned. My solution involves the use of the command-line tools xev and xmodmap, and one blather voice prompt to launch the xmodmap command that will remap the spacebar to make underscores instead. Maybe somebody a whole lot smarter than me can figure out how to make this happen automatically whenever a save dialog box is open.

First you need to find the keycode for your spacebar. Run the xev command and then press the spacebar to see which key code it is. Here's the output on my laptop:

KeyPress event, serial 48, synthetic NO, window 0x4e00001,
    root 0xc0, subw 0x0, time 116149126, (-739,-226), root:(448,358),
    state 0x0, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XmbLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

As you can see, my spacebar has the keycode of "65." Now we use xmodmap to reassign keycode 65 to make underscores:

xmodmap -e "keycode 65 = underscore"

Now to test it out. While xev is running, press spacebar. Notice that now when the spacebar is pressed it makes an underscore:

KeyPress event, serial 57, synthetic NO, window 0x2600001,
    root 0xc0, subw 0x0, time 116190619, (-520,-247), root:(667,337),
    state 0x0, keycode 65 (keysym 0x5f, underscore), same_screen YES,
    XLookupString gives 1 bytes: (5f) "_"
    XmbLookupString gives 1 bytes: (5f) "_"
    XFilterEvent returns: False

And to change it back:

xmodmap -e "keycode 65 = space"

Now whenever I want to change the spacebar to make underscores or switch it back, I speak one of the following commands, which are in my blather configuration file.

MAKE UNDERSCORES: xmodmap -e "keycode 65 = underscore"
MAKE SPACES: xmodmap -e "keycode 65 = space"


  • xmodmap man page: xmodmap is a utility for modifying keymaps and pointer button mappings in X
  • xev man page: use xev print contents of X events

Video Demonstration

Setting up my Raspberry Pi 3 - Dave Morriss | 2016-05-04

Setting up my Raspberry Pi 3

I bought a Raspberry Pi 3 in March 2016, soon after it was released. I want to use it as a server since it's the fastest Pi that I own, so I have tried to set it up in the best way for that role.

In this episode I describe what I did in case you want to do something similar.

Refer to the full notes for the details:

Automotive Billing - brian | 2016-04-29

I get a call to look at my friend's broke down car.

a pi project and an owncloud project - Matt McGraw (g33kdad) | 2016-04-28

HPR - A couple of Projects I've been working on

  1. Intro

    • Please record a show!!!!!
    • Couple of Projects
  2. Pi Project

    • Love of Music
    • Digital, of course and webradio
    • Sonos, other proprietary solutions
    • Got a Pi2 for XMas
    • Pi Music Box
    • RuneAudio
    • Arch Based
    • underlying tech is MPD
    • flash SD Card
    • boot with network cable attached
    • add music and webradios to library
    • .pls and .m3u files
  3. PhotoFrame Project

    • proprietary items
    • tablet/smart phone lying around
    • ownCloud
    • update for my parents on the road

Links and other Goodies

Pi Project
Capital Public Radio
Samsung Shape
Rune Audio
Music Player Daemon
USB Audio Dongle (amazon link... NOT an affiliate link)

PicFrame Project
Kindle Fire HD 6
PicFrame Android App

Contact Info
Matt McGraw - matty at the strangeland dot net
Stay-At-Home G33k Dad ~ Fatherhood in the digital age

The following link includes a photo of the RPi in the bookshelf with the stereo as well as a screenshot of the Rune Audio app running on my Android phone.

Here are my thoughts on a 3D printer Kit. - cheeto4493 | 2016-04-26

I purchased a 3D printer kit from AliExpress.

Here are some after thoughts on how I liked it, a little overview of 3D printers and why I bought this one.

Pictures of the printer as assembled, and a few items I printed

I hope to make this into a series about software, tips and modifications, and other thoughts I have to share about it.

Echoprint - laindir | 2016-04-25

Ken's message asking about programmatically checking for the intro and outro:

The Echoprint website:

Codegen source code:

Echoprint - An Open Music Identification Service:

Server source code

Linux in the Church - Joe | 2016-04-22

Linux has been my exclusive OS for many years. When I became the tech director at my church I wanted to utilize the power and freedom of Open Source so I'm gradually implementing it on many of my projects.

Photo of the rig in the church

Understanding the GNU/Screen Hardstatus line - Curtis Adkins (CPrompt^) | 2016-04-14

Links (CPrompt's .screenrc file) (GNU Man page on String Escapes)

HPR needs shows to survive. - Ken Fallon | 2016-04-13

You can help out the Hacker Public Radio project by recording a show today.
See for more information.

My new laptop - Dave Morriss | 2016-04-12

My new laptop

I attended OggCamp15 in Liverpool at the end of October 2015. As usual I bought some raffle tickets as a contribution to the expenses of the (un-)conference, not paying much attention to the prizes.

Actually, the star prize was a laptop donated by Entroware, a significant sponsor of the event, one of the most impressive prizes ever offered at OggCamp. There was quite a lot of excitement about this prize.

I attended the drawing of the raffle at the end of proceedings on the Sunday. Dan Lynch (of Linux Outlaws, and a frequent organiser of OggCamp) was in attendance overseeing the selection of the raffle tickets. Various smaller prizes were won and the tension built up as the final drawing approached.

Things got very tense when the first number drawn for the laptop was called and nobody responded. Then another draw was made.

Imagine my shock and surprise when I realised I had the winning ticket! I had won the star prize in the OggCamp raffle!

See the full show notes here for the details of the laptop.

How I prepare and record my HPR Kdenlive voiceover shows. - Geddes | 2016-04-08

Hi HPR listeners this is an episode on how I prepare and record the voice over narrations of the Kdenlive article series of which I’ve produced two so far. I run through how I prepare the text for spoken delivery, how I record the article and the hardware gear and software I use. Below are some shots of my recording gear mentioned in the show.











Just got a Raspberry Pi Zero - swift110 | 2016-04-05

How I record a full band under Linux - noplacelikeslashhome | 2016-03-31

How I use Ardour, Jack audio, and a Presonus interface to record an entire band practice under linux.

  • Tools:

    • Ardour
    • Calf studio gear
    • Invada Plugins
    • ArtyFX
    • Jack
    • Qjackctl
  • Hardware

    • Dell Latitude e6320
    • Presonus studiolive 16.4.2
    • various Microphones

Truck Repair: Serpentine Belt Replacement - Jon Kulp | 2016-03-24

Come along for the ride as I repair my pickup truck. The job is to replace the serpentine belt, idler pulley, and belt tensioner in the hope of getting rid of a very annoying loud chirping sound that was coming from my engine. Even after cutting out the long pauses where I was staring at my engine trying to imagine how I was going to get the belt to go in the indicated pattern, this episode still tops out at about one hour. Be warned. There are several sections where you're just kind of listening along to sounds of nature as I work.

Here's the instructional video I watched to learn how to do it:


Can your window manager do this? - Nacho Jordi | 2016-03-23

How I'm handling my podcast-subscriptions and -listening - folky | 2016-03-22

Editor's Note 2018-06-12: The links above which previously referenced GitHub have been updated to reflect the new location of the software, GitLab.

Adventures installing Linux on an Asus EeeBook X205A - b-yeezi | 2016-03-21

High-level steps to install Ubuntu Mate on the Asus Eeebook X205A

Information compiled from Here, Here, and Here

Download and create startup disk

Download the 64-bit version of the iso, then create a bootable USB. I recommend using dcfldd.

Getting grub 32-bit

Compile or download grubia32.efi (see links), then move it into the /EFI/BOOT directory on the USB.


Boot from the disk (assuming you already disabled secure boot from the BIOS). Install the system as you like.

First Boot

Reboot, but leave in USB. Type c when grub loads, then enter in:

linux (hd1,gpt2)/boot/vmlinuz.... root=/dev/mmcblk0p2
initrd (hd1,gpt2)/boot/initrd....


To get wi-fi working, put in terminal:

sudo cp /sys/firmware/efi/efivars/nvram-XXXXXX /lib/firmware/brcm/brcmfmac43340-sdio.txt

Then reload the brcmfmac driver:

sudo modprobe -r brcmfmac
sudo modprobe brcmfmac

Fix bootloader

Fix Bootloader with the following commands as root:

sudo apt-get install git bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev libfreetype6-dev texinfo

# from
git clone git://

cd grub


./configure --with-platform=efi --target=i386 --program-prefix=""


cd grub-core
sudo su
../grub-install -d . --efi-directory /boot/efi/ --target=i386
cd /boot/efi/EFI
cp grub/grubia32.efi ubuntu/

Then, we can just install grub-efi-ia32:

sudo apt-get update
sudo apt-get install grub-efi-ia32

Edit the grub configuration file:

sudo nano /etc/default/grub

Find the line starting GRUB_CMDLINE_LINUX_DEFAULT and add intel_idle.max_cstate=1 before quiet splash".

Then ctrl-o, ctrl-x to save & exit, and type: sudo update-grub to update Grub.

Remove the USB stick and reboot, and you should now have a self-sufficient booting system.

Conflict between sdhci-acpi and brcmfmac

Due to some conflict between sdhci-acpi and brcmfmac (, a parameter has to be changed for the sdhci-acpi driver. There are several ways to do this, but a quick fix is to add this line in /etc/sysfs.conf (make sure you have the package sysfsutils installed), this way the option is passed before the brcmfmac driver is loaded :

# Disable SDHCI-ACPI for Wireless, otherwise WLAN doesn't work
bus/platform/drivers/sdhci-acpi/INT33BB:00/power/control = on

microSD Card Reader

Create a file /etc/modprobe.d/sdhci.conf with the following content:

# Adjustment to make micro SD card reader work
options sdhci debug_quirks=0x8000

Then run

update-initramfs -u -k all

After a reboot the card reader should be working.


WDTV Makes Me Itch - Epicanis | 2016-03-17

This half-hour-long episode describes the complete process for turning an old, limited thin-client terminal (an HP T5740) - and incidentally just about any other kind of hardware - into a simple automatic media-playing kiosk-style device, running VLC on a hand-made minimalist Arch Linux installation. I've tried to describe the procedure I came up with in enough detail that anyone with a little bit of Linux experience can hopefully follow and potentially replicate the whole thing, but not so much detail that it gets horrifically tedious. Some of the extra details I glossed over in the audio are here in the show notes if you want them.

This episode will mostly be of interest to people with a little bit of Linux experience, but may hopefully be interesting to a few others. Mac and Windows partisans take note: before you start giggling about how "complicated" it is to set up Linux as you listen to what I describe here, I will reiterate that I chose to do the install "by hand" like this, and I assure you a more typical Linux install is quite a bit simpler (having just spent several months brutally installing Windows systems on innocent computers, getting and ordinary Linux installation finished is not only easier but faster. ("Windows is getting ready to start to prepare to configure updates. Please wait 5 hours and don't turn off your computer...") So there.

I'm also going to try posting an "enhanced" version of this episode in .opus format with chapter markings and so on at my site: Additional information may be found there as well, especially if anyone asks for it.

Some Linuxable Hardware I Mentioned:

Installing linux on old computers, laptops, etc. is such a well-established tradition that I don't see any reason to hunt down specific examples, but I also mentioned:

I assume I don't need to explain that the Dead Badgers thing isn't entirely serious... It's not entirely a joke, either:



Autostart X on tty1 only:

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

I actually have also tried the "web browser kiosk" thing with the browser loading up a particular web page on start. It actually works just fine, except that the Windows DHCP server seems to be kind of slow, and if I just let the system start without checking the browser initially just shows an "internet no work" sort of message. I got around this nicely by adding a couple of steps to .xinitrc before starting the web browser. First, I created a graphic to use as an X background that just has text that indicates that it's waiting for the network to come up. Then, I put a loop in .xinitrc that checks for a hostname on the internet to see if it resolves to an IP yet, which would tell me the internet had come up. I didn't want to have to install any specific additional software utilities or, ideally, to have to do any special parsing. It turns out that you can just use "getent ahosts4" (or other internet hostname) as a test for this - it will return nothing if the name doesn't resolve, so you only need to test if the response is not a blank. I used "sleep 1" to pause one second between tries. Once the resolution returns something, I had xsetbg change the background graphic to a more appropriate default and continue starting the browser, the VNC server, etc.

The .xinitrc for that looks like this:

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?* ; do
        [ -x "$f" ] && . "$f"
    unset -f

xset s off
xset -dpms
xsetbg -fullscreen WaitingForNetwork.png
#vlc --extraintf=http --http-host --http-password 'PutPasswordHere' -L playlist.m3u &
#Not sure this is necessary - chromium seems to retry on its own
while [ `getent ahostsv4` -eq '']
##wait one second then check again to see if network is up
sleep 1
xsetbg NetworkNowUp.png
##The URL below is a "test to see if you can connect to a conference" link
chromium --incognito --app= &
x0vncserver -display :0 -passwordfile /home/tech/.vnc/passwd &
exec openbox-session

If you have any questions or comments, you can leave them at either

or on my own blog at

Linux from Scratch - Brian in Ohio | 2016-03-16

Fixing Bug 1092571 - Ken Fallon | 2016-03-11

After a windows server upgrade in work, I was no longer able to mount samba network drives from my laptop. Basically it boils down to not been able to mount drives on the console, but been able to browse them in the GUI. After investigating and trying all the options presented, I filed a bug with Fedora.

Despite filling in all the information, the bug remained untouched by human hands. Robots shut it, I reopened it. To be honest I thought it might be my set-up as nobody else was reporting it as an issue. Sure there were other people reporting problems but not attached to this bug.

Anyway I happened to be at FOSDEM ( and spotted Jeremy Allison from the SAMBA project who I had the pleasure of interviewing previously

Jeremy was immediately able to pinpoint the issue to the kernel probably only supporting SMB version 1, while user space uses libsmbclient that supports smb1/smb2.

A Love Letter to - Clinton Roy | 2016-03-10, is the name and website of my favourite conference. Known by insiders as simply lca, it is an annual technical conference, focusing on Linux and Open Source technologies. LCA is a roaming conference, going to a different city of Australia and New Zealand every year. I've helped organise the two lca's in my home town of Brisbane, Queensland, and it was in fact the first of these that introduced me to lca. This year lca was held in Geelong, down in the state of Victoria and it counts as my fifteenth Clearly this conference has become quite a big part of my life and it's probably a mature thing to stand back and have a look at why.

lca is a technical conference, it's not a sales oriented conference, as an engineer having non-salesy, technical content makes me feel at home. For the most part, the paper committee only accept talks from people directly working on a project, so the speakers we select know their topic. lca is explicitly an open source conference, and mostly a low level conference.

lca is a week long conference, so I often add some extra time on the end to make a holiday out of it. A fair percentage of our attendees are from overseas, and it makes sense for them to do the same. I have taken the train to a Perth (Western Australia) lca, that's the Indian Pacific train, a three day trip from one side of the country to the other. I've done a day trip on a train in New Zealand, from Auckland to Wellington. I've done a couple of motorcycle trips, down to Ballarat and Geelong (both cities in the state of Victoria). Those two tours are roughly a 3600km (or 2200 mile) round trips taking three to four days each way.

I've done a motorcycle tour of Tasmania (an island state of Australia) after a Tasmanian lca. Next year, the conference is back in Tasmania for the Hobart lca, I'm planning on doing a week long hike of about 85kms (50 odd miles) before the conference along the South Coast Track.

There are a bunch of people that I only get to see at lca, from year to year, sadly some of these come from my own home town. Keeping these connections strong is an important part of lca for me.

Every year, the parent organisation of lca, Linux Australia holds their Annual General Meeting during lca. I've been an Ordinary committee member on the Linux Australia council a couple of times now. This year I didn't get enough votes, which means I have more time to devote to other things, like HPR recordings :)

Registration for lca normally starts Sunday afternoon, there's often a beginners guide to the conference. After fifteen years, I don't think I've ever attended one, but I should probably help lead it next year..

It's very common for lca to choose a charity to raise money for. For many years this meant a loud, long, often raucous auction. In recent years we've had a raffle over the full length of the conference. We've helped many worthy charities over the years, the one that comes to mind was the 'Save the Tasmanian Devils' fund, for which we raised a substantial amount of money, something around forty thousand dollars, partly based on the auction prize of changing the linux's kernel logo from Tux to Tuz, the lca mascot for that year. Tuz is a Tasmanian devil wearing a costume Penguin beak to cover over his case of the Devil Facial Tumour Disease, a communicable cancer, that is threatening their existence. This was also the conference where Linus shaved bDale's beard off to raise money for the charity.

We often hold lca at a university, and we often use student dormitories as accommodation. If we're lucky, this means that a large percentage of attendees can meet up in common areas of the accommodation at the end of the day and continue the conference long into the night. A particularly memorable lca on this front, somewhere in New Zealand, I forget which city, had a whole level of a student accommodation centre set aside as a common area, so a large percentage of the conference were able to fit and continue the conference late into the evening.

The first two days of the conference are generally reserved for miniconferences, or miniconfs as we refer to them. These miniconfs go for one or two days and are organised around a particular topic, and separately to the main conference. The miniconfs change every year, but commonly include miniconfs focused on the kernel (this is primarily attended by kernel coders), hardware (based around ardunio, raspi, and this year espy), multimedia and music, sysadmin, OpenRadio, Open Source in Government. A highlight from the second Brisbane lca was the rocketry miniconf, where 25 odd rockets were put together and later launched. We've been blessed over the years to have miniconfs working to improve and enlarge our community, including LinuxChix, Haecksen and the Community Leadership Summits.

After the miniconf days are done, the conference proper begins. These days start off with a keynote, have four or more streams of talks during the day, with longer tutorials running for half the day.

My favourite keynote from this year was Genevieve Bell, from Intel. From previous years, Tim Berners Lee, Eben Moglen and Kathy Sierra have left long term marks. These are people who have fundamentally created the world I live and work in now, their contributions cannot be understated.

There are a bunch of talks from every year that change the way I think about something, or the way I work. This year, I reckon the Record/Replay talk will probably change the way I debug programs. RR is a Mozilla tool, you run the buggy program under rr, which records exactly what the system calls the program runs, what state effects the program has, then you run that recording under the standard debugger, gdb. Typically with gdb you can only step forwards into the program, but with rr you can actually step back in time as well!

A hardware talk that really caught my attention this year was the Linux Microwave, a regular microwave with a set of scales and a thermal imaging camera added, so that whenever you heat/warm/defrost something, the microwave will never ever burn/under/over cook the food!

The other bit of hardware that I feel warrants a mention was the large loom that one of our venues, the National Wool Museum was built around. It is programmed by a large bunch of punch cards! There's always local attractions that add something to the conference.

During the week, ad-hoc groups form around common interests, we call these Birds-of-feather sessions. I usually end up attending the Emacs BoF. A recurring BoF is the jobs BoF, where employers and hopeful employees come together.

I don't tend to attend too many tutorials myself. A number of years back I ran a tutorial on Antlr, a recursive descent parser toolkit.

There are a number of social events that happen most years, the conference dinner, the speakers dinner, and the professionals session. These events target the different audiences at the conference. A favourite spin on this was during a Melbourne lca where diners were given food and drink tokens to use around a market, rather than a traditional sit down dinner. The speakers dinner is a smaller, more private thank you to the speakers, many of whom have flown in from overseas. The professionals session tends to be the most varied, as it tends not be a full meal, but just a place where folks can meet, greet and swap business cards.

I can't say it's always been a bed of roses, I've had a couple of hospital trips over the years, one for myself where, along with almost half of the conference, I came down with the dreaded noro-virus, a gastro bug that is prevalent on cruise ships. During another lca when I was chaperoning another attendee to hospital I figured my lca was over, but then I struck up a conversation with our ambulance driver, and it turned out he'd been working on pdp-11s during his uni days!

The other awful lca experience I have to mention was the flooding that occurred just one week prior to our second Brisbane lca. All of our venues were affected, some were destroyed completely. We had to shift our main venue about 5kms up the road, hire buses, find new caterers at the last minute, a whole world of pain.

For many years now, most of our talks have been recorded, using our own recording system. All of these videos are up on the Linux Australia server and youtube. This means that weeks, months after the conference is finished, I find myself watching a recording that someone has recommended, and it takes me back to that one week in every year where the world makes sense to me.

As I mentioned previously, the next is in Hobart, January 2017, I hope to see some hpr listeners there.

Review of Sony Vaio VPC - swift110 | 2016-03-09

  • i3 cpu
  • 4 gb ram (can go up to 8 gb)
  • 5400 rpm hdd
  • linux mint 17.3

Fixing An Audio Problem while having a rant - MrX | 2016-03-04

This podcast details how I solved an audio problem I discovered while trying to record another episode for HPR. I'll hopefully get around to recording my original idea at a later date.

The recording was done in a bit of a hurry and I was a bit flustered so please excuse the fast talking and ranting.

Link to article that solved my problem

Command I used to install the app that solved my audio problem. App is from the standard Ubuntu 14.04 repo

sudo apt-get install alsa-tools-gui

Command to run from terminal to launch gui tool that solved the problem


Ultra High Vacuum: loading samples - Amunizp | 2016-03-02

I hope this is the correct version of my introduction to Ultra high vacuum systems and loading samples.

Please consult with a professional before using nitrogen and ultra high vacuum system.

Nitrogen is dangerous in close environments as it displaces oxygen so please consult the health and safety risks.

Ubuntu Community donations, Governance and Hardware - JWP | 2016-02-25

I went to -, and to see how donations with the linux vendors worked.

The only one that I found was non profit was debain. It a real nonprofit certification in the USA.

Free/Libre/Vrije Software: The Goal and the Path - Ken Fallon | 2016-02-24

NOTE for mp3 subscribers: On the request of RMS, we are not distributing this show in mp3 format.

This is a live recording of the presentation given by Richard Stallman as part of FOSDEM fringe. It was recorded at Auditorium D0.03, Campus Etterbeek, Vrije Universiteit Brussel, Pleinlaan 2, 1050 Ixelles, Belgium on Jan 29, 2016. You may remember that pokey interviewed Richard Stallman in episode hpr1116 (

The slides for the presentation are available at

Richard Matthew Stallman (born March 16, 1953), often known by his initials, rms,[1] is a software freedom activist and computer programmer. He campaigns for software to be distributed in a manner such that its users receive the freedoms to use, study, distribute and modify that software. Software that ensures these freedoms is termed free software. Stallman launched the GNU Project, founded the Free Software Foundation, developed the GNU Compiler Collection and GNU Emacs, and wrote the GNU General Public License.
Stallman launched the GNU Project in September 1983 to create a Unix-like computer operating system composed entirely of free software. With this, he also launched the free software movement. He has been the GNU project's lead architect and organizer, and developed a number of pieces of widely used GNU software including, among others, the GNU Compiler Collection, the GNU Debugger and the GNU Emacs text editor. In October 1985 he founded the Free Software Foundation.
Stallman pioneered the concept of copyleft, which uses the principles of copyright law to preserve the right to use, modify and distribute free software, and is the main author of free software licenses which describe those terms, most notably the GNU General Public License (GPL), the most widely used free software license.
In 1989 he co-founded the League for Programming Freedom. Since the mid-1990s, Stallman has spent most of his time advocating for free software, as well as campaigning against software patents, digital rights management, and other legal and technical systems which he sees as taking away users' freedoms, including software license agreements, non-disclosure agreements, activation keys, dongles, copy restriction, proprietary formats and binary executables without source code.
As of 2014, he has received fifteen honorary doctorates and professorships.

Horrors of Spam (and the Greater Horror of filtering it) - Josh Knapp | 2016-02-18

Spam Filtering isn't magic. A lot of work goes into helping keep your inbox clean, but there is still more hosting providers could do.

Advanced Terminal Usage: byobu - Jon Doe | 2016-02-17

Long time listener, first time caller, here! My name is Jon Doe, but you can call me Jon.

Today, I am going to be talking about a more advanced usage of the terminal in linux. This basic tutorial assumes that you have a basic knowledge of getting to the terminal, and installing software, so we can skip that, and make my job easier.

First, you have software that you may want to run, and keep running, even if we disconnect, or even if we walk to another machine. Classically, there was 'screen' for this, but times change, and needs advance. My current favorite is byobu, a wrapper for the screen or tmux terminal multiplexers, tmux by default, now, which is a change since featured on episode 770 of HPR.

To run byobu, simply type it's name at the terminal, and watch it's magic. When we say it is a wrapper, this is in double context. It encapsulates the tmux or screen binary in script, and it provides some useful enhancements to the already awesome capabilities of a basic multiplexer, including a nice bar at the bottom, detailing the system stats, configurable to whatever stats you need to display.

A screen multiplexer is an application that allows the running of multiple terminals, and their applications, within a single remote or local window, allowing you to change tasks with relative ease, similar to a window manager in X, but with no mouse needed.

For a basic test, go ahead and hit F2, and you will get a second terminal, the textual task tray at the bottom indicating your current and available terminals. F3 and F4 allow you to cycle between tasks, and F2 spawns additional.

For those following along, go ahead and hit F6, you will drop back to a shell, with byobu running everything in the background, and you can exit the terminal, or run whatever else you need to, outside of byobu's control. Use the byobu command again to reconnect, note that your session has remained open, and all terminal sessions are available for you to peruse. Also note that you can open byobu again, as the same user, both remotely and locally, and keep all of your terminals going, even on multiple systems and screens, at the same time. You can even share the session with others, assuming their ability to login, and cross code, or monitor usage of their session, for educational purposes, or group coding.

A popular and useful feature of terminal windows is the ability to maintain a scroll back buffer, and using a multiplexer, ostensibly, destroys this ability on the graphical side, assuming you are using it in a graphical environment, keeping the text for itself. Fear not, good hacker, for the simple application of F7 will activate scroll back mode, and allow your cursor (or arrow) and page keys to scroll up and down the text buffer. Enter settles you back to the end, allowing quick access to whatever just happened in that specific task windows while you were away.

This has been an introduction to advanced terminal usage, brought to you by Jon Doe.

And for those NPR nerds out there, "This is HPR, Hacker Public Radio"

Adding SQLite as a datasource to SQLeo - Ken Fallon | 2016-02-12

I have been looking for a tool that will graphically and programmatically track identifiers as they pass through systems. I could have done this in Inkscape after following the excellent tutorials on, however I also wanted to be able to describe the relationships programmatically.

This got me to thinking about graphical query builders for databases. The idea is to show each system as a table block and then draw lines between them to show how "Field_X" in "System_A" will map to "Field_Y" in "System_B". Many of the proprietary and some free database solutions allow this type of view. However I also want to easily package the entire thing up, so that someone else could access it without needing to pay for or install any specialized software. That limited the choice of database to SQLite, which is small, supported on many platforms and is released into the Public Domain.

SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.
Please follow the instructions on the SQLite site for information on how you can install it on your system. For me on Fedora it's simple to install via dnf/yum. You might also want to install some GUI managers if that's your thing.
dnf install sqlite sqlitebrowser sqliteman
I created a small database for demonstration purposes, consisting of two tables and one field in each.

Next step is to download SQLeo Visual Query Builder which has support for a graphical query builder.

A powerful SQL tool to transform or reverse complex queries (generated by OBIEE, Microstrategy, Cognos, Hyperion, Pentaho ...) into diagrams to ease visualization and analysis. A graphical query builder that permits to create complex SQL queries easily. The GUI with multi-connections supports virtually all JDBC drivers, including ODBC bridge, Oracle, MySQL, PostgreSQL, Firebird, HSQLDB, H2, CsvJdbc, SQLite. And top of that, everything is open-source!
SQLeo is a Java Tool and there is a limited version available on the web site which is limited to 3 tables per graph and 100 rows. Now as the program is released under the GPLv2.0, you could download the code and remove the restrictions. You can also support the project to the tune of €10 and you will get the full version ready to rock.

Unzip the file and enter the newly created directory, and run the program as follows:

java -Dfile.encoding=UTF-8 -jar SQLeoVQB.jar
One slightly confusing thing, and the reason for this post, is that I could not find support for SQLite listed in the list of databases to connect to. A quick search on the support forum and I found the question "Connection to SQLite DB". I found the answer a bit cryptic until I read the manual related to JDBC Drivers, which told me how to add the sqlite library.

SQLeo uses a standard Java sqlite library that is released under the Apache Software License, Version 2.0. You can download it from the SQLite JDBC MVNRepository and save it into the same directory as SQLeo.

Right Click in the Metadata explorer window and select new driver.

For step by step instructions please see

HPR New Years Show Episode 4 - HPR Volunteers | 2016-02-11


  • Can you buy a NEW CHEAP computer that can run GNU Linux?

  • Is ARM the future

  • The HPR audio book club

  • After hours fun at Linux conferences

  • Christmas light displays

  • Southern living and booze

  • Visit Orlando

  • Fun with etching

  • Pronunciation of town names

  • Pranks

  • Naval warfare

  • Some of TwoD's background story

  • Scanning photos and kids' art

  • Strange Steam badge:'/comments/3yyju8/how_to_get_the_red_herring_steam_badge_holiday/

  • Happy 2016 to everyone

HPR New Years Show Episode 3 - HPR Volunteers | 2016-02-10


HPR New Years Show Episode 2 - HPR Volunteers | 2016-02-09


HPR New Years Show Episode 1 - HPR Volunteers | 2016-02-08

HPR NEW YEARS EVE SHOW EPISODE: 1 Standard gauge N scale: 3D printed N scale:

Install Open Street Map on a Garmin 60CX - David Whitman | 2016-01-29

  1. First go to this site:
  2. Then select your map type
  3. Select and download the predefined area or tiles you want. You can download it directly or have the web page build it for you by entering your email address and pushing the button BUILD MY MAP.
    a) If you choose the email option then you get an email that the map is being built and another (later on) that the map is ready.
  4. Unzip the file
  5. Rename the downloaded map to gmapsupp.img
  6. Save your old map (that's on your device) entitled to a different name and then backup
  7. Put the map you unzipped and renamed in its place and make sure it is renamed to 'gmapsupp.img' (omit the single quotes I have used in these show notes)
  8. Use your device and thank OSM

Reasons why I like OSM for use on my Garmin 60CX and Garmin E-trex Vista

OSM maps have more data for my area than the Garmin supplied map World Wide maps are available. See where Peter64, Ken Fallon or even 5150 lives. It's cheaper than buying a commercial map Trails, points and other improvements I put on OSM can be on my map I like the OSM concept and community.

These older GPS's can be purchased for bargain prices. Apparently the suction cup receiver - Garmin Windshield devices can also use OSM maps with other free software.

Grandpa Shows Us How to Turn Custom Pens - Jon Kulp | 2016-01-28

Grandpa Shows Us How to Turn Custom Pens on a Lathe

Warning: this show is kind of long, even though I cut out about half of the original raw audio. While my parents were visiting during the holidays, my dad taught me, the wife, and the kids how to turn pens on his mini lathe. We made a few mechanical pencils, a pen and I also made a giant workshop pencil. Click on the image below to look at the gallery of photos on Flickr.

Pen Turning

[my wife's lovely mechanical pencil]



An Interview with David Willson of the Software Freedom School - David Whitman | 2016-01-27

David Whitman interviews David Willson of Software Freedom School

Kdenlive Part 2: Advanced Editing Technique - Geddes | 2016-01-22

Hello again HPR listeners this is Geddes back with Part 2 in the series covering the video editing application KdenLive.

Last time in part one we looked at Installing, First launch, Your workspace, Importing footage, Three-point editing, and lastly The basic tools.

This time round we’ll be looking at advanced editing technique and Part 2 covers the following topics:

  • A Brief History of the Editing Workflow
  • Editing in the Timeline,
  • Audio Splits and Grouping Clips,
  • Basic Navigation in the Timeline,
  • Notes on Video Formats.

Here’s the link to the original article.

The Kindle/Kobo Open Reader (KOReader) - Jon Kulp | 2016-01-21

In this episode I talk about installing an alternate ebook reader app on your Kindle paperwhite. The one I'm using is called the Kindle/Kobo Open Reader (KOReader), and it has many features that the stock Kindle reader does not have:

  • Epub support
  • Word-breaking hyphenation
  • PDF reflow
  • Take screenshot with diagonal swipe
  • Export highlights to Evernote
  • Fills more screen space
  • User-installed fonts

How to get it running:

  • Jailbreak your Kindle, refer to this post. Jailbreaking doesn't give you any new programs. What it does is unlock the potential of the device and allows you to install different launchers and applications.
  • Install alternate launcher, such as KUAL, the Kindle Unified Application Launcher. This is a framework that allows developers to create menu items that will launch applications on a jailbroken Kindle.
  • Install KOreader. Instructions
  • Install Dictionary files for whatever languages you want to have (optional)
  • install Tesseract language data (optional)

You can allow KOreader to take over styling of whatever book you're reading. If you don't like the style rules it applies, you can hack the epub CSS file located here: /koreader/data/epub.css


ocenaudio - lostnbronx | 2016-01-19

ocenaudio is a cross-platform, easy to use, fast and functional audio editor. It is the ideal software for people who need to edit and analyze audio files without complications. ocenaudio also has powerful features that will please more advanced users.

ocenaudio supports VST (Virtual Studio Technology) plugins, giving its users access to numerous effects. Like the native effects, VST effects can use real-time preview to aide configuration.



There's not much documentation out there for Ocenaudio. Here are a couple links to articles that might help:

The Quassel IRC System - FiftyOneFifty | 2016-01-15

Quassel is a centralized IRC hub that allows several client computers to appear as only one connection to the IRC server, i.e. Freenode. About the same time NYBill posted Episode 1869 "IRSSI Connectbot", I was wondering how to merge all my simultaneous IRC connections from multiple hosts to the same channel on the same server into one connection. I did a search on "GUI front end IRSSI" and came up with Quassel instead. I think NYBill and I are trying to solve pretty much the same problem. I'm not trying to say my solution is better than NYBill's, I'm just saying it's the one that appeals the most to me.

Problem: IRC servers (or at least Freenode) do not allow simultaneous connection from multiple hosts using the same user identifier. I.E., if I was logged in on the PC on my desk via XChat as FiftyOneFifty, if at the same time I was connected to IRC via a PC on the kitchen counter, I would have to use "Kitchen5150" as my identifier. If I was away from home, but left a computer connected to IRC back home, if I connected againover Android I'd have to be Andro5150. I could adopt all these other personas as aliases, which protected them from theft and allowed me to still have admin rights on channels where I was admin depite using a different login. These multiple versions of me running in IRC inevitably lead to confusion about which was the "real" FiftyOneFifty, a situation which MrJackson is all too familiar with, I'm sure.

IRSSI Solution: Connect to a server via ssh, then login into IRC using the IRSSI terminal client inside a GNU screen or TMUX session. When moving between local hosts, disconnect from the current screen or tmux session, ssh into the server from the new host, and reconnect to the session running irssi. The irssi ncurses interface may not be as pretty or easy for some users as a GUI, but I understand it is quite functional.

Quassel Solution: Connect to IRC server via a single host running quassel-core. Connect multiple simultaneous clients to the core via quassel-client. All clients share the same IRC display at the same time, all the while transparent to the server (i.e. Freenode), which only sees the one login from the host running quassel-core.

There are two components two this system, quassel-core and quassel-client. You want to install quassel-core on to a system with a persistent Internet connection, say a home or cloud server. I first used Arch on and RPI model 2, so quassle-core setup for Arch may be found here: .

A. Install the core

  1. Install quassel-core on the server [sudo pacman -S quassel-core]

  2. Generate a certificate

  3. Start core (i.e. sudo systemctl start quassel)

  4. Enable quassel on every startup (sudo systemctl enable quassel)

    • There is something in the wiki about a but preventing the enable fundction from working. "systemctl enable" just creates a sysmlink into the proper startup directory, so the wiki replaces it with a copy command "cp /usr/lib/systemd/system/quassel.service /etc/systemd/system/"
  5. Set up Port Forwarding on your router. I suggest you use an external port other than the default 4242 (Security Through Obscurity, see my Port Forwarding episode).

All the configuration is done by the client!

B. Install quassel-client

  1. All you need to connect is an IP address and the external port number. The first account you create will be master and the only account with the ability to create other users. In other words, if someone else had your server's IP address and the port Quassel-core is listening on, they could beat you to establishing a master account and controll Quassel on your server.

  2. Once you have established a connection to a core and set your password, you can set up the default IRC servers and channels. It's a GUI interface, so I'm not going to walk you through the menus and various inputs. I only had success setting up one IRC server (Freenode) in the initial setup on the first client (as you connect addition clients, you will find your channels are already configured), and then only if I avoided ssl connections. Channels are entered into a list in the normal way (#channel_1, #channel_2, etc), but once you connect to a server, /join commands become persistant. I added a second IRC server, tllts, once I finished the initial setup.

The user interface is similar to XChat,but not quite as polished.

  1. You get popup notifications when someone uses your handle in a chat, but scrolling back to find it, rather than being in a different color, it shows up in a garish reverse text. Easier to spot, but not as eligant.

  2. No way to search back posts for your handle or anything else.

  3. Links posted by others only have "copy this link function", not "open this link in default browser"

  4. I don't seem to have spellchecking enabled in my IRC client. I discovered spell checkwas central in Linux, rather than every app having it's own version (i.e. I assume FireFox under Windows has it's own spellcheck libraries as Office has it's own library). I wonder if I installed hunspell on the Quassel core server, if I would suddenly get spellcheck ( ).

There is a perfectly adequate Android client for Quassel. Like AndChat, YAAIC, and the others, it seems to drop the connection unless you actively participating, but since the server is persistent, you never miss out on what was said while your client was disconnected.

The last time I was awy for the weekend, I shut off all my PC's and network devices. One drawback of a local Quassel server would be my LAN and Quassel Core server would need to be up even when I was away from home.

Migrating Quassel from my local server to the cloud: About a week after I'd set up Quassel, a buddy anounced he had secured a Digital Ocean Droplet ($5 a month, limited storage, limited bandwidth). He was open to letting his friends use the service, as long as their requirements were low impact. I jumped on the oppurtunity to move my quassel-core over to the "cloud". Remember the five and a half steps to setting up quassel-core under Arch? According to my friend who manages the Digital Ocean Droplet running Ubuntu Server, it was pretty much "sudo aptitude install quassel-core". Once the core was running I then configured the new core from one of the clients (i.e., pointed quassel-client to a new IP and port number, then created an account and password). Since I was on a new server, I had to set up connections my IRC channels again. After that, every client I migrated to the new core inherited those channels from the server. A week or so after moving the core to the cloud, I came home to find my Internet had been down for a few hours. Cycling the power on the ISPs tranceiver and my router fixed my Internet connection, and since Digital Ocean had experienced no interruption, I was still able to scroll back to the five hours of IRC I missed.

sshfs - Secure SHell FileSystem - FiftyOneFifty | 2016-01-14

This is a topic Ken Fallon has been wanting someone to do for some time, but I didn't want to talk about sshfs until the groundwork for ssh in general was laid. Fortunately, other hosts have recently covered the basics of ssh, so I don't have to record a series of episodes just to get to sshfs.

From the sshfs man page: SSHFS (Secure SHell FileSystem) is a file system for Linux (and other operating systems with a FUSE implementation, such as Mac OS X or FreeBSD) capable of operating on files on a remote computer using just a secure shell login on the remote computer. On the local computer where the SSHFS is mounted, the implementation makes use of the FUSE (Filesystem in Userspace) kernel module. The practical effect of this is that the end user can seamlessly interact with remote files being securely served over SSH just as if they were local files on his/her computer. On the remote computer the SFTP subsystem of SSH is used.

In short, sshfs offers a dead simple way of mounting remote network volumes from another system on at a specified mount point on your local host, with encrypted data communications. It's perfect for at hoc connections on mobile computers or more permanent links. This is tutorial is going to be about how I use sshfs, rather than covering every conceivable option. I really think my experience will cover the vast majority of use cases without making things complicated, besides, I don't like to discuss options I haven't used personally.

There are other ways to mount remote storage, most noteably SAMBA, but unless you are trying to connect to a Windows share, sshfs is far less trouble to set up, escpecially since most distros come with ssh-server already installed.

The first thing to do when preparing to use sshfs is to create a mountpoint on your local computer. For most purposes, you should create a folder inside your home folder. You should plan to leave this folder empty, because sshfs won't mount inside a folder that already has files in it. If I was configuring sshfs on a machine that had multiple users, I might set up a mount point under /media, then put symlinks in every user's home folder.

The sshfs command syntax reminds me of many of the other extended commands based ssh, like scp. The basic format is: sshfs username@<remote_host>: mountpoint

To put things in a better perspective, I'll use my situation as an example. My home server is on If you have a hostname set up,you can use that instead of an IP. For the sake of arguement, my mountpoint for network storage is /home/fifty/storage . So, I can mount the storage folder on my server using:

sshfs fifty@ /home/fifty/storage

By default, your whole home directory on the remote system will be mounted at your mountpoint. You may have noticed the colon after the IP address, it is a necessary part of the syntax. Lets say you don't wish to mount your whole remote home folder, perhaps just the subdirectory containing shared storage. In my case, my server is an Raspberry Pi 2 with a 5Tb external USB drive which is mounted under /home/fifty/storage . Say, I only want to mount my shared storage, not everything in my home folder, I modify my command to be:

sshfs fifty@ /home/fifty/storage .or. sshfs fifty@ /home/fifty/storage

Except that generally doesn't work for me, and I'll come to that presently. The 5Tb USB drive on the server isn't actually mounted in my home folder, it automounts under /media. The directory /home/fifty/storage on the server is actually a symlink to the actual mountpoint under /media. To make sshfs follow symlinks, you need to add the option '-o follow_symlinks', so now my sshfs command looks like:

sshfs fifty@ /home/fifty/storage -o follow_symlinks

You may have noticed, the "-o" switch comes at end the end of the command. Usually switches come right after the command, and before the arguements.

This will allow sshfs to navigate symlinks, but I've discovered not all distros are comfortable using a symlink as the top levelfolder in a sshfs connection. For example, in Debian Wheezy, I could do:

sshfs fifty@ /home/fifty/storage -o follow_symlinks

Other distros, Ubuntu, Mint, Fedora so far don't like to connect to a symlink at the top level. For those distros, I need to use:

sshfs fifty@ /home/fifty/storage -o follow_symlinks

and walk my way down to storage.

Other related options and commands I haven't used but you may be interested in include -p , for Port. Lets say the remote server you want to mount is not on your local network, but a server out on the Internet, it probably won't be on the default ssh port. Syntax in this case might look like:

sshfs -p 1022 fifty@ /home/fifty/storage -o follow_symlinks

Reading the man page, I also find "-o allow_root" which is described as "allow access to root" . I would expect, combined with a root login, this would mount all of the storage on the remote system, not just a user's home directory, but without direct expertience, Iwouldn't care to speculate further.

The mount can be broken with 'fusermount -u <mountpoint>'.

At this point, I could explain to you how to modify /etc/fstab to automatically mount a sshfs partition. The trouble is, /etc/fstab is processed for local storage before any network connections are made. Unless you want to modify the order in which services are enabled, no remote storage will ever be available when /etc/fstab is processed. It makes far more sense to encapsulate your sshfs command inside a script file and either have it autoloaded with your desktop manager or manually loaded when needed from a terminal.

One thing to watch out for, is saving files to the mountpoint when the remote storage is not actually mounted, i.e., you save to a default path under a mountpoint you expect to be mounted and is not, so all the sudden you have files in a folder that is supposed to be empty. To remount the remote storage, you have to delete/move the paths created at your designated mountpoint, to leave a pristeen, empty folder again.

Weihenstephaner Vitus - The label says it's a Weizenbock, so we know its a strong, wheat based lager

IBU 17 ABV 7.7%

Kobo Touch N-905 E-Reader - klaatu | 2016-01-12

Klaatu reviews the Kobo Touch N-905 e-reader.

Too Long; Didn't Listen: it's a positive review and the device mostly works well with Linux. There are some exceptions, such as the need to hack around the registration process; luckily, that's easy:

That being "the ugly", here are the Good and the Bad:


  • works with Linux, after one initial hack
  • uses file manager or calibre
  • great format support (EPUB, EPUB3, PDF, MOBI, JPEG, GIF, PNG, BMP, TIFF, TXT, HTML, RTF, CBZ, CBR)
  • e-ink
  • great battery life (lasts a month on one charge, with every evening and weekend filled with reading)
  • a little more interactive and configurable than expected
  • one device, one app, one purpose
  • small, lightweight, convenient
  • cheap ($60 USD)
  • expansion up to 32gb


  • requires registration (or a rego hack)
  • rearranges your books by meta data; no override to respect your dirs
  • touch screen
  • slow (though not annoyingly slow)
  • long time to index books
  • hard to keep track of books you are currently reading
  • sleep/off screen should be more configurable

Collating Pages with pdftk - Jon Kulp | 2016-01-07

I'm moving into my new office at work, and among many things I had to move are file boxes full of old class notes from graduate school. The academic hoarder in me doesn't want to recycle them—I might need these things again! I'm scanning.

I've inherited an excellent scanner/copier with a feeder that lets you scan stacks of pages with one click. This works great for single-sided documents, but most of my handwritten notes are double-sided. I scan one side, then turn the stack over and scan the other side, and I end up with two PDFs for a single stack of pages—one with the front pages and the other with back pages in reverse order. The difficulty is to collate the pages of those two files so that the front and back sides appear in a single PDF in the correct order. Sounds like a job for a shell script!

The script takes two CLI arguments. The first argument is the PDF containing front pages, and the second is the PDF of the back pages.

The first job is take the backsides and reverse the page order, because they were scanned in last-page-to-first. This is very easy with pdftk:

pdftk back.pdf cat end-1 output backfix.pdf

Now that the pages are all in the correct order it's time to collate them. We're going to use the burst function of the PDF toolkit to explode each of the two PDFs into separate pages. After that, we recombine the separate pages in the correct order. The trick is finding a way to do this efficiently. In concept, it's not hard to collate pages in whatever order you want after they've been burst. You simply keep giving pdftk CLI arguments for all of the files you want to combine and then output them as a single file. However, if you have 40 or 50 pages, it's extremely tedious to provide that many CLI args one at a time. This must be automated!

The way I figured out how to do this was to ensure that the burst command would output files that would appear in the correct order automatically when using the ls command inside the working directory. The burst command automatically numbers the output files, but you can specify certain filename formatting parameters if you want to. I chose a format that would begin the filename with the numerical page count in at least three digits with leading zeros (001, 002, etc), followed by an underscore and either the word "front" for the front pages or "reverse" for the back pages.

So here are the burst commands:

pdftk front.pdf burst output %03d_front.pdf
pdftk backfix.pdf burst output %03d_reverse.pdf

At this point a bunch of new files appear, looking something like this:


Notice how the front and back pages all appear in the correct order? Now, instead of typing in the filename for every page, we can use the output of the ls command, filtering out any files not beginning with numbers.

pdftk $(ls |grep ^[0-9]) cat output collated.pdf

And it's done. The entire script loks like this:


# Requires: pdftk

front=$(readlink -f "$1")
back=$(readlink -f "$2")
basedir=$(dirname $front) 
stem=$(basename $back .pdf)
new=$(basename $front .pdf | sed -e 's/[Ff]ront/Combined/')

cd $basedir
pdftk $back cat end-1 output $backfix &> /dev/null
pdftk $front burst output %03d_front.pdf &> /dev/null
pdftk $backfix burst output %03d_reverse.pdf &> /dev/null
pdftk $(ls |grep ^[0-9]) cat output "$new".pdf


How I prepare HPR shows - Dave Morriss | 2016-01-06

How I prepare HPR shows


I have been contributing shows to Hacker Public Radio since 2012. In those far off days (!) we sent everything in via FTP, and had to name the files with a combination of our host id, our name, the slot number and the title. The show notes had to contain a chunk of metadata in a defined format to signal all of the various attributes of the show. I found myself making numerous mistakes with this naming and metadata formatting and so started designing and writing some tools to protect myself from my own errors.

I started developing a Bash script in mid-2013 which I called hpr_talk. I used Bash since I thought I might be able to make something with a small footprint that I could share, which might be useful to others. The script grew and grew and became increasingly complex and I found I needed to add other scripts to the toolkit and to resort to Perl and various Perl modules to perform some actions.

Then in 2014 Ken changed the upload procedure to what it is now. This is a much better design and does away with the need to name files in odd ways and add metadata to them. However, this left my toolkit a bit high and dry, so I shelved the plans to release it.

Since then I have been enhancing the hpr_talk toolkit, adding features that I found useful and removing bugs, until the present time. Now it is probably far too complex and idiosyncratic to be of direct use to others, and is rather too personalised to my needs to be easily shared. Nevertheless, it is available on GitLab and I am going to describe it here in case it (or the methods used) might be of interest to anyone.

I have written out a moderately long set of notes about this subject and these are available here

Audio Notes

I had to record this in two parts. In the second part there was a constant background hum which I tried to remove. My removal process was not particularly successful I'm afraid, so it cuts in and out. I'm still learning how to do this sort of thing in Audacity!

Quick Bashpodder Fix - Charles in NJ | 2016-01-01

Bashpodder is a great Bash script for downloading the latest episodes of podcasts and other media from their feeds.

There are a few feeds that are not handled properly by Bashpodder, namely, the TED Talks podcast feed and the NPR digest show called the TED Radio Hour.

The URLs for the audio files have a number of additional fields at the end of the string after the media file name, and Bashpodder picks up the last field as if it were the media file name for the show. So every TED Radio Hour episode is called "510298". If you download more than one episode at a time, only the last episode to be saved will survive. Each new file clobbers the last one, because they all get the same filename.

Charles in NJ made a simple fix to to correct this problem, and he shares it in this episode.


Additional Resources:

  1. Original version of
  2. Revised version with fixes to pick up TED-related podcast files
  3. Abbreviated example of bp.conf configuration file that tells Bashpodder what resources to fetch
  4. Abbreviated example of podcast.log that shows how Bashpodder stores its history, including some sample TED links.

Happy New Year from Charles in NJ.

Experiencing the Meegopad T-02 Part two - A Shadowy Figure | 2015-12-31

Part 2 of "Experiencing the Meegopad T-02.

Many thanks to all the HPR contributers that inspire such great stories.

Glossary of slang terms to be updated upon show release, along with the list of sound effects contributers.

Special thanks to the following individuals from for their sound effects used throughout this episode.
Higher quality stereo copies of this episode in .Flac, Ogg, and MP3 format can be found at the following link.
Glossary of slang terms used in this episode:
"Came unglued" = going berzerk
"Sang a little song" = provided information to law enforcement
"Still" = whiskey making apparatus
"Scoring Barbies" = Picking up women
"G-Men" = Government employees. (Federal agents)
"Makerspace" = 3-D Printing facility
"Johnny Law" = Law Enforcement
"C-Note" = $100.00 bill
"Speakeasy" = illegal drinking establishment in prohibition era United States
"68 Chevelle" = 1968 Chevrolet 2-door automobile
"Ratting me out" = informing on someone
"Frank Nitty" = 30's era Gangster, Al Capon's right hand man (Enforcer)
All characters are fictitious renditions of HPR contributers.
Nothing about any individuals character is based on anything other than my personal convenience of using their likenesses in fictitious storytelling.
No disrespect is intended in any way.
The genre that the character A Shadowy Figure lives in is hard boiled Noir.
Noir reflects a past history that had different standards than we do now.
I do not personally hold those antiquated world views. Nor do I promote them through this work of fiction. I would like to think this artistic creation does provide an opportunity to see how far we've come as a society.
But most of all, I'd like to think that you the listener, are entertained and/or inspired by this presentation.
Thank you all for your support.
A Shadowy Figure

Atomic force microscopy - Amunizp | 2015-12-28

I give a quick overview of what is nanotechnology. go over some of the tools used to view the small scale. I go a bit more in depth with atomic force microscopy.

I left many things out that I would like to have said but mostly you can get further information here:

A systemd primer - Clinton Roy | 2015-12-25

1 What is systemd?

A dependency system for unix services.
And, a set of basic unix services to make a unix system usable.
And, a growing list of not quite so basic services

  • NTP, networkd, timers (crond/atd)

From a programmers perspective, it's the mainloop phenomenon.

2 Alternatives

Solaris: Service Management Facility
Mac OSX: launchd
Ubuntu: upstart (until recently)

3 Replaces

LSB (actually implements LSB deps)

4 Terminology


  • [auto]mount
  • swap
  • path (inotify triggers)
  • socket
  • timer (crond/atd)
  • service
  • slice (cgroup)
  • pseudo
    • device
    • snapshot
    • scope


  • replace run levels
  • default target at boot
  • can isolate to just one target

5 Advantages - Design

Proper, explicit dependencies between system compontents
Starts components in parallel
A proper separation of concerns, lots of situations covered.

  • configuration files are regular, simple to understand generally small
  • OTOH, there are LOTS of options

Configuration is not runnable shell.

Description=CUPS Scheduler

ExecStart=/usr/sbin/cupsd -l

Also=cups.socket cups.path

Separate system and user daemons.

6 Advantages - Sysadmins

Modify configuration without modifying upstream configuration
Service watching (startup, watchdog, failure modes)

[EXTENDED]   /lib/systemd/system/rc-local.service → /lib/systemd/system/rc-local.service.d/debian.conf
[EXTENDED]   /lib/systemd/system/systemd-timesyncd.service → /lib/systemd/system/systemd-timesyncd.service.d/disable-with-time-daemon.conf
[EQUIVALENT] /etc/systemd/system/ → /lib/systemd/system/

3 overridden configuration files found.

7 Advantages - Programming

Removal of some error and security prone code

  • socket activation (e.g. privileged ports)
  • user/group changing

8 Advantages - Provisioning

standardized cgroup controls
debootstrap ; systemd-spawn-boot * systemd takes care of all pseudo file systems for you

9 Advantages - Users

quick to boot
can reduce load later on (services start & stop as required)

10 Examples

Color legend:

  • black = Requires
  • dark blue = Requisite
  • dark grey = Wants
  • red = Conflicts
  • green = After

systemd-analyze blame

systemd-analyze plot

systemd-analyze plot gdm.service

11 Disadvantages


  • It’s really nice in theory, but in practice I’ve found it to be slow and buggy

It’s a little new, so LTS distros necessarily have older versions

  • el7 has something like 200 patches is a bit flakey

  • Unix is a graveyard of IPC, I don't feel DBUS is much better
  • KDBUS means it will probably be around for ever.

12 Quandries

Deeply hooked into linux specific details, not portable

  • kernel api, cgroups, udev etc.

Some cool features relient on file system e.g. btrfs for snapshot

13 Future

I haven’t had a chance to play with networkd yet, but it sounds like it’s going to be very good.

14 Questions


  • It depends…
  • systemd only supports start/stop/reload
  • work with the daemon: oneshot/simple/forking/inetd
  • integrate with systemd: notify, watchdog


  • Every login, a separate systemd -> user is spawned
  • Can override with .config/systemd files

I Found a Flashlight - Jon Kulp | 2015-12-24

I Found a Flashlight

A couple of weeks ago on the way to work I found a flashlight (or a "torch," for those folks across the pond). It was rolling around on the street getting run over by cars and seemingly not suffering any damage as result. As soon as it was safe, I walked out into the street and grabbed it and took it with me. A little poking around online showed me that this was no ordinary device, but a police-grade flashlight.

I contacted the Lafayette Police Department to find out what kind of flashlights they used and whether anyone had reported one missing. Ordinarily when I find something I don't worry about this, but I discovered that this thing cost quite a lot of money—around $125 on Amazon with a retail price of $225—and if a police officer had lost it I certainly didn't want him going into his own pocket to replace it if I could just give it back to him. The police department wrote back to me saying, yes, this was the kind of flashlight that they issued to their officers but no one was missing one. I also asked the University Police and they said they don't normally issue flashlights but that sometimes officers bought their own and no one had reported missing one.

After seeing the amazing build quality and absolutely unbelievable light quality this thing produced, I decided to keep it and so I had to buy a charger to recharge the battery. This cost about $28 and now I'm the proud owner of a Streamlight SL-20L flashlight. This is truly one of the greatest tools I've ever had. Listen to the show to hear me sing its praises!


National Measurements Institutes - Amunizp | 2015-12-21

I give a short personal view on what are National Measurements Institutes. More info can be found here:

One thing not mentioned but related is ISO:

Kdenlive Part 1: Introduction to Kdenlive - Geddes | 2015-12-18

This article has been written by Seth Kenlon and is narrated for you by Geddes. It was first published on 2011-11-16 and some of the commands may have changed slightly. Please see for the complete text.

Seth Kenlon is an independent multimedia artist, free culture advocate, and UNIX geek. He is one of the maintainers of the Slackware-based multimedia production project,

GNU/Linux has infamously been wanting for a good, solid, professional-level free video editor for years. There have been glimpses of hope here and there, but mostly the editors that have the look and feel of a professional application are prone to blockbuster-worthy crashes, and those that have been stable have mostly been stable because they don't actually do anything beyond very basic editing. Kdenlive changes all of that.

At the film production facility at which I work, Kdenlive is the Linux editor in production use, and it performs (and frequently out-performs) the Mac boxes in cost, upkeep, flexibility, speed, and stability. This article series seeks to illuminate for professional editors how Kdenlive can replace proprietary tools, nearly as a drop-in replacement.

A good video editor is one that is suitable for anyone wanting to edit video, with powerful features that enable the video professional to do any task required of the job, yet with the simplicity that allows a hobbyist to quickly cut together footage off of a phone or point-and-click camera. Kdenlive can be both of those things, but regardless of the scope of your video project, there are right and wrong ways of doing things. Over the course of five articles, we will review the practical usage and the common set of best practices that will ensure your projects are successful.

The case to backup Google email. - Archer72 | 2015-12-15

Google Takeout, good for backup of gmail, or anything else from the Google-verse.

Thunderbird email client

ImportExportTools for Thunderbird

How to run a conference - Clinton Roy | 2015-12-14

The slides that this podcast are based upon can be found here:

Waking up - Jezra | 2015-12-03

When I first heard Windigo's episode about waking up, I literally uttered "Windigo, yer fucking killing me, man".

The Linux Experiment - The Linux Experiment | 2015-12-02

Is free software ready for the mainstream? Has Linux progressed far enough in its evolution to be a practical desktop environment for those who dont have degrees in computer science? Can a user really just switch off Windows or Mac and be as productive on a completely open source operating system?

The Linux Experiment is relatively simple in its goals. Friends, all with varying degrees of experience with Linux in general (even some with zero experience and others who have experience with multiple distributions), will install some distribution or another of Linux on their home computers for four months.

Over the course of these four months, the users will administrate, tinker with, and use Linux as their primary home operating system, utilizing the power of open-source operating systems and applications to see just how productive they can be. Updates will be made on this very site along the way, providing an in-depth look into how each user is adapting to their new environment. The trials, tribulations, triumphs, and other nouns beginning with t will all be laid out here, bare for everyone to see.

By the end of the four month cycle, each user has imposed their own goals as to where they want to be with Linux; running a server environment? Comfortable to tinker with bash commands? Time will tell.

For now, sit back, relax, and enjoy this isnt your normal experiment. We are the guinea pigs.

Thoughts on GUI v CLI and the best distro - Ken Fallon | 2015-11-30

Promotion of GUI to new users

Deciding which GUI to present to a non techie, is simply a non issue as they can and do use different OS's all the time. We all have family and friends who have managed to operate phones, TV's and tablets as they iterate through their UI changes. Think about the changes in phones from Symbian to Android, iOS. The move from up and down channel tv's to DVR's, STB's and smart TV's. An then they all managed to get the hang of iPads and tablets without even calling you.

Promotion of GUI to tech savvy users.

Teach someone to use a GUI and they can use that computer.
Teach someone the command line and they can use any computer.

GUI's change and do so all the time. This happens across the board. On all OS's Windows, Mac, KDE, Android, Gnome, Nokia.

On the other hand, if you learn to computer via the command line ONCE, then you know how to operate computers from 46 years ago, and most likely in 46 years. If you plans involve a career in the tech industry, you need to be using the command line.

Most of the issues are the fear of not been the expert any more.

Is Linux is ready for the Desktop ?

Yes. Android

IS GNU/Linux is ready for the Desktop ?

But you cry "Android isn't Linux".

Yes. ChromeOS is now shipping more units to educational market than Apple.


Don't worry about it. Find what works for you and use it. Try and learn as much as you can. Learning stuff that will be around in 5 years is a good investment, but that is your choice.

QMMP--The Qt-based MultiMedia Player - Frank Bell | 2015-11-27

Qmmp is an audio and video player for Linux, BSD, and Windows that's similar in appearance and functionality to Wimamp and XMMS. The Linux and BSD version are capable of playing video as well, through an mplayer plugin.

If you like eye candy, it's skinnable; a library of skins is available from the maintainer. In addition, it works nicely with legacy XMMS and Winamp skins.


Qmmp interface.

Qmmp video play:

Qmmp settings dialog:



Slackbuilds links: Qmmp: Qmmp Plugins:

Wikipedia article:

Playlist (*.m3u) specification:



Creating an Open, Embedded-Media Music Textbook - Jon Kulp | 2015-11-26

Re-Invigorating the Wheel: Creating an Open, Embedded-Media Music Textbook for the Digital Age

This is a recording of a presentation I gave on November 7th, 2015, at the national joint meeting of the College Music Society (CMS) and the Association for Technology in Music Instruction (ATMI) in Indianapolis, Indiana. I even have some action photos! Click on the first image below to visit the Flickr photo album, which also includes the slides from my presentation.

ATMI 2015 photo Album on Flickr


  • Percy Goetschius. Counterpoint Applied in the Invention, Fugue, Canon and Other Polyphonic Forms. New York: G. Schirmer, 1902. Download
  • ________. Exercises in Elementary Counterpoint. New York: G Schirmer, 1910. Download
  • Kent Kennan. Counterpoint, 4th ed. Englewood Cliffs, NJ: Prentice-Hall, 1999.
  • Jonathan Kulp, Gratis ad Parnassum: A Free Workbook for 18th-Century Counterpoint. Lafayette, LA: [no publisher] 2009. view pdf
  • Friedrich J. Lehmann. A Treatise on Simple Counterpoint in Forty Lessons. New York: G Schirmer, 1907. (This is the one I found on Project Gutenberg that I did not think was suitable as a textbook for my class)

Resources Mentioned

Watch My Workflow:

Serious Nerds Only

Many of the tedious repetitive processes I had to do on image files and audio files are done by bash scripts that are launched by voice commands, as demonstrated in the YouTube video above. The processes I'm talking about are things like renaming files according to my filenaming conventions, putting the files in the right place, resizing images, converting images to different formats, optimizing them for file size, converting audio from MIDI to ogg and mp3, and reducing audio from two channels to one in order to reduce file size. Below are the main tools I use for this, apart from the Linux bash shell itself. If you're interested in actually seeing the scripts I wrote to perform the magic, I am happy to share. Just drop me an email.

  • Calibre command-line tools: these were essential to automate the process of converting the source HTML file into the various versions and eBook formats of the book. Without this I might have thrown up my hands in defeat long ago.
  • ImageMagick: command-line image-manipulation tools
  • sox: command-line audio-manipulation tool, "the Swiss Army knife of sound processing programs."
  • optipng: command-line png optimizer. This is important to keep the book's file size as small as possible.
  • jpegoptim: command-line jpeg optimizer.
  • TiMidity++: an open-source, command-line MIDI-to-WAVE converter and player.
  • LAME: high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL.
  • oggenc (part of vorbis-tools): Several tools to use, manipulate and create Vorbis files (vorbis is a free audio codec).

Windows Command Line Tips and Tricks - OnlyHalfTheTime | 2015-11-19

Hello, HPR. I am OnlyHalfTheTime, the Reluctant Windows Admin. I am a Linux user at home and at heart. I run VPSs on Digital Ocean, host websites all in Linux, mostly Ubuntu. By day, however, I work for an Managed Services Provider which deals with all Windows boxes.

Today, I would like to talk about some tips and tricks I have come across while being forced to make the best out of a Windows environment. Being a Linux user, I find that many functions are more quickly completed if you drop to a Command Line Interface. This holds true for many Windows functions as well.

First, let's establish the kind of environment you will need.

Unfortunately, there is no sudo command built in to Windows. What we will need to do is run a command prompt as an administrator. On Windows 7, you can accomplish this by clicking the start menu, typing cmd, then rightclicking the command prompt program and choosing 'run as administrator'. In Windows 8 and 10, you can right click the start menu directly and click Command Prompt Admin.

This is almost the equivalent to running as root. You can affect almost anything except some system protected files. No rm -rf /* for you! The windows user most like root would be SYSTEM. Running a command prompt as SYSTEM is possible to accomplish a few ways, but is very very rarely needed. I can make another podcast about that later, but it is out-of-scope here.

Lets get into our first example: User creation is so much easier at the Windows command line. For example, I want to add a local user to a system with administrative rights. From an admin command prompt, I type:

net user john hunter2  /add

this creates the user john with the password hunter2. Then I type:

net localgroup administrators john /add

This adds john to the local group administrators. This group has admin rights on this local machine. Say john abuses this privilege and needs to have his permissions revoked.

net localgroup administrators john /delete

This is much easier than going to the control panel, searching for users, adding a user, defining a password, choosing to make it an admin user. For me at least.

Another thing the net command is used for is restarting services. Does that sounds silly to you? I agree! Regardless, let say you want to restart the print spooler on a troubled workstation. You could open a run prompt by hitting Windowskey+R and type "services.msc". This opens up the services window where you can find the service "print spooler" and right click it to restart. or you could just type:

net stop spooler
net start spooler

This is easier to script as well, in case a user is always having trouble printing. Provide a simple batch file (the equivalent of a shell script) to resolve and get on with your day.

Affecting files can be a pain in Windows as the paths tend to be esoteric and alien to a Linux user. For example. Let's say I want to copy file in the openVPN programs folder to my desktop. I could type:

copy "C:\Program Files (x86)\OpenVPN Technologies\OpenVPN Client\etc\profile\" "C:\Users\john\desktop\"

Gotta remember those doublequotes since Windows has spaces AND parentheses in the full path. Wow. Even with tab completion, that's a lot of work. I have a better solution if you have access to the GUI. Find the file you wish to copy and drag and drop it into the command window. Windows will enter the full path into the prompt. If the files does not already exist where you want it you can't drag it into the prompt. There are variables that can speed up this process. It may not be as elegant and simple as ~, but Windows does have a variable for the local user's home directory. You can type:


But you are saying, wait OnlyHalfTheTime, this doesn't save me any time or keystrokes! This is true in this specific case, but in scripting, it becomes important to use variables instead of full paths. I may not have Windows installed in the "C" drive for example. Also, some are real time-savers. if you use %APPDATA% for example, it maps to C:{username}.

Now, let's say I am going to be doing a lot of work in a specific directory. I could keep entering the full path, but come on, no one likes that guy. I could open a command prompt and cd or change directory, just like in Linux. or I could find the directory in the file explorer and right click in the folder while holding down shift. This gives you and extra option in the context menu named 'open command windows here' which does exactly that. You will get a command window opened with the working directory set as the folder in which you right clicked.

Hopefully some of these methods will help folks like me: Windows admin by day, Linux enthusiast by night. This is OnlyHalfTheTime, the Reluctant Windows Admin, signing off.

Instaling Linux programs without internet - swift110 | 2015-11-16

http://www.supertuxkart,net/downloads to get your copy of the game

MyTinyTodo List - Jon Kulp | 2015-11-12

This show is about my favorite tool to keep track of stuff I have to do, stuff I want to do, gift ideas for my family, books I want to read, HPR topics to record, etc. It's called MyTinyTodo. It's a web app that you can host on your own server and access from any device that has a web browser.

The website claims that it is already mobile friendly, but I did not like the mobile interface they had, and also did not like the fact that I had to use a different URL to get the mobile interface, so I hacked the stylesheet and the index.html file in the code to make it a responsive design. Now it looks great on all of my devices.


  • Multiple lists
  • Task notes
  • Tags (and tag cloud)
  • Due dates (input format: y-m-d, m/d/y, d.m.y, m/d, d.m)
  • Priority (-1, 0, +1, +2)
  • Different sortings including sort by drag-and-drop
  • Search
  • Password protection

System requirements

  • PHP 5.2.0 or greater;
  • PHP extensions: php_mysql (MySQL version), php_pdo and php_pdo_sqlite (SQLite version).


Setup is very easy as these things go. Check out the installation instructions at their website.

Free my music! - Alpha32 | 2015-11-11

How I got my music library transferred from my Mac to my Linux box, thereby allowing me to fully switch to Linux. This is a problem I've been neglecting for a while that has been keeping me tethered to iTunes whenever I want to hear my music. This probably isn't the best or simplest solution, but it's how I felt comfortable doing it.

Installing Windows 7 Ultimate - swift110 | 2015-11-10 is my blog so feel free to check me out there.

User Local Software - Eric Duhamel | 2015-11-09

In this recording I describe how I decided where to store software that I downloaded manually, as opposed to software that is installed and organized automatically by GNU/Linux systems.

SPOILER: I settled on ~/local/src/ and ~/local/opt/

Happy Halloween.

This is my first time recording a podcast. I recorded this in an afternoon when no one else was around except the furry kids and the neighbors outside. I've had the idea for this episode for a while, but having never recorded before didn't really know when/where/how to do it until just now.

The perspective of this episode comes from a GNU/Linux user since Sept. 2012, and a little bit of experience from 2002-2004. I'm interested in easy, simple solutions that everyone can use to solve problems or use new things.

Special thanks to Clacke for recommending in his recent episode the free/open-source Android recording application uRecord available from F-Droid. The resulting audio sounds great and uRecord is very easy to use. I recorded several separate paragraphs and concatenated them with Audacity.

Interview with Davide Zilli and Dr Marianne Sinka of the HumBug Project - Ken Fallon | 2015-11-05

Back in 2012 I put up a blog post on my site related to the need for an Open Source Mosquito Locator. Mosquitoes are the greatest killer of humans per year.

Recently Alexandre Azzalini left a comment pointing me to the HumBug project which is dedicated to Mosquito Detection and Habitat Mapping for Improved Malaria Modelling. I got in touch, and so today I talk to Davide Zilli, and Dr. Marianne Sinka who were winners of the Google Impact Challenge UK 2014.

Royal Botanic Gardens Kew: Crowdsourcing data to help prevent mosquito-borne diseases

Mosquitoes are responsible for the spread of some of the most deadly and costly diseases, with more than half the world's population living in areas where they are routinely exposed to disease carrying mosquitoes. One of the most deadly diseases that they transmit is malaria, that kills over 600,000 people every year. The Royal Botanic Gardens Kew will equip villagers in rural Indonesia with wearable acoustic sensors to detect the sound of mosquitoes. Each species has its own wing beat allowing the research team to record the occurrence of different species, as well as daily readings of critical environmental conditions. Combined with detailed vegetation maps, this will be able to track disease-bearing mosquitoes. Over the next three years, Kew Gardens will work with Oxford University to turn this project into a reality, creating a downloadable smartphone app and a range of wearable acoustic detectors. This novel technology will be trialled in 150 rural households in Indonesia with the aim of preventing and managing outbreaks of mosquito-borne disease. This prototype technology has the potential ultimately to be rolled out in every region of the world where mosquito-borne diseases pose a threat to life.

Their approach is to use a Goertzel algorithm running on either a dedicated device or on a smart phone to identify species. This data will then be used for Habitat Mapping and Vector modeling to try and target only species that are a danger to Humans.

Reach them on Twitter @humbugmozz


my chicken coop - Jezra | 2015-11-03

Door hardware build:

The twilight checker:

A short walk with my son - thelovebug | 2015-10-30

We start the show by saying ta-ra to the wife and daughters and starting on our walk.

Note to self: record an HPR episode about coffee

This episode inspired by jonkulp's emergency HPR episode entitled "biking2work", as mentioned on his GNUsocial post:

I give a brief introduction to who I am, and where I live.

Neewer Lapel Microphones from Amazon UK

The lapel mic issue at our church. £1.50 a piece, rather than £25+ for an official replacement.

Background to my 7½ year podcasting history:

Other music podcasts too

Note to self: record an HPR episode on my journey into podcasting
Note to self: record an HPR episode on my journey into Linux

Metric vs Imperial measurements

Note to self: record an HPR episode on variances between different measurement systems

A comparison between my Nexus 7 and my Olympus DM-3 recorder, both with and without the lapel mic.

Small glitch in the recording resulted in about 5 seconds being dropped, so it sounds a little disjointed at one point

Opinion around acceptable audio quality.
"If you can hear it, it's good enough."

Note to self: record an HPR episode on Auphonic and how to improve audio quality with very little effort

What would happen if Alex slipped and rolled down the hill.
Alex gives a quick introduction to himself.
He's also the slowest human in history.

I did run this episode through Auphonic, which didn't do a bad job in the slightest.
Settings used: Adaptive Leveler, Filtering, Noise and hum reduction set to Auto.
According to the processing results, hum reduction wasn't needed.

It would appear as though I've promised Ken 5 new shows - no pressure, eh.

Contact me:

experiencing the meegopad T-02 part one - A Shadowy Figure | 2015-10-29

This is HPR episode ${1889r) entitled "${experiencing the meegopad T-02 part one}". It is hosted by ${A Shadowy Figure} and is ${13} minutes long. The Summary: "${And now for something completely different}"

Apologies to speed listeners. I just couldn't make this episode speed-listener-friendly.

This episode was made out of respect and admiration for the HPR contributers mentioned throughout the show.


I barely have a clue of what I am doing. And there are mistakes all over the place in this episode. It's just something I wanted to through out there to change things up a little, and pay homage to those I admire, and with a little luck, inspire others to use their creativity to record an episode of their own.

You can do better. And I want to hear what you have to offer.

The meegopad T-02 turned out to be something I wouldn't recommend to others, and the follow-up episode to this one will be a walk through of what it takes to "hack" the T-02 into being something that is usable.

Depending on the feedback to this episode, I can either follow the theme I started with this show, or do a more traditional HPR episode with a no frills walk through of the process of hacking the T-02 to work as advertised. So let me know what you prefer.

Apologies to listeners from outside North America. The many slang terms used throughout the episode are representative of the hard boiled genre of noir to give this episode a certain "feel".

  • Dames = women
  • lucky strikes = cigarettes
  • Barbies = women
  • Kung fu grip = a GI jo action figure feature from the 70's
  • 70 Roadrunner = High performance American Muscle car by Plymouth
  • Posi traction = both rear wheels turn at the same rate at all times
  • Thermoquad = High performance carburetor
  • The elusive split tail blond fox = a pretty woman
  • Dough = money
  • Fence = seller of stolen goods
  • Capt'n Crunch = an American brand of breakfast cereal
  • Multimeter modifier = NYBill an HPR contributers
  • Rig = computer
  • Telnet = the way we used to communicate digitally before the world wide web was developed
  • TRS-80 = an early personal computer
  • clams = American dollars
  • Jacksons = $20 dollar bill
  • sega master system = the predecessor to the sega genesis gaming console (circa 1986)
  • Sony Trinitron = discontinued telivision set
  • Netgear 600= wifi router

Products mentioned in this episode

All music contained within, courtesy Kevin MacLeod of

Sound effects courtesy

  • Lonemonk
  • Rutgermuller
  • dhoy42
  • henaway
  • tuben
  • soundmary
  • knankbeeld
  • inchadney
  • kraftwerk2k1
  • elonen
  • gurdonark
  • cubic-archon
  • confusion music
  • zachfbstudios
  • husky70
  • solis2
  • magixmusic
  • dapperdaniel
  • robinhood76
  • djfroyd
  • boilingsand


Moral Volcano's Linux Tips & Tricks podcast for Hacker Public Radio - Moral Volcano | 2015-10-26

Welcome to my first podcast for Hacker Public Radio.

  1. Like Gnome 3? Good for you.
  2. Don't like Gnome 3 or like Gnome 2 more? Then, get a Linux distro with the Mate desktop. Mate desktop was forked from Gnome 2. Gnome 2 development was stopped by the Gnome 3 team.
  3. After installing the Mate desktop, install the Nimbus theme and Compiz desktop effects.
    I don't have the 32-bit edition.
  4. Have a USB wireless modem? Use wvdial or gnome-ppp with "stupid mode" enabled.
  5. Change gnome-terminal color scheme to Green-On-Black and the the following line to your .bashrc for a colorful and usable terminal window.
    PS1="\a\n\n\e[31;1m\u@\h on \d at \@\n\e[33;1m\w\e[0m\n$ "
  6. Install CMU fonts from
  7. Download Google fonts using this bash script
    wget -r -nc -nd -np -A.ttf
    This command takes a while to parse all the pages and find the fonts that need to be downloaded.
  8. Good Artists Copy, Great Artists Steal; Jonathan Schwartz; March 2010
  9. Undead Myths In The Wake Of iDead Steve Jobs; V. Subhash; November 2011
  10. Support free software
  11. Firestarter firewall - I think it needs only a little attention from Linux developers before it can be extremely useful again. Most of it still works.

Don't Get Locked In - knightwise | 2015-10-21

In this episode Knightwise talks about the cross-platform tools he uses for his day job as a freelance IT consultant. All three of the major OS platforms (Linux, OS X and Windows) have their strengths, so by leveraging systems from across all ecosystems Knightwise can use what he feels is the best tool for any individual task.

Use the tool that's right for you without letting the fanboys or the zealots get in your way.

How I Compute Away From My Computer - Thaj Sara | 2015-10-20

Here is a list of the stuff I bought, as well as the apps I list in the episode:

Free/Open Source Android Apps:

  • AntennaPod
  • Atomic
  • ChatSecure
  • Connectbot (honorable mention to Irissi Connectbot)
  • FB Reader
  • F-Droid
  • HN
  • NewPipe
  • K9 Mail
  • Orbot
  • Orweb
  • Owncloud
  • OwnNote
  • Pixel Dungeon
  • Plumble
  • RedReader
  • Termux
  • Twidere
  • VLC

Not so Free/Open Source Android Apps:

  • LastPass
  • ezPDF Reader
  • News+

Hacking a Belt to Make it Fit - Jon Kulp | 2015-10-15

In this episode I talk while I'm performing a belt hack. I bought a belt at Goodwill that is in excellent condition but does not fit me. To make it fit I need to cut off 6.25 inches and then put it back together.

This is the belt as I got it. Notice the very small screws holding the buckle to the belt.

The Buckle

The screws are out, the belt removed from the buckle. You can see here the two holes that accommodate the screws as well as the rectangular notch.

Buckle detached from belt

I've cut off 6.25" from the belt, ready to make the holes and notch in the remaining part.

6.25" cut off

Here I've clamped the part of the belt that I cut off to the remaining part to use as a template for making the holes and the notch.