TinyLög

avatar: 🚬

2025-04-04 Bonobo hoots

“Hoot” would be a nice term for short-form social media posts. The meaning it conveyed would be less complex than that of the bonobos, though: “Yada yada yada. Pay attention to me.”

‘Uniquely human’ language capacity found in bonobos [Science]
Their meanings appeared different enough from those of their constituent calls that they seemed to count as nontrivial combinations. “High hoot and low hoot” was one of these. “Low hoot,” the team found, is often used in situations of high excitement, and appears to mean something like “I am excited.” “High hoot” is used when bonobos want to alert others to their presence and may mean “Pay attention to me.” But the combination of the two calls doesn’t simply mean “I am excited, pay attention to me”; instead, it conveys a more nuanced message. It is used specifically when another individual is putting on an aggressive display. The bonobo using this call combination might be trying to stop the other individual from displaying or get others in the group to pay attention to the caller, the authors suggest.
In the Calls of Bonobos, Scientists Hear Hints of Language [The New York Times]

2025-02-22 Лайка browser

As they say, there are two hard problems in computer science: naming things and CSS. For my toy gemini browser, first I had to tackle CSS styling – it made me want to write Rust. So I decided to add DNS over TLS support – but the type design of the rust library I used made me want to (learn and) write JavaScript!

pub type TlsClientStream = TcpClientStream>>>;

In the meantime, as I’ve been eating my own dog food on the Geminispace, I also solved the naming. I reused the name I had given to my terminal browser, but anyways it’s a cache-hit. Lo and behold, Laika browser with all its glory:

Screenshot of a capsule (dark)
Screenshot of a capsule (light)
Screen recording of (yet incomplete) response streaming
Screenshot showing some TLS niceties
Screenshot showing text in Armenian and Cyrillic scripts
Screenshot showing text in Arabic script

When client authorization, input query submitting and proper response caching is implemented, it would be ready for testing on different operating systems and devices.

2025-02-15 More on line joining with calendar entries

On each interactive shell, I am reminded by the events of the day via calendar(1) command. Some things are worth remembering, and some are worth –as a poet articulates– keeping in mind like a nail.

But it always bothered me that the events were not being sorted by date. I quickly tried piping to sort(1), and since most of the entries have the year at the end, before piping I could copy it to the beginning and remove afterwards. However soon I noticed that it wouldn’t work as some entries occupied more that one line. And ended up with a long-standing TODO in my shell configuration, which I finally sorted out.

Here’s a snippet from `calendar.history`, saved as /tmp/calendar.demo:

01/03	Margaret Thatcher becomes the longest-serving British
	Prime Minister in the 20th Century, 1988
01/03	Benito Mussolini announces he is taking dictatorial powers
	over Italy, 1925
02/18	Joseph Goebbels delivers the Sportpalast Total War speech, 1943
12/19	Hitler becomes Supreme Commander-in-Chief of the
	German Army, 1941

Normally I use `calendar -A0` to display just today’s entries, but for demonstration purposes:

$ calendar -f /tmp/calendar.demo -W 365
18 Feb  Joseph Goebbels delivers the Sportpalast Total War speech, 1943
19 Dec  Hitler becomes Supreme Commander-in-Chief of the
        German Army, 1941
 3 Jan  Margaret Thatcher becomes the longest-serving British
        Prime Minister in the 20th Century, 1988
 3 Jan  Benito Mussolini announces he is taking dictatorial powers
        over Italy, 1925

And the combination of line joining, sorting with year shuffling, and final line breaking:

$ calendar -f /tmp/calendar.demo -W 365 \
  |awk 'NR==1 { x=$0; next }
        /^\t/ { sub(/^\t/," "); x=x $0; next }
              { print x; x=$0 }
        END   { print x}' \
  |awk '{ match($0,/[12][0-9]{3}/); print substr($0,RSTART,RLENGTH) $0 }' | sort -g \
  |sed -E 's/^[0-9]{4}//;s/^/\t•/' | ufmt -s -w 99 | sed 's/^\t•//' | ufmt -p $'\t'
 3 Jan  Benito Mussolini announces he is taking dictatorial powers over
        Italy, 1925
19 Dec  Hitler becomes Supreme Commander-in-Chief of the German Army, 1941
18 Feb  Joseph Goebbels delivers the Sportpalast Total War speech, 1943
 3 Jan  Margaret Thatcher becomes the longest-serving British Prime Minister
        in the 20th Century, 1988

