Jeremy Cherfas: Posts

Jeremy Cherfas

Necessity is a mother

My friend Ton Zijlstra recently wrote about switching from TextExpander to Alfred, prompted by TextExpander's move to a subscription model. I found myself in the same boat a while back, but wasn't entirely happy with the way Alfred handled that kind of text expansion. I replied to Ton, pointing out that I preferred TextExpander because “I don’t have to summon Alfred first”.

Dumb, as I learned by actually reading about Alfred Snippets in a bit more detail and as Ton gently pointed out.

Time to start transferring those snippets over, which is also a good opportunity to clean them up a bit, sort them out a bit, and consider a collection wide affix.

Thanks Ton for prompting me to do this.

Sat, 26 Sep 2020 13:30:00 +0200

I have to test a webmention

Sometimes, a man's gotta do what a man's gotta do.

Like send a webmention to himself. Because someone else was getting an error when they tried to send one.

And then, maybe, I can try using Telegraph to resend Chris' original.

Mon, 14 Sep 2020 15:11:00 +0200

Monthly report: August 2020

A very quiet month at home, although with a fair bit of paid work to do. Got it done, mostly, a little bit late. The great treat was to see the plants on the terrace do better than ever because we were here to give them a bit of attention, even though it is impossible to keep on top of the various sap-sucking insects.

Highlights of the month:


Steps down a bit, sleep down a bit, weight down.


The new activity monitor is definitely different from the old, so this could be considered a reset for sleep and activity.




While procrastinating, I did a silly online quiz about my productivity style or needs or some such. It said I should Eat the Frog, i.e. just do one thing first thing in the morning, before even thinking about anything else.

The strange part is, this is what I have always done when I have been really under pressure, and it generally worked. I didn’t really think of that as a technique, though, and I certainly had no idea it had a name. Since getting such strong online validation, natch, I have tried to eat the frog habitually each day. In fact I’m doing that right now. And it works, for me.

In other news, I adopted a new format for the data about books I report on, and I like it. Just a few more to update.

Hours logged per month

Percent of logged hours: 2020

Previous years are on an archive page.


Seven new posts, no old ones brought in.

Managed to automate PESOS to Known, thrice-daily with cron. Getting notices of cron failures, but only in the terminal.


Resume work on Micropub for Grav?

Suck data directly out of Exist with the API?

Final remarks

I’ve enjoyed doing Eat This Newsletter weekly for the past couple of months, although I am also looking forward to resuming podcast episodes.

Here's the table

Click the triangle to see or hide the table
Month Total Daily Admin % ETP % Other %
08 138.5 5.33 45 15 40
07 83.33 4.17 44 12 44
06 171 5.70 26 19 55
05 170 5.67 40 22 38
04 175 6.03 36 18 46
03 164 7.50 38 27 35
02 129.0 6.50 45 17 38
2020-01 89.25 5.25 48 19 43

Wed, 02 Sep 2020 17:20:00 +0200

Structured data for book reviews

Bookshelves crammed with lots of books

Almost a week ago, I noted a blog post by Ana Ulin: Adding Structured Book Data to My Blog Posts. Ana added a section to the front matter of her book posts that contains information about the book in question, including her rating. She was kind enough to share her example and the partial template that displays the information on her site. Because I use Grav rather than Hugo as my CMS I couldn’t just steal Ana's template, but I was more than happy to base my front matter directly on her’s.

The relevant section of the YAML front matter for the latest book is:

    title: "All the Light We Cannot See"
    author: "Anthony Doerr"
    url: "https://bookshop.org/books/all-the-light-we-cannot-see/9781501173219"
    year: "2017"
    started: "2020-07-01"
    finished: "2020-07-23"
    rating: "5"
    image: "all-the-light-we-cannot-see.jpg"

And the Twig partial template is:

