Sunday, August 6th, 2017 Bongusta! and how it works ~~~~~~~~~~~~~~~~~~~~~~~~~~ So I created this phlog aggregator called Bongusta![1] and people seem to like it and even use it. I was already asked for the source code, but as I'm not exactly good in sharing my sources, I'll try at least to describe, how Bongusta! works. I may later upload the source code to my GitHub repository [2], but let me polish it a bit before that. Anyway: The whole aggregator is just a single Perl script, invoked every midnight (CET/CEST time) by the cron daemon. There is a list of aggregated phlogs in the form of name => URL hash. Not much to say about the " name" part of the hash, it's just the name of the particular phlog and is displayed exactly as is. But as some phlogs don't have a single URL for all posts, but more complicated structure like subfolders by month[3], the URL has to be a bit more flexible. For such phlogs the URL can contain two special strings: #yyyy# and/or #mm#. In the first step the script goes through the hash and replaces all special strings with value determined by the current date. In first two days of every month, two URLs are created from every definition with special strings: one for the current month and one for the previous. In all other days just the current month is used, i.e.: definition: gopher://uninformativ.de/1/twitpher/#yyyy#-#mm#/ is parsed on 2017/08/01 and 2017/08/02 as: gopher://uninformativ.de/1/twitpher/2017-07/ gopher://uninformativ.de/1/twitpher/2017-08/ but on 2017/08/03, 2017/08/04, etc. as: gopher://uninformativ.de/1/twitpher/2017-08/ This is just to make sure, that the last post of the month is not missed, even though in my timezone is another month than in the timezone of the phlog author. Then the script goes through all the parsed URLs, fetches the gophermap and calculates checksum for each of them. If the checksum is different than the last one stored, it makes an entry to the Bongusta! gophermap and saves the new checksum. And that's it. It could for sure be done better, but it works for the moment. I still think that there is not much to see in the code, I'll try to make it a bit readable and then share it with the rest of the world. Right now I am happy, that Bongusta! works and that somebody finds it useful. [1] gopher://i-logout.cz/1/en/bongusta [2] http://github.com/logout128 [3] gopher://uninformativ.com/1/twipther .