{"@attributes":{"version":"2.0"},"channel":{"title":"Thanos Apollo","link":"https:\/\/thanosapollo.org\/","description":"Recent content on Thanos Apollo","generator":"Hugo","language":"en","lastBuildDate":"Tue, 07 Apr 2026 16:03:36 +0300","item":[{"title":"Bringing jabber.el Back From the Dead","link":"https:\/\/thanosapollo.org\/posts\/emacs-jabber-revival\/","pubDate":"Sat, 04 Apr 2026 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/emacs-jabber-revival\/","description":"<p><a href=\"https:\/\/xmpp.org\/software\/jabber-el\/\">jabber.el<\/a> is an XMPP client for Emacs, originally written in 2003.\nDevelopment slowed over the years, though contributors kept the package\nworking across Emacs releases.<\/p>\n<p>I took over as maintainer with the goal of modernizing the protocol\nsupport.<\/p>\n<p>Now, jabber.el is <strong>the most XEP-complete text-based client<\/strong> in\nexistence.<\/p>"},{"title":"Gnosis 0.10: Import Anki, Merge Everything Into One","link":"https:\/\/thanosapollo.org\/posts\/gnosis-8-to-10\/","pubDate":"Sat, 04 Apr 2026 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-8-to-10\/","description":"<p><strong>You can now import Anki decks into gnosis.<\/strong><\/p>\n<p>The entire Anki ecosystem, thousands of community-maintained decks\nacross every subject, is accessible from Emacs.  I can finally keep\ntrack of the <a href=\"https:\/\/www.ankihub.net\/step-deck\">AnKing<\/a> deck changes.<\/p>\n<blockquote>\n<p><em>If you can&rsquo;t beat them, import them.<\/em><\/p>\n<\/blockquote>"},{"title":"Gnosis: Design Mistakes","link":"https:\/\/thanosapollo.org\/posts\/gnosis-packages-merge\/","pubDate":"Sun, 08 Mar 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-packages-merge\/","description":"<p>The more I use gnosis, the more I notice design faults inherited from\nthe software I was previously using.<\/p>"},{"title":"Gnosis 0.8.0 Release Notes","link":"https:\/\/thanosapollo.org\/posts\/gnosis-version-0-8-0\/","pubDate":"Thu, 05 Mar 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-version-0-8-0\/","description":"Gnosis 0.8.0 Release Overview"},{"title":"Patrologia Graeca: 1500+ Greek Patristic Texts, Free and Open.","link":"https:\/\/thanosapollo.org\/posts\/patrologia-graeca-bebliotheca\/","pubDate":"Wed, 04 Mar 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/patrologia-graeca-bebliotheca\/","description":"<p>I&rsquo;ve been looking for Patristic content for my <a href=\"https:\/\/bebliotheca.thanosapollo.org\">Bebliotheca<\/a> project, a\ndigital recreation of the library of Constantinople.  My best bet was\nfinding the work of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Patrologia_Graeca\">Migne&rsquo;s Patrologia Graeca<\/a> but almost no <em>free<\/em>\nsources have the original Greek text in proper condition.<\/p>"},{"title":"Gnosis 0.7.0 Release Notes","link":"https:\/\/thanosapollo.org\/posts\/gnosis-version-0-7-0\/","pubDate":"Sun, 22 Feb 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-version-0-7-0\/","description":"<p>I&rsquo;ve finally published Gnosis version <code>0.7.0<\/code> that brings some much\nneeded changes and integration with <a href=\"https:\/\/thanosapollo.org\/projects\/gnosis\/\">org-gnosis<\/a>.  You can get the\nlatest version of gnosis via <a href=\"https:\/\/elpa.gnu.org\/packages\/gnosis.html\">GNU ELPA<\/a> or directly from <a href=\"https:\/\/git.thanosapollo.org\/gnosis\/\">upstream<\/a>.<\/p>"},{"title":"Org Gnosis 0.2.0 Release Notes","link":"https:\/\/thanosapollo.org\/posts\/org-gnosis-version-0.2.0\/","pubDate":"Sun, 22 Feb 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/org-gnosis-version-0.2.0\/","description":"<p>I just pushed a new version for <a href=\"https:\/\/thanosapollo.org\/projects\/gnosis\/\">org-gnosis<\/a>, the note taking module of\n<a href=\"https:\/\/thanosapollo.org\/projects\/gnosis\/\">gnosis<\/a>, which you can find <a href=\"https:\/\/git.thanosapollo.org\/org-gnosis\/\">here<\/a>.  The update should be available to\nall users via <a href=\"https:\/\/elpa.gnu.org\/packages\/org-gnosis.html\">GNU ELPA<\/a>.<\/p>"},{"title":"(Video) Contributing to Git Projects with Magit: PRs, Patches & Agit workflow","link":"https:\/\/thanosapollo.org\/posts\/video-contributing-with-git-guide\/","pubDate":"Fri, 06 Feb 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/video-contributing-with-git-guide\/","description":"<center>\n<p><i>Contributing to Git Projects with Magit: PRs, Patches & Agit workflow<\/i><p>\n<iframe width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/qSHw7D_88-0?si=v248FB_QuJLrabyu\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/center>\n<p>Quick video guide on contributing to git projects using Magit.\nShowing an overview of the 3 most commonly used workflows<\/p>\n<ul>\n<li>Pull Requests<\/li>\n<li>Agit Workflow<\/li>\n<li>Git patches<\/li>\n<\/ul>"},{"title":"Cgit with GNU Guix","link":"https:\/\/thanosapollo.org\/posts\/cgit-guix\/","pubDate":"Sun, 01 Feb 2026 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/cgit-guix\/","description":"<p>Recently I switched my home server to <a href=\"https:\/\/guix.gnu.org\">GNU Guix<\/a>, this is a quick guide\non how I setup <code>cgit<\/code>.  Hope this helps some of you.<\/p>"},{"title":"(Video) Emacs Notmuch with Multiple Addresses & Auto Encryption","link":"https:\/\/thanosapollo.org\/posts\/emacs-notmuch-video-guide\/","pubDate":"Thu, 18 Dec 2025 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/posts\/emacs-notmuch-video-guide\/","description":"Video guide for managing emails with Emacs, using notmuch &amp; isync."},{"title":"Daily Driving a Raspberry Pi 5","link":"https:\/\/thanosapollo.org\/posts\/daily-drive-pi5-01\/","pubDate":"Fri, 31 Oct 2025 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/daily-drive-pi5-01\/","description":"Replacing my x220 laptop with a Raspberry Pi 5."},{"title":"Emacs Everywhere, even in Wayland","link":"https:\/\/thanosapollo.org\/posts\/use-emacs-everywhere\/","pubDate":"Sat, 19 Jul 2025 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/use-emacs-everywhere\/","description":"How to use Emacs for input in any scenario in Wayland"},{"title":"Major update for Gnosis: 0.5.0 release","link":"https:\/\/thanosapollo.org\/posts\/gnosis-0-5-0-release\/","pubDate":"Tue, 17 Jun 2025 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-0-5-0-release\/","description":"Gnosis just got a major update with this new release.  With the long promised support of org-mode being added along with other major changes."},{"title":"Emacs Note Taking & Journaling using org-gnosis [Video]","link":"https:\/\/thanosapollo.org\/posts\/org-gnosis-overview\/","pubDate":"Mon, 03 Mar 2025 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/org-gnosis-overview\/","description":"Video overview about org-gnosis"},{"title":"Emacs As Your Terminal Emulator [Video]","link":"https:\/\/thanosapollo.org\/posts\/emacs-shells-video\/","pubDate":"Sat, 25 Jan 2025 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/emacs-shells-video\/","description":"Short video about Emacs shell interactions"},{"title":"Progress update on org-gnosis & a graphical interface addition.","link":"https:\/\/thanosapollo.org\/posts\/org-gnosis-progress-1\/","pubDate":"Wed, 18 Dec 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/org-gnosis-progress-1\/","description":"Progress update on org-gnosis, a roam-like note taking system."},{"title":"Emacs 30 Built-in Completion UI & Styles [Video]","link":"https:\/\/thanosapollo.org\/posts\/emacs-built-in-completions-video\/","pubDate":"Thu, 12 Dec 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/emacs-built-in-completions-video\/","description":"Short video about Emacs 30 Built-in Completion UI &amp; Styles"},{"title":"Installing GNU Guix | Using non-free drivers (NonGuix) [Video]","link":"https:\/\/thanosapollo.org\/posts\/installing-gnu-guix-video\/","pubDate":"Wed, 04 Dec 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/installing-gnu-guix-video\/","description":"Video tutorial installing GNU Guix, using NonGuix."},{"title":"org-gnosis | Roam-like note taking system","link":"https:\/\/thanosapollo.org\/posts\/org-gnosis-01\/","pubDate":"Thu, 21 Nov 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/org-gnosis-01\/","description":"Creating an org-roam replacement"},{"title":"RSS Mastery with RSS-Bridge & Elfeed [Video]","link":"https:\/\/thanosapollo.org\/posts\/rss-video\/","pubDate":"Sat, 09 Nov 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/rss-video\/","description":"Short video about RSS, RSS-Bridge &amp; Elfeed"},{"title":"Why I Prefer VC Over Magit [Video]","link":"https:\/\/thanosapollo.org\/posts\/why-i-prefer-vc-over-magit\/","pubDate":"Fri, 08 Nov 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/why-i-prefer-vc-over-magit\/","description":"Short video about VC &amp; Magit"},{"title":"Rewriting Gnosis: 0.4.0 release","link":"https:\/\/thanosapollo.org\/posts\/gnosis-0-4-0-release\/","pubDate":"Wed, 07 Aug 2024 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-0-4-0-release\/","description":"Gnosis (\u03b3\u03bd\u1ff6\u03c3\u03b9\u03c2), a spaced repetition system implementation for GNU Emacs"},{"title":"Penicillins Presentation Summarized","link":"https:\/\/thanosapollo.org\/posts\/penicillins-presentation\/","pubDate":"Wed, 12 Jun 2024 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/penicillins-presentation\/","description":"<p>A summarized version of my presentation on <a href=\"https:\/\/en.wikipedia.org\/wiki\/Penicillin\">penicillins<\/a> for my\npharmacology course.  Penicillins are \u03b2-lactams antibacterial drugs\nthat inhibit bacterial cell wall synthesis, thus categorized as\nbactericidal.<\/p>\n<h2 id=\"history\">History<\/h2>\n<p>Discovered by Alexander Fleming, in 1928. Accidentally observed that\n<em>staphylococci<\/em> did not grow around the mold of Penicillium\nrubens.<\/p>\n<p>However, it wasn&rsquo;t until 1941 the Australian pathologist Howard\nFlorey and German-born British biochemist Ernst Boris Chain\nsuccessfully developed a method to produce a pure form of penicillin\non a large scale.  This breakthrough eventually led to mass production,\nwith penicillin becoming widely available by the end of World War\nII.<\/p>"},{"title":"XMPP: Getting started with the universal communication standard","link":"https:\/\/thanosapollo.org\/posts\/moving-to-xmpp\/","pubDate":"Tue, 30 Apr 2024 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/moving-to-xmpp\/","description":"<blockquote>\n<p><a href=\"https:\/\/xmpp.org\/\">XMPP<\/a> is a libre decentralized collection of technologies, alternative\nto closed communication services.  I&rsquo;ve started self hosting my own\nxmpp server, and begun moving people from my close circle there.  This\nis a summary of my collection of notes that I made for XMPP thus far,\npublished as a short article.  If you are interested in learning more\non XMPP I recommend reading their official <a href=\"https:\/\/xmpp.org\/\">website<\/a>.<\/p>\n<\/blockquote>\n<h2 id=\"what-is-xmpp\">What is XMPP?<\/h2>\n<p>XMPP stands for eXtensible Messaging and Presence Protocol, it&rsquo;s a set\nof libre technologies that can be used for communication services,\nsuch as instant messaging, voice &amp; video calls as well as file\ntransfers.  This is done by routing <code>XML<\/code> data.<\/p>"},{"title":"Jellyfin: Powering the Self-Hosted Media Revolution","link":"https:\/\/thanosapollo.org\/posts\/jellyfin-setup\/","pubDate":"Thu, 04 Apr 2024 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/jellyfin-setup\/","description":"<p><a href=\"https:\/\/jellyfin.org\/\">Jellyfin<\/a> is my favorite service to self host, I&rsquo;ve been using it for\nmovies &amp; books and I&rsquo;d even consider using it for photos if not for\n<a href=\"https:\/\/thanosapollo.org\/posts\/immich-setup\/\">Immich<\/a>.  Jellyfin is really popular as a self hosted streaming service\nfor movies &amp; TV shows, since those platforms suffer heavily from\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Enshittification\">enshittification<\/a>.<\/p>\n<blockquote>\n<p>Jellyfin can do much more than stream your favorite movies &amp; TV\nshows.  Whether you&rsquo;re a movie enthusiast, music lover, or photo\nfanatic, Jellyfin has got you covered.<\/p>"},{"title":"Immich: Self-hosted Photo & Video Management","link":"https:\/\/thanosapollo.org\/posts\/immich-setup\/","pubDate":"Mon, 25 Mar 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/immich-setup\/","description":"<p>I&rsquo;ve recently transitioned to a pixel phone with GrapheneOS as my\nprimary device, moving from an iPhone.  The only thing that I was\nmissing is having my photos be in sync across all of my devices using\niCloud, but despite the convenience of Apple&rsquo;s iCloud service for\nsyncing photos across devices, it frequently disregards user rights\nand privacy.  Thankfully, <a href=\"https:\/\/immich.app\/\">Immich<\/a> offers a self-hosted and\nenhanced alternative while respecting my privacy &amp; user rights.<\/p>"},{"title":"Why Emacs will NEVER be popular","link":"https:\/\/thanosapollo.org\/posts\/emacs-will-never-be-popular\/","pubDate":"Mon, 11 Mar 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/emacs-will-never-be-popular\/","description":"<p>Emacs is my ride or die software, where I do all my computing.  If not\nfor Emacs, I wouldn&rsquo;t give a byte about computers.  Moved to GNU\/Linux\njust for Emacs. But let&rsquo;s face it, Emacs will forever swim against the\ncurrent. Just like Gentoo, it&rsquo;s too hardcore for the mainstream. To\nvibe with it or not, that&rsquo;s the 1 million dollar question.<\/p>\n<h2 id=\"possible-solutions\">Possible Solutions<\/h2>\n<p>Emacs needs distributions to shine in this modern digital landscape\nwhere everything should &ldquo;just work&rdquo; Distros like <a href=\"https:\/\/github.com\/doomemacs\/doomemacs\">Doom Emacs<\/a> can flex\nthe power of Emacs, enticing even those who can&rsquo;t define it.<\/p>"},{"title":"Cloudflare Tunnel: Bye Bye VPS Services!","link":"https:\/\/thanosapollo.org\/posts\/bye-bye-vps\/","pubDate":"Sun, 10 Mar 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/bye-bye-vps\/","description":"<p>VPS services, the pinnacle of freedom in the digital world!  Nothing\nquite beats the thrill of entrusting your data and services to a\nmysterious cloud entity, all while relinquishing control over your\nhardware.  And do not forget the joy of relying on a third-party\ncloud provider for your hosting needs, that may send you a <a href=\"https:\/\/old.reddit.com\/r\/webdev\/comments\/1b14bty\/netlify_just_sent_me_a_104k_bill_for_a_simple\/\">104K bill<\/a>\nfor your static site.  Who needs to own their hardware anyway?<\/p>\n<h2 id=\"my-new-setup\">My new setup<\/h2>\n<p>For the past ~6 months, I have been relying on a VPS service from\n<a href=\"https:\/\/www.ionos.com\/\">Ionos<\/a>, <em>which offers a decent service for it&rsquo;s price plans<\/em>, to host\nthis site &amp; my git server, as well as to occasionally port forward\nmedia services such as jellyfin using an ssh tunnel.  This weekend, I\nopted to migrate to an old thinkpad that I had collecting dust plus\n<a href=\"https:\/\/developers.cloudflare.com\/cloudflare-one\/connections\/connect-networks\/\">cloudflare tunnel<\/a>.<\/p>"},{"title":"Emacs Email Management | Setup Guide for mu4e & isync","link":"https:\/\/thanosapollo.org\/posts\/mu4e-guide\/","pubDate":"Mon, 29 Jan 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/mu4e-guide\/","description":"Managing emails with emacs, using mu4e &amp; isync."},{"title":"Gnosis (\u03b3\u03bd\u1ff6\u03c3\u03b9\u03c2) First Release","link":"https:\/\/thanosapollo.org\/posts\/gnosis-release\/","pubDate":"Tue, 16 Jan 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/gnosis-release\/","description":"Gnosis (\u03b3\u03bd\u1ff6\u03c3\u03b9\u03c2), a spaced repetition system implementation for GNU Emacs"},{"title":"Spaced Repetition Software Gripes","link":"https:\/\/thanosapollo.org\/posts\/spaced-repetition-software-gripes\/","pubDate":"Tue, 09 Jan 2024 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/spaced-repetition-software-gripes\/","description":"Issues with Spaced Repetition (Learning) Software &amp; Announcement of Gnosis"},{"title":"Switching To Gentoo Linux","link":"https:\/\/thanosapollo.org\/posts\/gentoo-beginning\/","pubDate":"Sun, 12 Nov 2023 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/gentoo-beginning\/","description":"The end-game of my Linux journey has begun | Switching to Gentoo, the beginning."},{"title":"Why we need more .org sites.","link":"https:\/\/thanosapollo.org\/posts\/more-org-sites\/","pubDate":"Tue, 07 Nov 2023 00:00:00 +0200","guid":"https:\/\/thanosapollo.org\/posts\/more-org-sites\/","description":"Why change the site extension to .org from .com"},{"title":"pcomplete-yay | Extensible completions for yay in eshell","link":"https:\/\/thanosapollo.org\/posts\/pcomplete-yay\/","pubDate":"Fri, 13 Oct 2023 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/pcomplete-yay\/","description":"Extensible completions for yay in eshell [Emacs Package]"},{"title":"Setting Firefox to use emacs keybindings","link":"https:\/\/thanosapollo.org\/posts\/firefox-with-emacs-keybindings\/","pubDate":"Wed, 11 Oct 2023 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/firefox-with-emacs-keybindings\/","description":"Setting up firefox with emacs keybindings, using vimium."},{"title":"Self hosting SearXNG in 2023","link":"https:\/\/thanosapollo.org\/posts\/starting-point-searxng\/","pubDate":"Mon, 25 Sep 2023 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/starting-point-searxng\/","description":"My experience self hosting SearXNG, the best way to surf the net until now."},{"title":"yeetube | Emacs Front-End for YouTube (blog)","link":"https:\/\/thanosapollo.org\/posts\/yeetube\/","pubDate":"Wed, 20 Sep 2023 00:00:00 +0300","guid":"https:\/\/thanosapollo.org\/posts\/yeetube\/","description":"Creating a front-end to play YouTube videos with Emacs"},{"title":"About","link":"https:\/\/thanosapollo.org\/about\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/about\/","description":"<h2 id=\"about-me\">About me<\/h2>\n<p><em>Hey, I&rsquo;m Thanos Apollo<\/em><\/p>\n<p>I&rsquo;m a medical student, my hobbies include:<\/p>\n<ul>\n<li>Programming<\/li>\n<li>Theology &amp; Philosophy<\/li>\n<\/ul>\n<p>I originate from Athens, Greece.  Despite that, I view my self more of\na nomad since I&rsquo;ve spent most of my life moving to different cities &amp;\ncountries, which is something that I&rsquo;ve enjoyed and plan to continue\ndoing.<\/p>\n<p><em>Currently I reside in Sofia, Bulgaria.<\/em><\/p>\n<h2 id=\"contact-information\">Contact Information<\/h2>\n<ul>\n<li>Address: <code>public<\/code> <em>at<\/em> <code>thanosapollo<\/code> <em>.<\/em> <code>org<\/code><\/li>\n<li>PGP: <a href=\"https:\/\/thanosapollo.org\/key.asc\">62B7 58D0 F671 9938 BC09 CECA 339F 736C 3A72 0928<\/a><\/li>\n<\/ul>\n<p><em>You can get my pgp key by running the following command:<\/em><\/p>"},{"title":"Bebliotheca","link":"https:\/\/thanosapollo.org\/projects\/bebliotheca\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/projects\/bebliotheca\/","description":"<p>Bebliotheca is a digital recreation of the Library of Constantinople.<\/p>\n<blockquote>\n<p>Currently under active development<\/p>\n<\/blockquote>\n<p>The site is accessible <a href=\"https:\/\/bebliotheca.thanosapollo.org\">here<\/a>.<\/p>\n<ul>\n<li><a href=\"https:\/\/git.thanosapollo.org\/bebliotheca\">Upstream<\/a><\/li>\n<li><a href=\"https:\/\/codeberg.org\/bebliotheca\/bebliotheca\">Codeberg Mirror<\/a><\/li>\n<\/ul>\n<h2 id=\"project-goals\">Project goals<\/h2>\n<ul>\n<li>A repository with all the important works that someone would have\nfound in Constantinople during the Roman Era.<\/li>\n<li>Data in plain text <a href=\"https:\/\/orgmode.org\/\">org-mode<\/a> format.<\/li>\n<\/ul>\n<h2 id=\"latest-corpus-log\">Latest Corpus log<\/h2>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>CORPUS STATISTICS:\n<\/span><\/span><span style=\"display:flex;\"><span>  Total unique works:       <span style=\"color:#ae81ff\">2690<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  Greek texts:              <span style=\"color:#ae81ff\">2316<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  English translations:     <span style=\"color:#ae81ff\">757<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  Latin texts:              <span style=\"color:#ae81ff\">374<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>\n<\/span><\/span><span style=\"display:flex;\"><span>TRANSLATION COVERAGE:\n<\/span><\/span><span style=\"display:flex;\"><span>  Greek with English:       <span style=\"color:#ae81ff\">571<\/span> <span style=\"color:#f92672\">(<\/span>24%<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  Greek with Latin:         <span style=\"color:#ae81ff\">0<\/span> <span style=\"color:#f92672\">(<\/span>0%<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  All three languages:      <span style=\"color:#ae81ff\">0<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  Greek without translation:1745 <span style=\"color:#f92672\">(<\/span>75%<span style=\"color:#f92672\">)<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  English-only works:       <span style=\"color:#ae81ff\">0<\/span>\n<\/span><\/span><span style=\"display:flex;\"><span>  Latin-only works:         <span style=\"color:#ae81ff\">188<\/span>\n<\/span><\/span><\/code><\/pre><\/div>"},{"title":"Gnosis","link":"https:\/\/thanosapollo.org\/projects\/gnosis\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/projects\/gnosis\/","description":"Spaced Repetition-like System for GNU Emacs."},{"title":"Gnosis Change Log","link":"https:\/\/thanosapollo.org\/log\/gnosis\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/log\/gnosis\/","description":"<ul>\n<li><a href=\"https:\/\/thanosapollo.org\/projects\/gnosis\/\">Homepage<\/a><\/li>\n<li><a href=\"https:\/\/git.thanosapollo.org\/gnosis\/\">Upstream<\/a><\/li>\n<li><a href=\"https:\/\/thanosapollo.org\/log\/gnosis\/\">Changelog<\/a><\/li>\n<\/ul>\n<h2 id=\"0-dot-9-dot-0\">0.9.0<\/h2>\n<h3 id=\"breaking-changes\">Breaking changes<\/h3>\n<ul>\n<li><strong>Dropped emacsql dependency<\/strong>: gnosis now uses Emacs&rsquo;s built-in\n<code>sqlite<\/code> module (requires Emacs 29+).  The new <code>gnosis-sqlite<\/code>\nbackend handles all database access.<\/li>\n<li><strong>Unified database<\/strong>: org-gnosis has been merged into gnosis.\nA single <code>gnosis.db<\/code> stores both themata and nodes.  Existing\norg-gnosis data is migrated automatically.<\/li>\n<li><strong>Decks removed<\/strong>: the deck abstraction is gone.  Existing deck names\nare automatically converted into tags during the v6 migration, so\nno data is lost.  Export and import are now thema-centric with tag\nfiltering.<\/li>\n<\/ul>\n<h3 id=\"new-features\">New features<\/h3>\n<ul>\n<li><strong>Anki import<\/strong>: import Anki decks or user collections directly with\n<code>gnosis-anki-import<\/code>.<\/li>\n<li><strong>Tag filtering<\/strong>: <code>gnosis-tags-filter-prompt<\/code> supports <code>+tag -tag<\/code>\nsyntax for include\/exclude filtering.  Used in export and\n<code>gnosis-collect-thema-ids<\/code>.<\/li>\n<li><strong>Day start hour<\/strong>: <code>gnosis-algorithm-day-start-hour<\/code> (default 3)\nlets you define when a new review day begins.<\/li>\n<li><strong>Tag bulk operations<\/strong>: rename, regex bulk rename (<code>R<\/code>), merge case\nduplicates (<code>C<\/code>), bulk delete, and suspend\/unsuspend from the\ndashboard tags view.  Tag renames are merge-safe (handles UNIQUE\nconflicts when target tag already exists).<\/li>\n<li><strong>Elapsed time intervals<\/strong>: the algorithm uses actual elapsed time\nfor interval calculation.<\/li>\n<li><strong>Review transient menu<\/strong>: <code>gnosis-review<\/code> uses transient instead of\ncompleting-read.<\/li>\n<li><strong>Template expansion<\/strong>: <code>{*}<\/code> heading markers in templates are expanded\nrelative to insertion context via <code>gnosis-org-expand-headings<\/code>.<\/li>\n<li><strong>Export with tag filtering<\/strong>: <code>gnosis-export-themata<\/code> supports tag\nfiltering and node export.<\/li>\n<\/ul>\n<h3 id=\"dashboard\">Dashboard<\/h3>\n<ul>\n<li>Tags view with regex filter (<code>l<\/code>), regex search (<code>SPC<\/code>), and tag\ncounts.<\/li>\n<li>Bulk tag rename via regex pattern (<code>R<\/code>) using a temp-table approach\nfor O(1) SQL statements regardless of batch size.<\/li>\n<li>Anki import keybinding in the dashboard menu.<\/li>\n<li>Merge case-duplicate tags (<code>C<\/code>): groups tags by case, keeps the\nmost-used variant as canonical.\n<ul>\n<li>Meant to simplify imports from anki decks hierarchical tag structure<\/li>\n<\/ul>\n<\/li>\n<li>Entry cache for themata view (avoids re-querying unchanged entries).<\/li>\n<li>Cache invalidation on tag mutations so the themata view stays fresh.<\/li>\n<\/ul>\n<h3 id=\"performance\">Performance<\/h3>\n<ul>\n<li><strong>Batch SQL helpers<\/strong>: <code>gnosis-sqlite-execute-batch<\/code> and\n<code>gnosis-sqlite-select-batch<\/code> auto-chunk IN clauses to stay within\n<code>SQLITE_MAX_VARIABLE_NUMBER<\/code>.<\/li>\n<li>N+1 query patterns eliminated throughout: tag suspend, tag delete,\nbulk link, export, and dashboard operations.<\/li>\n<li>Bulk tag rename uses a temp mapping table (4 SQL statements for any\nnumber of renames, instead of 2N).<\/li>\n<li><code>SELECT DISTINCT<\/code> replaces Elisp deduplication for tag lookups.<\/li>\n<\/ul>\n<h3 id=\"bug-fixes\">Bug fixes<\/h3>\n<ul>\n<li>Fix DST bug in <code>gnosis-algorithm-date<\/code>.<\/li>\n<li>Fix <code>gnosis-review-topic<\/code>: flatten select results, fix y-or-n-p logic.<\/li>\n<li>Fix <code>gnosis-completing-read<\/code> to use <code>completing-read<\/code> for require-match.<\/li>\n<li>Fix force-sync purge and journal link FK violation.<\/li>\n<li>Warn on duplicate filename when timestring is nil in node creation.<\/li>\n<\/ul>\n<h2 id=\"0-dot-8-dot-0\">0.8.0<\/h2>\n<h3 id=\"new-features\">New features<\/h3>\n<ul>\n<li>Auto input-method detection: gnosis detects the script of the\nexpected answer (Greek, Cyrillic, etc.) and activates the\nappropriate input method during review.\nConfigured via <code>gnosis-script-input-method-alist<\/code>.<\/li>\n<li>Change thema type and deck via <code>gnosis-update-thema<\/code>.<\/li>\n<li>Dashboard bulk-link action for currently displayed themata.<\/li>\n<li>Dashboard header-line with entry count and context.<\/li>\n<li>Asynchronous deck import with <code>gnosis-import-deck-async<\/code>.<\/li>\n<li>Demo deck included in <code>decks\/demo.org<\/code>.<\/li>\n<\/ul>\n<h3 id=\"performance\">Performance<\/h3>\n<ul>\n<li>New <code>gnosis-tl<\/code> module replaces <code>tabulated-list-print<\/code> for\ndashboard rendering (3-4x faster).<\/li>\n<li>Progressive async rendering for large dashboards.<\/li>\n<li>Batch-fetch review data instead of per-thema queries.<\/li>\n<\/ul>\n<h3 id=\"bug-fixes\">Bug fixes<\/h3>\n<ul>\n<li>Fix anagnosis event calculation in the algorithm.<\/li>\n<li>Fix cloze tag removal for edge cases and mc-cloze type.<\/li>\n<li>Fix <code>vc-pull<\/code> to run migrations after pull.<\/li>\n<\/ul>\n<h2 id=\"0-dot-7-dot-0\">0.7.0<\/h2>\n<h3 id=\"new-features\">New features<\/h3>\n<ul>\n<li>Review topic from dashboard nodes view (<code>r<\/code>), with configurable\nforward-link and backlink depth (<code>R<\/code> or <code>C-u r<\/code>).<\/li>\n<li><code>gnosis-review-topic<\/code> accepts separate forward\/backlink depth to\ninclude themata from related nodes.<\/li>\n<li><code>gnosis-save-hook<\/code> runs after saving a thema, called with the\nthema ID.<\/li>\n<li>Link integrity detection and repair commands\n(<code>gnosis-links-check<\/code>, <code>gnosis-links-sync<\/code>).<\/li>\n<li>Dashboard maintenance menu for syncing\/rebuilding nodes and link\nhealth checks.<\/li>\n<li>Dashboard shows themata with orphaned links.<\/li>\n<li>View due org-gnosis nodes linked to themata from dashboard.<\/li>\n<li>Bulk replace string in keimenon with org-gnosis node link.<\/li>\n<li>Custom <code>gnosis-center-content-during-review<\/code> option.<\/li>\n<li>Delete action available during review.<\/li>\n<li>Format org-gnosis links in keimenon during review output.<\/li>\n<li>Export deck option to include or exclude suspended themata.<\/li>\n<li>Exported decks include a <code>#+THEMATA:<\/code> header with thema count.<\/li>\n<li>Importing into an existing deck prompts for confirmation.<\/li>\n<li>Failed thema imports report the source file line number.<\/li>\n<\/ul>\n<h3 id=\"dashboard\">Dashboard<\/h3>\n<ul>\n<li>Added nodes dashboard, view org-gnosis nodes information including\nbacklinks and linked themata as well as start a review session.<\/li>\n<li>Suspend column displays <code>Yes<\/code> <code>No<\/code> instead of <code>1<\/code> <code>0<\/code>.<\/li>\n<li>Flatten Actions submenu into the home menu.<\/li>\n<li>Separate Import\/Export into its own menu column.<\/li>\n<li>Four-column layout: Navigate, Actions, Import\/Export, Maintenance.<\/li>\n<\/ul>\n<h3 id=\"algorithm\">Algorithm<\/h3>\n<ul>\n<li>Cap gnosis-synolon at <code>gnosis-algorithm-synolon-max<\/code> (default 3.0),\nfloor at 1.3.<\/li>\n<li>Add interval fuzz to prevent review clustering.<\/li>\n<li>Fix lethe event: properly reduce gnosis-plus on consecutive failures.<\/li>\n<\/ul>\n<h3 id=\"performance\">Performance<\/h3>\n<ul>\n<li>Dashboard suspend, delete, and edit update only the affected entry\ninstead of refreshing the entire buffer.<\/li>\n<li>Dashboard nodes view uses bulk queries for link counts (2 queries\ninstead of 2N).<\/li>\n<li>Deck export uses 2 bulk queries instead of 2 per thema (N+1 eliminated).<\/li>\n<li>Deck export uses plain text insertion instead of per-thema buffer scans (O(n^2) eliminated).<\/li>\n<li>Deck import wraps all operations in a single transaction with\npre-cached IDs (10K fsyncs reduced to 1).<\/li>\n<li>Review updates use a single DB query.<\/li>\n<li>Tag output uses a single DB call.<\/li>\n<li>Average daily reviews computed with a single DB call.<\/li>\n<\/ul>\n<h3 id=\"bug-fixes\">Bug fixes<\/h3>\n<ul>\n<li>Fix <code>gnosis-monkeytype<\/code> hook leak (now buffer-local).<\/li>\n<li>Fix <code>vc-pull<\/code> to reopen database properly after successful pull.<\/li>\n<li>Pre-load <code>emacsql-sqlite-builtin<\/code> to fix <code>cl-generic<\/code> dispatch crash\non Emacs 29+.<\/li>\n<\/ul>\n<h3 id=\"documentation\">Documentation<\/h3>\n<ul>\n<li>Update Introduction to describe the intended workflow with <code>org-gnosis<\/code>\n(write notes, create themata, link, review).<\/li>\n<li>Document the two separate databases (gnosis and org-gnosis).<\/li>\n<li>Update dashboard section for new menu layout.<\/li>\n<li>Add Import &amp; Export section with export options and import behavior.<\/li>\n<\/ul>\n<h2 id=\"0-dot-6-dot-0\">0.6.0<\/h2>\n<h3 id=\"new-features\">New features<\/h3>\n<ul>\n<li>View links to org-gnosis nodes during review.<\/li>\n<li><em>Monkeytype<\/em> wrong answers upon failed recalls.<\/li>\n<\/ul>\n<h3 id=\"gnosis-modeline-mode\">gnosis-modeline-mode<\/h3>\n<ul>\n<li>Add &lsquo;warning face property for due themata indication.<\/li>\n<\/ul>\n<h3 id=\"cloze-themata\">cloze themata<\/h3>\n<ul>\n<li>[fix] Properly center keimenon during reviews.<\/li>\n<\/ul>\n<h3 id=\"other\">Other<\/h3>\n<ul>\n<li>gnosis-cloze-string value defaults to <code>&quot;(...)&quot;<\/code>.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-8\">0.5.8<\/h2>\n<ul>\n<li>Update database to version 5.<\/li>\n<li>Restructure gnosis modules.<\/li>\n<li>Add monkeytype functionality.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-7\">0.5.7<\/h2>\n<ul>\n<li>Resolve issues relating to selecting multiple questions on\ndashboard.<\/li>\n<li>Resolve issues for suspending content.<\/li>\n<li>Improve performance for suspending multiple questions<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-6\">0.5.6<\/h2>\n<ul>\n<li>Fix issues for clozes with multiple identical answers.<\/li>\n<li>Improve performance for suspending multiple notes via the dashboard.<\/li>\n<li>Display newlines when reviewing notes.<\/li>\n<li>Add feature to mark all notes present at current dashboard.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-5\">0.5.5<\/h2>\n<ul>\n<li>Performance improvements for un\/suspending decks.<\/li>\n<li>Minor bug fixes &amp; adjustments.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-4\">0.5.4<\/h2>\n<ul>\n<li>New feature: open of file links in a new buffer.\n<ul>\n<li>This can be used to view images or pdf\/ebooks.<\/li>\n<\/ul>\n<\/li>\n<li>Change syntax highlighting to org mode.<\/li>\n<li>Quitting viewing notes\/decks returns to dashboard home page.<\/li>\n<li>Minor bug fixes &amp; adjustments on dashboard.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-3\">0.5.3<\/h2>\n<ul>\n<li>Fix gnosis algorithm bug for failed reviews with custom amnesia\nvalue of lower than 0.5.<\/li>\n<li>Update documentation.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-2\">0.5.2<\/h2>\n<ul>\n<li>Fix importing deck issues with non-new gnosis ids.<\/li>\n<li>Minor aesthetic changes on review header.<\/li>\n<li>Remove modeline review indication when due reviews are 0.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-1\">0.5.1<\/h2>\n<ul>\n<li>Minor bug fixes &amp; documentation update.<\/li>\n<\/ul>\n<h2 id=\"0-dot-5-dot-0\">0.5.0<\/h2>\n<p><a href=\"http:\/\/thanosapollo.org\/posts\/gnosis-0-5-0-release\/\">Announcement post<\/a><\/p>"},{"title":"jabber.el","link":"https:\/\/thanosapollo.org\/projects\/jabber\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/projects\/jabber\/","description":"Emacs XMPP Client"},{"title":"Org Gnosis Change Log","link":"https:\/\/thanosapollo.org\/log\/org-gnosis\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/log\/org-gnosis\/","description":"<p>This document contains the release notes that are included in each\ntagged commit on the project&rsquo;s main git repository:\n<a href=\"https:\/\/git.thanosapollo.org\/org-gnosis\">https:\/\/git.thanosapollo.org\/org-gnosis<\/a>.<\/p>\n<h2 id=\"0-dot-2-dot-1\">0.2.1<\/h2>\n<h3 id=\"critical-fixes\">Critical Fixes<\/h3>\n<h4 id=\"database-sync\">Database Sync<\/h4>\n<ul>\n<li>Fixed <code>org-gnosis--delete-file<\/code> querying with full paths instead of\nbasenames, causing incremental sync to silently fail.<\/li>\n<li>Fixed <code>org-gnosis-update-file<\/code> to accept full paths and correctly\ndetect journal files.<\/li>\n<li>Fixed force sync not recreating indexes after dropping tables.<\/li>\n<li>Removed redundant table rebuild in <code>org-gnosis-db-sync<\/code>.<\/li>\n<\/ul>\n<h4 id=\"emacs-29-plus-compatibility\">Emacs 29+ Compatibility<\/h4>\n<ul>\n<li>Fixed <code>wrong-type-argument processp<\/code> error on Emacs 29+ by\npre-loading <code>emacsql-sqlite-builtin<\/code> to ensure cl-generic dispatches\nthe correct methods for builtin sqlite connections.<\/li>\n<\/ul>\n<h4 id=\"other-fixes\">Other Fixes<\/h4>\n<ul>\n<li>Fixed reversed SQL condition in <code>org-gnosis-insert<\/code>.<\/li>\n<li>Fixed <code>org-gnosis-mode<\/code> not passing <code>LOCAL<\/code> argument to\n<code>remove-hook<\/code>, causing the after-save hook to be removed globally\ninstead of per-buffer.<\/li>\n<li>Fixed typo in default <code>org-gnosis-journal-file<\/code> path.<\/li>\n<li>Fixed <code>tags--cleanup-orphaned<\/code> indentation causing incorrect behavior.<\/li>\n<li>Fixed <code>org-gnosis-insert-tags<\/code> redundant expression.<\/li>\n<li>Fixed <code>org-gnosis-find<\/code> error message and redundant expression.<\/li>\n<\/ul>\n<h3 id=\"new-features\">New Features<\/h3>\n<ul>\n<li>Added <code>org-gnosis-db-force-sync<\/code> command for unconditional database\nrebuild.\n<ul>\n<li>Provides clearer alternative to <code>C-u M-x org-gnosis-db-sync<\/code>.<\/li>\n<li>Prompts for confirmation before dropping tables.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 id=\"improvements\">Improvements<\/h3>\n<ul>\n<li>Database version bumped to 4 with indexes on file columns for faster\nsync lookups.<\/li>\n<li>Simplified orphaned tags cleanup into a single SQL query.<\/li>\n<li>Extracted directory creation into <code>org-gnosis-ensure-directories<\/code>.<\/li>\n<li>Improved error messages to suggest <code>org-gnosis-db-force-sync<\/code>.<\/li>\n<li>Fixed docstrings and checkdoc warnings.<\/li>\n<\/ul>\n<h3 id=\"testing\">Testing<\/h3>\n<ul>\n<li>Added 29 regression tests covering database init, CRUD, tags, links,\nsync change detection, file naming, journal, and mode hooks.<\/li>\n<\/ul>\n<h2 id=\"0-dot-2-dot-0\">0.2.0<\/h2>\n<h3 id=\"important-changes\">Important Changes<\/h3>\n<h4 id=\"database-changes\">Database Changes<\/h4>\n<ul>\n<li>Database version bumped to 3, tracking <code>mtime<\/code> and <code>hash<\/code> for both\nnodes and journal files.<\/li>\n<li>Automatic database migration prompts when schema is outdated.<\/li>\n<li>Lazy database initialization - database connections are created only\nwhen needed, improving startup time.<\/li>\n<li>Added <code>org-gnosis-database-file<\/code> custom variable to specify custom\ndatabase file location.<\/li>\n<\/ul>\n<h4 id=\"performance-improvements\">Performance Improvements<\/h4>\n<ul>\n<li>Major performance improvements for <code>org-gnosis-db-sync<\/code> with GC\noptimization during sync.<\/li>\n<li>Two-tier incremental sync: fast <code>mtime<\/code> check, then accurate <code>hash<\/code>\ncomparison.\n<ul>\n<li>Only processes files where both modification time and content have\nchanged.<\/li>\n<li>Dramatically improves performance for .gpg encrypted files and\nlarge repositories.<\/li>\n<\/ul>\n<\/li>\n<li>Both node files and journal files now use incremental sync with\nprogress reporting showing changed\/total file counts.<\/li>\n<li>To force full resync, call <code>org-gnosis-db-sync<\/code> with prefix arg\n<code>C-u<\/code>. e.g <code>C-u M-x org-gnosis-db-sync RET<\/code>.<\/li>\n<\/ul>\n<h4 id=\"journaling\">Journaling<\/h4>\n<ul>\n<li>By default, today&rsquo;s journal entries are created in\n<code>org-gnosis-journal-file<\/code> as level 1 headings.\n<ul>\n<li>When set to <code>nil<\/code>, creates separate files for each date entry.<\/li>\n<li>Creating new entries (e.g., via <code>org-gnosis-journal-find<\/code> for an\nevent, non-date) creates separate files in <code>org-gnosis-journal-dir<\/code>\nregardless of this setting.<\/li>\n<li>Single journal file is only used for today&rsquo;s date entries.<\/li>\n<\/ul>\n<\/li>\n<li>Added <code>org-gnosis-journal-as-gpg<\/code> that when non-nil journal files\nwill be created as <code>gpg<\/code> encrypted files.<\/li>\n<li>Journal todos now only retrieve checkboxes from today&rsquo;s heading when\nusing a single journal file, improving performance.<\/li>\n<\/ul>\n<h4 id=\"tag-management\">Tag Management<\/h4>\n<ul>\n<li>Automatic cleanup of orphaned tags (tags with no associated nodes)\nwhen updating files.<\/li>\n<li>Improved tag-based node selection with dedicated functions.<\/li>\n<\/ul>\n<h3 id=\"improvements\">Improvements<\/h3>\n<ul>\n<li>Simplified parsing algorithm for better performance and\nmaintainability.<\/li>\n<li>Better handling of topic titles - only includes parent headings when\nthey have IDs.<\/li>\n<li>Added <code>org-gnosis-get-nodes-data<\/code> for retrieving node information\nwith backlink counts.<\/li>\n<li>Improved test coverage for parsing, title processing, and journal\ntodos.<\/li>\n<\/ul>\n<h2 id=\"0-dot-1-dot-2\">0.1.2<\/h2>\n<h3 id=\"important-changes\">Important Changes<\/h3>\n<p>Titles for nodes are now stacked with their parent headings.<\/p>"},{"title":"YeeTube","link":"https:\/\/thanosapollo.org\/projects\/yeetube\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/thanosapollo.org\/projects\/yeetube\/","description":"YouTube front-end for GNU Emacs."}]}}