<div class="h-cite bookcard flex" >
<div class="book-cover">
<a href={{ page.header.book.url }} class="u-uid"><img src ="{{ page.url ~ '/' ~ page.header.book.image }}" alt="Book cover"></a>
<p class="book-data">
<span class="p-item h-product">
<a href={{ page.header.book.url }}>{{ page.header.book.title }}</a></br>
by {{ page.header.book.author }}</br>
Published: {{ page.header.book.year }}</br>
Read from: {{ page.header.book.started|date("d M") }} to {{ page.header.book.finished|date("d M") }}</br>
<data class="p-rating" value="{{ page.header.book.rating }}">My rating: 
{% for i in 1..page.header.book.rating %}
{% endfor %}

That seems a lot more complex than the Hugo template, but it isn’t really, just different (although I am bit jealous of that string.Repeat function).

I’m very happy with the outcome, and I think I even got the microformats correct; thanks to Ana for inspiration. Now I “just” need to update all my existing reviews. With a snippet to inject the required details, I’m hoping it won’t take long and that I have no excuses for not writing more about the books I’ve read.

Also posted on IndieNews.

Sun, 30 Aug 2020 17:30:00 +0200

📖 All the Light We Cannot See ✍

There isn’t much I can say about this luminous book that has not already been said by people far more accomplished than me. I found it a spell-binding read; the different points of view, the empathy for Marie-Laure and Werner, the timeline weaving back and forth, here and there.

How I came to read it is faintly amusing. When I have just finished a wonderful book, it takes me forever to decide what next because I am scared that anything I choose will be a disappointment. I raved about A Gentleman in Moscow to one of my best friends, and he said that he had read Towles’ previous book, All the Light We Cannot See. Of course, that is not Towles’ previous book. So what was it? Eventually we worked out that when he bought the Towles, Amazon showed him All The Light. He thought it was by the same author whereas it was actually people who liked that also liked this.

And they did.

My review on Goodreads.
Find it at an independent bookshop

Sat, 29 Aug 2020 17:30:00 +0200

Still looking for a fever

Many people have recently shared The Worst Animal in the World, the story of how we unwittingly domesticated Aedes aegypti mosquitoes and helped them to take over the world. I enjoyed reading it and learned a lot but alas, not about the question that is currently bothering me.

[T]he parasite that causes malaria was not originally present in the New World; notwithstanding the fact that [quinine] appears to target Plasmodium’s metabolism, what is it doing in the tree, and what indigenous fevers did it cure, and how?

Different mosquito, different disease, so of course I can’t fault the Atlantic article.

In looking around for answers, I’ve learned a little bit about how the malaria parasites might have moved from gorilla to human and then, as a result of the slave trade, how they adapted to more than 70 different anopheline mosquito species around the world. Also, Plasmodium species infect birds, mammals and reptiles in South America. But my questions remain?

Were there forms of human malaria in South America before the slave trade?

What fevers did local people use cinchona bark to cure?

I’m sure there is an answer. I just have not been able to find it. Someone — anyone — please help.

Wed, 26 Aug 2020 19:30:00 +0200

On eating and etymology

Last week we went out of town to meet friends from the UK for lunch, and I ate the most superb galletto alla diavolo I’ve had in a long time.

Alla diavolo is how they prepare almost all chickens in Italy. Go to a butcher, pick out a bird, and it will still have head, feet, everything. He’ll ask whether you want him to clean it. I do. But I also pay close attention, because if I’m not he’ll have cut it up the backbone and splayed it out before you can say knife.

Spatchcocked it, in English.1 That’s not what I want at home.

Out for lunch is another matter. This bird was succulent, with crispy skin, perfectly seasoned and an absolute delight. Having dealt with it, we turned to what it was. A galletto is a diminutive gallo, obviously, so a young chicken. Maybe only a young male chicken, a cockerel?2 Try as we might, though, we couldn’t think of an English word for a bird of that age. Did that mean the English don’t have a tradition of eating cockerels?