Edit(2025-02-16): Updated to find year anywhere, not just at the end.

  awk '$NF~/^[0-9]{4}$/ { print $NF $0; next }9'

2025-02-02 Philosemitism

More and more I’ve been seeing a manifestation of samsāra where, after overshooting the targeted sweet-spot on the vicious cycle, one arrives at the opposite. To make things worse, the path to nirvāna does not look clear. The old paths are either bulldozed or gentrified.

Article on German political psyche (The Guardian)

2024-12-25 Deirdre of the Sorrows

I used to (almost) live for music – buying couple of albums per week, exchanging mixtapes of rarities and (later) chasing bootlegs through mailing lists and FTP servers. For some years now, I don’t really care for music.

I recently found out that some of those most candid recordings were originating from a KCRW FM radio programmer, who also taped each. And there’s a stream of those recordings, from late 80s through the 90s.

I’m not nostalgic (those who are so good with words, would give another word for it) but nowadays I enjoy listening to them. It’s like an interesting time machine to the heyday of avant pop – even occasionally calling people to write letters to Amnesty International, as “knowing that being seen changes things”.

KCRW Deirdre O’Donoghue Tapes stream

Happy Christmas / Hanukkah / Holidays for those that celebrate, and a happy Festivus for the rest of us!

2024-12-05 A Taste of Armageddon

When we are bombarded with televised war news, I always remember that old Star Trek episode I’d seen as a kid. Ddg search still works good enough that I could find the name of the episode at first attempt – without AI assistance.

Unfortunately I couldn’t find an actively seeded torrent for that episode, and I’m no trekkie to download hundreds of gigabytes of old episodes. Also, I don’t understand why they tried to enhance the CGI effects.

Start Trek S01E23 original vs CGI-enhanced comparison

2024-11-20 line breaks with fmt and translation tip with Shortcuts.app

I’ve always been bitten by the GNU-fmt and BSD-fmt beeing two separate programs with different flags. Luckily, there is gnu coreutils (brew install coreutils) with its g-prefixed (gfmt, gdate etc.) binaries. However, their line breaking algorithm falls ‘short’ with multibyte characters – terribly so with East Asian or Caucasian languages.

coreutils bug report with a patch

Instead of re-compiling with that patch, I switched to the coreutils rust port (brew install uutils-coreutils) with the u-prefixed binaries.

rust port of coreutils

It’s handy to line-break for terminal output; and line-join for scripts that expect unbroken paragraphs, like this on-device translation shortcut:

Shortcuts.app screenshot showing the components
alias translate-to-english='shortcuts run "Translate to English" --output-path - --input-path - |cat'

2024-11-06 Svendborg Poems

Du der du, sitzend im Buge des Bootes
Siehest am unteren Ende das Leck
Wende lieber den Blick nicht weg
Denn du bist nicht aus dem Auge des Todes.
— Berthold Brecht
Seated up in the boat's bows, as you
Notice the leak down at the other end
Better not turn your eyes away, my friend
For you are not outside Death’s field of view.

2024-10-27 Without nomberynge a man can do almost nothynge, with the helpe of it you maye attayne to all thyng

Tom Johnson’s review of “By the Numbers” by Jessica Marie Otis
In 1538, Cromwell mandated that every parish should keep a register to record ‘the day and year of every wedding, christening and burying made ... and also there insert every person’s name that shall be so wedded, christened or buried’. People feared that it was a ruse for a new tax. The truth was subtly worse: it was an attempt to pin them down, to fasten social identity to irrefutable documentary evidence. Big data for the Leviathan.

I suppose this tradition continued via neo-Pythagoreans to Brethren of Purity and mystic commentaries of Abrahamic religions:

What mathematical heads can sense – and what the rest of us would do well to remember – is that at the bottom of number there is a holy mystery. Can something truly be the same as itself? (If so, it can be counted.) Numbers present us with the oscillation between likeness and difference, mathematics with a language that might bridge the human and divine. Adelard of Bath, who pioneered the translation of Arabic mathematical works into Latin in the 12th century, wrote that ‘all visible things are subject to number ... [which] is latent in the reality of things themselves.’ He quoted Xenocrates: ‘The soul is number moving itself.’ In premodern England, this soul was alive and kicking, present in the fingers, the grain of the tally, the geometrical line drawn in the sand. Number had a texture.

2024-09-09 Email reactions

