pig-monkey.com

Holly Herndon composes music with machine learning.

I learned of her thanks to Bruce Sterling‘s mention in his 2020 State of the World, wherein he defines her music one of the few current examples of “genuine technical novelty”.

She used machine learning to train a program (referring to it as “AI” seems popular but I’ll refrain) that could reproduce human voices, and then used that software as a vocalist for PROTO. Neat.

This post was published on . It was tagged with micro, audio, media.

Monitoring Legible News

I was sent a link to Legible News last November by someone who had read my post on the now-defunct Breaking News. Legible News is a website that simply scrapes headlines from Wikipedia’s Current Events once per day and presents them in a legible format. This seems like a simple thing, but is far beyond the capabilities of most news organizations today.

Legible News provides no update notification mechanism. I addressed this by plugging it into my urlwatch system. Initially this presented two problems: the email notification included the HTML markup, which I didn’t care about, and it included both the old and new content of every changed line – effectively sending me the news from today and yesterday.

The first problem was easily solved by using the html2text filter provided by urlwatch. This strips out all markup, which is what I thought I wanted. I ran this for a bit before deciding that I did want the output to contain links. What I really wanted was some sort of html2markdown filter.

I also realized I did not just want to be sent new lines, but every line anytime there was a change. If the news yesterday included a section titled “Armed conflicts and attacks”, and the news today included a section with the same title, I wanted that in my output despite it not having changed.

I solved both of these problems using the diff_tool argument of urlwatch. This allows the user to pass in a special tool to replace the default use of diff to generate the notification output. The tool will be called with two arguments: the filename of the previously downloaded version of the URL and the filename of the current version. I wrote a simple script called html2markdown.sh which ignores the first argument and simply passes the second argument to Pandoc for formatting.

1
2
3
4
5
6
7
#!/bin/sh

pandoc --from html \
--to markdown_strict \
--reference-links \
--reference-location=block \
$2

This script is used as the diff_tool in the urlwatch job definition.

1
2
3
4
kind: url
name: Legible News
url: https://legiblenews.com/
diff_tool: /home/pigmonkey/bin/html2markdown.sh

The result is the latest version of Legible News, nicely converted to Markdown, delivered to my inbox every day. The output would be even better if Legible News used semantic markup – specifically heading elements – but it is perfectly serviceable as is.

After I built this I discovered that somebody had created an RSS feed for Legible News using a service called Feed43.

Wired is running an editorial arguing that the 10,000-year clock is a waste of time (get it?).

The thrust of the article seems to be that the world sucks today, and that building a monument to inspire long-term thinking is a waste of resources – “a pleasant distraction” – since everybody alive today will be dead before any good comes of it. Which, I don’t know, seems like it’s sort of the point.

There’s plenty to criticize about The Long Now – I swing by The Interval once a year or so, always hoping that it will have become an interesting place to spend time and always leaving disappointed – but I don’t think the idea of the clock is one of them. The rate of progress on the clock(s) is another matter.

The article, however, reminded me of the idea of protopia, a neologism first coined by Kevin Kelly and lately championed – in a slightly different manner – by Monika Bielskyte.

This post was published on . It was tagged with micro.

New Year, New Drive

My first solid state drive was a Samsung 850 Pro 1TB purchased in 2015. Originally I installed it in my T430s. The following year it migrated to my new X260, where it has served admirably ever since. It still seems healthy, as best as I can tell. Sometime ago I found a script for measuring the health of Samsung SSDs. It reports:

------------------------------
 SSD Status:   /dev/sda
------------------------------
 On time:      17,277 hr
------------------------------
 Data written:
           MB: 47,420,539.560
           GB: 46,309.120
           TB: 45.223
------------------------------
 Mean write rate:
        MB/hr: 2,744.720
------------------------------
 Drive health: 98 %
------------------------------

The 1 terabyte of storage has begun to feel tight over the past couple of years. I’m not sure where it all goes, but I regularly only have about 100GB free, which is not much of a buffer. I’ve had my eye on a Samsung 860 Evo 2TB as a replacement. Last November my price monitoring tool notified me of a significant price drop for this new drive, so I snatched one up. This weekend I finally got around to installing it.

The health script reports that my new drive is, in fact, both new and healthy:

------------------------------
 SSD Status:   /dev/sda
------------------------------
 On time:      17 hr
------------------------------
 Data written:
           MB: 872,835.635
           GB: 852.378
           TB: .832
------------------------------
 Mean write rate:
        MB/hr: 51,343.272
------------------------------
 Drive health: 100 %
------------------------------

When migrating to a new drive, the simple solution is to just copy the complete contents of the old drive. I usually do not take this approach. Instead I prefer to imagine that the old drive is lost, and use the migration as an exercise to ensure that my excessive backup strategies and OS provisioning system are both fully operational. Successfully rebuilding my laptop like this, with a minimum expenditure of time and effort – and no data loss – makes me feel good about my backup and recovery tooling.

This post was published on . It was tagged with backups, hardware.

humangear capCAP+

Ten year ago I discussed the humangear capCAP. My conclusion was: the capitalization of the brand and product name is stupid, the cap itself is a good upgrade to any wide mouth (63mm) bottle, but it will allow a few drops to leak out of a wide mouth Klean Kanteen.

Recently I was made aware of a new model: the humangear capCAP+. This one adds silicone gaskets to both parts of the lid, and boasts compatibility with a wider range of bottles. However, humangear explicitly states that this one remains incompatible with the wide mouth Klean Kanteen.

I like to live dangerously, so I bought the new model anyway. For a couple weeks now I’ve been using it on the same Klean Kanteen Wide 27oz bottle used in the previous review. Despite humangear’s warning, I have had nary a drop leak out from the cap. I have tried to make the lid leak by filling the bottle and storing it on its side, and by balancing the bottle upside down on the cap, but no water has escaped.

humangear capCap+

Other changes in the new model include redesigned grip cutouts, which I find to have made no practical change to the functionality of the cap, and a cap retention thing that I thought would be kind of a gimmick but is actually surprisingly useful. (I will point out that the full name of this feature is the “humangear capCAP+ CapKeeper”. Someone at this brand hates English.)

humangear capCap+

The new model weighs 56 grams (2 oz), which is 20 grams (0.7 oz) more than the original capCAP.

I’m happy with the capCAP+. If you have the original capCAP, and it doesn’t leak on your bottle of choice, it probably is not worth upgrading. If it does leak, consider trying the new one. If you have neither model, but you use a wide mouth bottle and rely on something like the Guyot Designs Splashguard, the capCAP+ may improve your life.

The Dutch Reach

When opening the door of a vehicle with your closest arm – the left arm when exiting on the left side of the vehicle, for instance – your body is positioned straight ahead. A turn of the neck is required to see the side mirror, and a twist of the body is required to clear the blindspots of the mirror. Both of these movements require explicit motivation. With the dutch reach, you reach across your body with the opposite arm – your right arm when exiting on the left side of the vehicle. This forces your body to twist. You are automatically positioned to see the side mirror, and only a slight twist of the neck is required to clear the mirror’s blindspots.

The dutch reach is marketed as part of bicycle safety. As a biker I appreciate this, but I think this is only a small component of the method. It is about situational awareness. Sitting in a parked car is a vulnerable positionexiting more so. It is rational to want to know what you are about to step into when exiting.

Perhaps rebranding it as “tactical vehicle egress” would promote wider adoption.

This post was published on . It was tagged with defense.