To me, it makes a whole lot of sense to eat young male animals, because inevitably they are surplus to requirements. Nevertheless, aside perhaps from capons and steers, and I’m guessing most people don’t know what those are, we tend not to advertise the fact.

Back home, I did some more research, and the closest I could come was poussin: “A chicken killed young for eating”. So, a loan word, and one that had not been Anglicised post 1066, unlike mouton=>mutton or boeuf=>beef. No wonder I hadn’t been able to bring it to mind.

Is there, though, a more precise definition? When does a poussin become a chicken? Of course there is!

European Commission Regulation (EC) No 543/2008 lays down detailed rules as regards the marketing standards for poultrymeat. First, note that an ordinary chicken is a bird “in which the tip of the sternum is flexible (not ossified)”. I don’t exactly how old the bird has to be for the breastbone to be fully ossified, and I expect it depends on breed, but beyond that point it becomes a cock, hen, casserole or boiling fowl.

More important, for my purposes:

— poussin, coquelet: chicken of less than 650 g carcase weight (expressed without giblets, head and feet); chicken of 650 g to 750 g may be called ‘poussin’ if the age at slaughter does not exceed 28 days.

I take this to mean that a dressed bird that weighs less than 650 g is a poussin at any age, while a bird that weighs between 650 and 750 g is a poussin only if it is less than 28 days old. Also, no mention that the bird must be of one gender or the other.

The Italian version has galletti in place of pouissin, coquelet. But is there really no non-Frenchified word in English?

I should add that I am now tempted to try a spatchcocked bird at home as it is quicker than a whole bird and offers more crunchiness and greater succulence.

  1. The word apparently comes from 18th century Ireland, according to this Guide to Spatchcock a Chicken

  2. And of course, in Italian as in English, it has exactly the same connotations applied to a cocky young fellow. 

Sat, 22 Aug 2020 18:00:00 +0200

Death by bigotry

A book I am reading made passing reference to Oliver Cromwell’s refusal to take quinine for his malaria. The history of quinine is tangled and uncertain, but a few things are constant. Jesuit missionaries learned from Amerindians that the bark of the Cinchona tree could cure fever.1 It was taken up by Pope Urban VIII and spread through much of Europe as Jesuit’s bark or Jesuit’s powder.

Cromwell, of course was having none of that. He died in 1658, probably of malaria, convinced, like many of his countrymen, that the popish powder was a plot to undermine the Anglican church.

A knavish Cambridge man, Robert Tabor, helped the English to overcome their objections, with classic misdirection. Having apprenticed as an apothecary, Tabor set himself up as a feverologist in the malaria-ridden marshes of Essex. There he perfected the use of quinine, disguising it’s bitter taste with opium and wine. Knowing of quinine’s standing, however, he kept the recipe secret and railed against it in public:

Beware of all palliative cures, and especially of that known as Jesuits' Powder … for I have seen most dangerous effects following the taking of that medicine.

Having cured local people in Essex, he then cured Lord Normanby, who recommended him to Charles II when he had a bad bout of malaria (see Robert Talbor, Charles II, and Cinchona A Contemporary Document). That set Talbor on the road to fame and fortune, welcome in the royal houses of Europe. (Lots more details here and here.)

Why bring this up now? Let’s just say it struck a chord, what with quinine’s (and Talbor’s?) modern descendent hydroxychloroquine and you-know-whom and poor old Cromwell needlessly dying at 59 essentially of bigotry.

  1. One of the puzzles is that the parasite that causes malaria was not originally present in the New World; notwithstanding the fact that it appears to target Plasmodium’s metabolism, what is it doing in the tree, and what indigenous fevers did it cure, and how? Nature is wonderful. 

Thu, 13 Aug 2020 09:30:00 +0200

A new activity tracker

On a whim — a well-researched whim — I recently bought a new activity tracker, a Xiaomi Mi-band 5. It was intended to replace my Garmin Vivofit, which has served me more or less faithfully for six years. The original impetus for seeking a replacement was that I fancied keeping more of an eye on my heart rate, but only because since the lockdown I have actually been exercising more frequently and more intensely than before, and while that is its own reward, it would be nice to see some additional evidence that I am getting fitter.

