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:
- pump.io: @firstname.lastname@example.org
- GNU Social: @email@example.com
- Scuttlebot/SSB/Patchwork: @iii/pg320nKa62v1ohHctlhrXYPmY5BzZ1dRjypd7Cg=.ed25519
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.
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.
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. :-)
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 -R mythingand
stow -D mythinglike 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.
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,
cygwinis for source code that expects POSIX-y facilities and
mingwis 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.
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 gitlab.com (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.
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.
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:
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.
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.
- 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".
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
- Also in
stow, of course
guix package -i ncduif it turned out to be something I like and use every day
guix pullto get the latest definitions for this user
guix package -uto upgrade my permanently installed stuff for this user
guix package -dto erase history of what I had installed before and release these references for collection
guix gcto reclaim my precious disk space
Followup episode material:
- What's in my
- Decentralized source control, for real this time, with
- What's so great about execline?
- What's a
- 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?
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 @firstname.lastname@example.org 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
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:
- Chris Webber: blog pump.io
- Arne Babenhauserheide homepage/blog OStatus
- WISP, S-expressions without so many parentheses
- Guix and GuixSD
- Nix and NixOS
- Andy Wingo: blog twitter github
- Mark Weaver: http://savannah.gnu.org/users/mhw is as good as it gets, it seems.
- Ludovic Courtès: home page, you can see under software that Chris was right about him being on Nix first, before he created Guix. :-)
- David Thompson homepage OStatus
- hy, a LISP hosted in Python
- The Reasoned Schemer is a dead-trees book.
- Actually there is a package manager for Guile called guildhall, but the latest commit was in 2015 (by Arne Bab, mentioned above!), and the trend to put Guile packages right into Guix seems to continue. There is also a generic Scheme package repository called Snow, but it doesn't seem to support guile, at least not officially.
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.
- 1644 Qing dynasty
- 1868 Meiji Restoration
- 1871 Imperial Japanese Army
- 1895 End of First Sino-Japanese War
- Treaty of Shimonoseki, annexation of Formosa/Taiwan
- 1910 Japan annexes Korea
- 1911 Xinhai Revolution
- 1921 Communist Party of China
- 1924 Mongolian People's Republic
- 1925 Death of Sun Yat-sen
- 1928 Northern Expedition
- 1936 Xi'an incident (don't mix up general Chiang and general Zhang!)
- 1937 Japanese invasion, fall of Nanking
- WWII ends, Japan returns Taiwan to the ROC
- Chinese Communist Revolution
- 1949 PRC: CCP controls 99% of ROC
- Temporary Provisions Effective During the Period of Communist Rebellion
- ROC recognizes Mongolia
- Korean war
- USA enters PRC-ROC politics
- Mongolia enters the UN
- Sino-Soviet split
- 1971 July: Nixon goes to China
- 1971 August: UN votes for PRC
- 1975 Death of Chiang Kai-shek
- 1976 Death of Mao
- 1978 Economic reform (Deng Xiaoping)
- 1979 US recognition of the PRC
- 1984 Sino-British Joint Declaration (One Country, Two Systems)
- 1986 Democratic Progressive Party voted into Legislative Yuan
- 1987 Martial law lifted
- 1988 Death of Chiang Ching-kuo
- 1991 Temporary Provisions rescinded, DPP legal
- 1991 SEF and ARATS founded
- 1992 PRC-ROC consensus on the One China Principle
- 1996 Direct Presidential election, Taiwan Strait crisis
- 1997 Handover of Hong Kong to PRC
- 2000 First DPP President
- 2008 Three Links, President Ma Ying-jeou (KMT)
- 2014 Sunflower Movement
- 2015 Ma-Xi meeting
- 2016 DPP President Tsai Ing-wen
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.
(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):
- China and the United Nations
- United Nations General Assembly Resolution 2758
- Pan-Blue Coalition (mainly KMT)
- Pan-Green Coalition (mainly DPP)
- Political status of Taiwan
- Chinese unification
Tangential background (all except one from Wikipedia):
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 ....
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"?
Just go to https://riot.im/app/#/room/#freenode_#oggcastplanet:matrix.org, click Join and you're on the channel! If you register a user there (or maybe on another instance, like @lambadalambda's https://matrix.heldscal.la/), 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:
- 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.
- Matrix is a big fat NIH, why not just use XMPP? (short pump.io discussion)
Fodder for further HPR episodes
- Man there are a lot of Slack alternatives out there. (pump.io post)
Review/Criticism of Hipp's "Git: Just Say No"
I was recommended Richard Hipp – Git: Just Say No (youtube.com) 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:
- Show descendants of a check-in
- Simplified mental model
- Remember branch history
- Multiple check-outs from the same repo
- Sliced check-out and clones
- Check-out & commit against a remote repo
- "Busybox" version of git
- All comms via HTTP/HTTPS
- "git all" command
- "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.
- Why? Complete
lessdoes the job, even for the oldest git project – git.
- YES, see gitless.
- Already works.
- Presumably already works, don't know how well.
- (Didn't listen) Why?
- (Didn't listen) Why? It has HTTP/HTTPS, but it also has the ssh model, which is great.
- Didn't listen.
- (Didn't listen)
git servesucks, 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 #freenode_#oggcastplanet:matrix.org and you're in the best IRC web chat available, in the #oggcastplanet channel on freenode.
- gitless (or
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 pronouncedyou recordas in telling someone to record something, notyou 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 pronouncedgeeks. 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 theLinux 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 termecosystem. I happen to think it's an apt** analogy.
** You see what I did there.
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.
The MicrobeLog overview: https://gitlab.com/microbelog/manifest
hpr1726 :: 15 Excuses not to Record a show for HPR: http://hackerpublicradio.org/eps.php?id=1726
I think I've pretty much had to fight excuses 5, 7, 10 and 12. :-)