TIL email reactions via Alex Schroeder’s post. I’m not sure if received reactions can be integrated into (neo)mutt without a separate database, but sending reactions would certainly be doable.

Google’s single-emoji approach looks saner. But for the time being, I think the proper way to compose reactions would be using both specifications inside a MIME multipart/alternative container.

Alex Schroeder’s post
Sandra’s tinylog entry @2024-09-06 07:09
Gmail reactions
RFC9078 “Reaction: Indicating Summary Reaction to a Message”
Delta Chat’s implementation (comment on top about extensions to RFC9078)

Edit (2024-09-18):

Neomutt: composing multipart/alternative emails

2024-08-23 Why Bodhidharma came from the west

I’ve always felt Mahāyāna Buddhism’s influence on unorthodox western beliefs. But Kotyk’s book shows the other half of the interrelation, using primary sources.

"Sino-Iranian and Sino-Arabian Relations in Late Antiquity" by Jeffrey Kotyk

2024-08-13 Steve Jobs on privacy

After an insightful talk, Steve Jobs gets a question from the audience about “probable privacy issues”. Although he was laying out a vision about future problems and solutions, he simply evades the question by saying “I haven’t heard a ton of issues concerning these giant databases knowing everything about us”.

Talk at Aspen (June 15, 1983). Full video at the bottom of the page, question at 29:45.

2024-08-12 Olympics

It’s clear that the current clustering criteria do not produce a fair competition. The whole professional sports is optimised for the sponsors and broadcasters, even the gender controversies and the resulting enmity among groups with different viewpoints.

I didn’t watch any of the games except for the Turkey-Serbia air pistol mixed team event. Şevval İlayda Tarhan was as cool as her teammate.

2024-08-11 Hebrew alphabet

Spent the day learning how to read in Hebrew alephbet. If I can find time to practice couple of words per week, it might stick. Still need to find about the intricacies of the letters that sound the same in modern Hebrew, but got tired of the clickbait YouTube videos.

יְהִי אוֹר

2024-07-20 Pythagorean symbola

Pythagorean akousmata compiled by A. Izdebska

Formatting in gemtext was a challenge, the popular Lagrange browser cannot render the Arabic parts properly and with a TUI it’s mostly at the mercy of the terminal emulator.

Apart from the legends attributed to them, i think these are the only remnants from the Pythagoreans.

Later, people used these for utilitarian purposes like teaching rhetoric – as is the case with their mathematics, acoustics and philosophy.

As a side note, it reminded me of the Greek Anthology from Brautigan’s “Willard and His Bowling Trophies”.

2024-07-13 Firefox 128 and adtech

Why wasn’t this opt-in-by-default feature ‘advertised’ better, Firefox?

Edit (2024-08-09): Gems from 2017 Google ad strategy document

X (Twitter) thread by @jason_kint

2024-06-19 Remembrance

Remembrance

>

When a pair of doves take wing
When roasted cloves smelling
Not something to remember, but
Out of blue, comes to mind

>

It was almost sunrise
You too, like all, would rise
Still drowsy perhaps
Your night comes to mind

>

Like the names of flowers I love
Like the names of streets I love
Like the names of all my loved ones
Your names come to mind

>

Hence the shame of comfy mattress
Hence the pensiveness of kisses
Meeting through holes of trellis
Your fingers come to mind

>

I've seen many loves, friendships
I've read historical heroisms
Solemn, simple, and befitting our times
Your behaviour comes to mind

>

When a pair of doves take wing
When roasted cloves smelling
Not something to forget, but
Can't help, comes to mind

>

— Melih Cevdet Anday (translation: sy)
Bob Dylan – Julius And Ethel

2024-06-02 umlaut and diaeresis

They look the same, but their functional difference can be understood from word origins. One is from from German Umlaut, from um ‘about’ + Laut ‘sound’. The other is via Latin (denoting the division of one syllable into two) from Greek diairesis (διαίρεσης) ‘separation’, from diairein ‘take apart’, from dia ‘apart’ + hairein ‘take’.

Umlaut in Wikipedia
Diaeresis in Wikipedia
Röck döts in Wikipedia

An anecdote on The New Yorker’s diaeresis:

[S]he used to pester the style editor, Hobie Weekes, who had been at the magazine since 1928, to get rid of the diaeresis. She found it fussy. She said that once, in the elevator, he told her he was on the verge of changing that style and would be sending out a memo soon. And then he died.

>