The Xiaomi is a lot less expensive than the cheapest Garmin replacement, cheap enough that I can consider this an experiment, brought forward by the recent unpleasantness at Garmin. What is has shown, so far, is just how “sensitive” trackers can be.

I’ve been wearing both on my wrist for a couple of days now, just for fun. And right now, the Garmin shows me having taken 3680 steps while the Xiaomi says the number is 3697. Not a huge difference, I admit, and of course until I had two activity trackers, I was not in the least bit concerned about the accuracy of either one. Now I am.

Yesterday I did a experiment, twice, of counting 100 steps.

100 counted steps Xiaomi Garmin
Trial 1 116 107
Trial 2 105 99

What surprised me was that, so far, neither one is consistently better than the other. Which just goes to show something or other. They differ on sleep tracking too, and though the Xiaomi is supposed to record naps, it failed to do so yesterday. There’s probably an option I have not yet found.

The new tracker is certainly a lot more capable than the old; six years is a long time in consumer electronics. It does measure heart-rate. Or rather, it shows me a number, which may or may not be accurate. I have nothing to check that with easily.

I don’t really like the Mi Fit app, I have to say. Perhaps it is just unfamiliarity, but things seem to be hidden under out of the way menu options, and there’s altogether too much decoration and not enough information. But it does sync automatically, rather than me having to do anything, so that’s nice.

Of course, the question remains of how much use Xiaomi is making of my data; I just don’t know and I don’t even know how to find out whether it is phoning home with all my secrets.

Then there’s the additional question of owning my data. As this is only my second ever activity tracker, I haven’t so far come across the need to extract my past data, but that’s something I ought to look into. I grabbed a screenshot of my previous personal bests. It’ll have to do, and I should make an effort to set some new ones.

Grab of my personal best scores

Maybe tomorrow I will remove the Garmin and stop worrying about accuracy and truth. But first I’ll do a couple more counted trials.

Thu, 06 Aug 2020 15:30:00 +0200

Monthly report: July 2020

Not a huge amount to report this month, mostly because we were on holiday for a little more than two weeks, and a glorious holiday it was too. We are very fortunate not to be in either of our home countries, so were able to enjoy travelling, for one thing, and great places to travel to, for another. And I promised myself I wouldn’t bang on about the tragic landscape of dead olive trees in Puglia, so I won’t.

Highlights of the month:


Steps down a bit, sleep down a bit, weight down a bit.





Mostly a question of tending to minor things while away, and then a couple of decent jobs after our return.

Hours logged per month

Percent of logged hours: 2020

Previous years are on an archive page.


Four new posts, no old ones brought in.

PESOS from Instagram to WithKnown wasn’t even a goal at the start of the month. Then I learned about Bibliogram, which offers a straightforward RSS feed of an Instagram profile. That, I thought, could allow me to suck the information out of Instagram and bung it on my own site. After a couple of false starts and a bit of faffing around, I managed to get it working.

Noone was more surprised than me.


Automate PESOS to Known, probably with cron and try to ensure that I get some kind of notice when any cron job fails.

Resume work on Micropub for Grav?

This still remains unlooked at: It would be good to error check the script that pulls in the podcasts I’ve listened to. Why does it occasionally miss an episode when the data clearly show I listened to it?

Final remarks

Very rested.

Here's the table

Click the triangle to see or hide the table
Month Total Daily Admin % ETP % Other %
07 83.33 4.17 44 12 44
06 171 5.70 26 19 55
05 170 5.67 40 22 38
04 175 6.03 36 18 46
03 164 7.50 38 27 35
02 129.0 6.50 45 17 38
2020-01 89.25 5.25 48 19 43

Sat, 01 Aug 2020 17:20:00 +0200

Page created: Mon, Sep 28, 2020 - 09:05 AM GMT