Monday, July 05, 2021
A reimplementation of a web idea in Gemini
Way back in the day,
“ping servers” were popular and I added support for it to mod_blog
,
only to remove it a few years later when the one I was using
(the most well known one—I think it was weblogs.com
but it's been over fifteen years or so)
stopped working.
I then removed the support from mod_blog
because I didn't feel it was worth keeping a feeature around I didn't use.
Then about a week or so ago,
a similar service just started up for Gemini based blogs,
and given that I serve up my blog via Gemini I figured I could support that feature again.
But as I started,
I had an idea—instead of hardcoding support for Antenna in mod_blog
,
why not support the idea of a “hook”
(like git
)?
It would be easier to write a script to update Antenna
(since I already support TLS and Gemini URLs
in Lua)
than to try to do that all in C.
It wasn't that hard. One function to execute a script and some judicious calls to said function and I have a way to notify external services of new updates.
I wish I had thought of this concept back then. It would have saved me the trouble of adding, and later, removing, code to support various notification sites as they came and went.
Ah well … live and learn.
It's still a sane library for decoding DNS packets, but now it's a sane library for encoding as well
It's software update day here at Chez Boca.
In addition to an updated mod_blog
,
there's also an updated
SPCDNS
—version 2.0.0!
It only took about ten years (and about four years after it was first requested) but the library now supports full encoding of 30 DNS records. The reason I didn't include such support intially is that the encoding of DNS domain names in the records is not straightforward. It uses a scheme to compress the data such that it's easy to parse, but not so easy to encode without allocating memory which is something I wanted to avoid. A result is that there is a hardcoded limit to the number of domain names that can be encoded, but just how many domain names is … hard to say due to the compression scheme. And because of this, the encoding routine does use a bit more memory than it previously did.
That, and an API change with the Lua wrapper (returning an integer error number instead of a string error message) is why I decided to make this a 2.0.0 release. Users at the C level shouldn't see any change though.