This was in 1978. No one has had the nerve to raise the subject since.

2024-05-29 Prison Notebooks

I like how Gramsci’s “Quaderni del Carcere” resemble tinylogs.

Unelaborate in style, yet with a broad scope and a multitude of references to what others have written.

2024-05-24 Super Mario no jump challenge

I’m so not-a-gamer that I didn’t know that 3D Super Mario was even a thing until recently. Curious about the recent news, I’ve learnt enough to appreciate what they have been doing.

And that’s crazy! Not just half-a-button crazy, but four-parallel-universes crazy!

2024-05-22 CLI for macOS dictionary

Apple removed the calendar data from /usr/share/calendar with the previous release of their OS. Unless people download and put it in $HOME/.calendar from BSD repository, they wouldn’t know that on this day in 1813 Wagner was born in Leipzig or in 1973 Ethernet was first described.

I wouldn’t bet on them to provide a CLI for their DictionaryServices either. Here’s a binary that I use daily – from the shell with various aliases, and from vim based on 'spelllang's.

dictionary.7z [0.5MiB (2MiB uncompressed)]
$ dictionary -d arab -d simplified -d german -d greek gemini
     Greek - English      (Stavropoulos Oxford Greek-English Learners Dictionary)
┄ Gemini | ˈdʒemɪnaɪ | n C (αστρολ.) Δίδυμοι.

    German - English      (Oxford German Dictionary)
┄ Gemini | BrE ˈdʒɛmɪniː, AmE ˈdʒɛməˌnaɪ | noun (Astrology, Astronomy) Zwillinge Pl.; Gemini Pl. see also Aries

Simplified Chinese - English (牛津英汉汉英词典)
┄ Gemini | BrE ˈdʒɛmɪniː, AmE ˈdʒɛməˌnaɪ | noun
① uncountable Astronomy 双子(星)座 shuāngzǐ(xīng)zuò
② uncountable Astrology (sign) 双子宫 shuāngzǐgōng [黄道第三宫]
③ countable plural Geminis Astrology (person) 属双子(星)座的人 shǔ shuāngzǐ(xīng)zuò de rén

    Arabic - English      (Oxford Arabic Dictionary - عربي-إنجليزي • إنجليزي-عربي)
┄ Gemini | BrE ˈdʒɛmɪniː, AmE ˈdʒɛməˌnaɪ | noun
⒈ (sign) ‫بُرْج الجَوْزاءِ‬
⒉ (person) [‫من مَواليدِ بُرْجِ الجَوْزاءِ‬]

2024-05-21 Empires do not like rich islands with strong defences

Thasians had to demolish their walls at least twice: first, at the request of Darius I of Persia, and then by Athens. Empires do not like rich islands with strong defences.

2024-05-20 Gemini and rustls

Two simple things took me hours to sort out with rustls:

Tried to add a GUI for fun. Although documentation is sparse, I was amazed how easy it was with iced-rs¹. There are still rough edges; settings, menus, dialogs, copy-paste and disk persistance is missing. I also need to dig into async integration etc, but the rapidly-putting-together-a-gui experience was way better than other (mostly immediate mode) options.

Screenshot
¹ iced: A cross-platform GUI library for Rust

2024-05-15 Benshi

Surfing the small web more lately. Thought a little about the parallels between cinema and the web as media.

Benshi (弁士) were Japanese performers who provided live narration for silent films

Edit (2024-06-02): Related short video:

How silent movies give fried brains a break

2024-05-13 kristall browser for gemini

I couldn’t find a good TUI gemini browser and installed kristall¹ browser. To build on macOS, you need to get the qt@6 libraries out of reach.

brew unlink qt
make build/kristall
brew link qt
¹ kristall.random-projects.net

Edit (2024-05-15): Also need this patch to render local gemtext

diff --git a/src/protocols/filehandler.cpp b/src/protocols/filehandler.cpp
index 32beeb0..1a8abda 100644
--- a/src/protocols/filehandler.cpp
+++ b/src/protocols/filehandler.cpp
@@ -28,6 +28,7 @@ bool FileHandler::startRequest(const QUrl &url, RequestOptions options)
         QMimeDatabase db;
         auto mime = db.mimeTypeForUrl(url).name();
         auto data = file.readAll();
+        if (file.fileName().endsWith(".gmi")) mime = "text/gemini";
         emit this->requestComplete(data, mime);
     }
     else if (QDir dir = QDir(url.path()); dir.exists())