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

Hobby Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.

Please support our Patrons

Our hosting is kindly provided by Josh from We would appreciate it if you could donate to help reduce his costs in funding the hosting. He is also accepting bitcoins to 1KsxJr9HtsdaUeU7yaV9bk9bQi21UPBtUq
Please also consider supporting the who are now hosting our media files. Right now, a generous supporter will match your contributions 3-to-1. So your $5 donation results in $20 for the Internet Archive.



Host Image
Host ID: 311

On GNU/Linux since Amiga Watchtower, using it as my primary OS since Debian Slink, been on Ubuntu ever since it fulfilled the derailed UserLinux dream.

These days I'm running Ubuntu-Gnome, but I'm considering NixOS+Guix as my primary OS, with a Debian chroot for the pieces that are missing. :-)

You can find me on the Free social networks at:

episodes: 12

hpr2507 :: Racket, Nix, Fractalide and the sounds of a Hong Kong New Town

Released on 2018-03-13 under a CC-BY-SA license.

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:

hpr2386 :: The Decline and Fall of Tcl

Released on 2017-09-25 under a CC-BY-SA license.

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

hpr2308 :: Everyday package operations in Guix

Released on 2017-06-07 under a CC-BY-SA license.

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?

hpr2198 :: How awesome is Guix and why will it take over the world

Released on 2017-01-04 under a CC-BY-SA license.

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:

hpr2194 :: The low-down on what's up in the Taiwan Strait.

Released on 2016-12-29 under a CC-BY-SA license.

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):

hpr2180 :: Mail to myself@myfirstemployment, Part 2 of 2

Released on 2016-12-09 under a CC-BY-SA license.

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

hpr2179 :: Mail to myself@myfirstemployment, Part 1

Released on 2016-12-08 under a CC-BY-SA license.

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"?

hpr2169 :: How I connect to the awesome #oggcastplanet on mobile

Released on 2016-11-24 under a CC-BY-SA license.

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

hpr2162 :: Review/Criticism of Hipp's "Git: Just Say No"

Released on 2016-11-15 under a CC-BY-SA license.

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

hpr1881 :: My road to Linux

Released on 2015-10-19 under a CC-BY-SA license.

I went against my own recommendations from my previous episode and used Rehearsal Assistant, because it can rename files inside the app. Well, turns out it records at 8 kHz and encodes it as 3GPP.

Sound quality: Yes, it's at a terrible sample rate, but you can hear what I'm saying and at least I'm Holding It Right. There's no problem with sudden drops in level.

Do as I say, don't do as I do. Use Urecord, which is obviously pronounced you record as in telling someone to record something, not you record! as in insulting someone by comparing them to a vinyl disc. Don't say as I say.

Slirp can use either SLIP or PPP. I think I used Slirp with SLIP, and there was some other connection method that provided PPP directly without logging in and running a command. Maybe their getty even understood the PPP blurb and just went directly to pppd. Anyway, my Amiga-side software didn't support it. When I switched to Linux I was able to use the other method and just talk PPP directly and authorize using CHAP.

Debian didn't support Amiga until Debian Hamm, which was released in 1998. So I didn't have much choice but to run Watchtower and compile my own stuff. By 1998 the Amiga was already gathering dust in my wardrobe back at my parents' place, while my PC and I were preparing to travel the seas with the Swedish Royal Navy and hang out (not really) with David Letterman on Saint Barths.

Wikipedia says that yes, it was Bruce Perens who tried to get UserLinux going, but they claim Ubuntu killed it. I don't remember UserLinux getting any traction at all. I think it's more accurate to say that Ubuntu put the last nail in its coffin. LWN seems to agree: The immediate cause of death was an inability to deliver software. Today there still is no real delivered product, over three months after the release of Debian Sarge.

But the same article reveals that I was completely wrong about Bruce trying to gather existing vendors together: It was occasionally confused with UnitedLinux by people familiar with the Linux market. UnitedLinux is the old Caldera, Conectiva, SUSE and Turbolinux initiative. Yeah, I was thinking of the one with Turbolinux in it. That name rings a bell. But I thought Turbolinux was Finnish. Apparently they were Japanese. Or actually, apparently they are Japanese.

Ah yes, Best Linux, that was the Finnish one.

I know that guix is pronounced geeks. I just don't know it in my heart. Just like I actually think GNU/Linux is the better descriptive term, but I keep talking about the Linux ecosystem* etc, where 95% of that ecosystem is abstracted away from Linux by glibc and runs just as well on FreeBSD.

* Yes, you may hate the term ecosystem. I happen to think it's an apt** analogy.

** You see what I did there.


hpr1877 :: Recording HPR on the fly on your Android phone

Released on 2015-10-13 under a CC-BY-SA license.

This episode was produced entirely on my phone, including upload.

Apologies for the atrocious sound quality and the low volume. Consider it performance art. I know I need to speak closer to the phone next time. There's DroidGain, but I guess it only accepts mp3.

TL;DL: Install Urecord from F-Droid, choose 44.1 kHz, RECORD!

I estimate the total amount of time spent on this episode at:

  • 20 mins – installing apps on two phones
  • 20 mins – evaluate apps on two phones (while cooking!)
  • 6 mins – record episode
  • 10 mins – update HPR user profile
  • 30 mins – write show notes (while having dinner!)
  • 15 mins – figure out how to upload this thing from a phone
  • ?? – upload episode

A large part of the typing time was angle brackets. HATE screen input. I want a modern phone with sliding QWERTY like the good old X10 Mini Pro, or maybe the slightly larger HTC Desire Z. Apparently the market doesn't. :-(

Wow, turns out the difficult part was to upload the file. Had to use a file manager as a "provider" for Firefox to get the "document" from.

hpr1876 :: MicrobeLog, or: On Shaving Yaks and Doing Things

Released on 2015-10-12 under a CC-BY-SA license.

The MicrobeLog overview:

hpr1726 :: 15 Excuses not to Record a show for HPR:

I think I've pretty much had to fight excuses 5, 7, 10 and 12. :-)

Become a Correspondent