Emacs writing experience
This month Emacs carnival theme is Writing Experience. So, why not to participate?
I use Emacs for quite a lot of writing: notes, blog posts, documentation, QA job (code, test plans, test scenarios and even some design documents).
Let's for now concentrate on first two - notes and blog posts.
Notes
Here I use both Org-mode and Org-roam. In Org-mode I maintain daily TODOs, schedules and deadlines, while in Org-roam I maintain my knowledge base. I tried to do Zettelkasten. But it was too strict on decomposing, so I failed. Nowadays, I mostly just create Org-roam entries on quite large topics (not for even smallest one, as Zettelkasten advices).
Org-roam is pretty convenient because it indexes entries and allows two-way links between them, as well as a very fast search. I use it as a Wiki and write there all sorts of information: technical, bureaucracy and even some food recipes.
Of course, I also need to sync it between my devices (both desktop/laptop ones and Android mobile device). For this task I use Syncthing. Why not Git? I actually used it before, but quickly became too tired of making commits manually (and, of course, of forgetting to do so). I even tried making this commits automatic on file save, but ended up with LOTS of commits.
Eventually, while searching for a decentralized file sync tool, I encountered a Syncthing and decided to give it a try. It mostly works fine, with one major caveat - Android version (even Syncthing-Fork) wildly consumes battery. Also, it is slightly harder to act on conflicts, but Syncthing still creates a *.conflict version of file, so manual merge is always possible. Besides it, it acts pretty reliable (and even could be configured to delete files into temporary folder while syncing, it saved me a lot of nerves).
I use Orgzly Revived to manage my Org-mode entries on my Android phone. It mostly works fine. Of course, it is not so customizable as Emacs (but what is?). However, I mostly need it to occasionally write some tasks into my inbox or mark TODO entry as DONE, so it is nothing to complain about. I don't use in-app sync in Orgzly, as I use Syncthing.
What about Org-roam - currently I don't know about any working approach to use it on mobile (besides using full Emacs). So, currently if I need to check something urgently, I just open Org-roam files as a plaintext.
Blog posts
It is nothing special here - I maintain this blog in Org-mode and export it both to HTML and Gemini using the ox-publish (it is a part of the Org-mode itself). For Gemini export I use ox-gemini. Both of them are called from the Elisp publishing script. It creates separate folders for the HTML and Gemini resources. I build a Guix package for blogs, so I could deploy them on the Guix later (:
However, for those who are not using Guix - running the publish script is pretty straightforward, just with: emacs –quick –batch –script publish.el
As English is not my mother tongue, I rely on spellchecking a lot. For this I currently use LanguageTool (running it as a container) with emacs-langtool. Here is some code snippet I use to configure it in Emacs:
(use-package langtool :bind (("C-c t c" . langtool-check) ("C-c t d" . langtool-check-done) ("C-c t f" . langtool-interactive-correction)) :config ;; For use with container image https://github.com/Erikvl87/docker-languagetool (setq langtool-http-server-host "localhost") (setq langtool-http-server-port 8010))
It is not ideal in any way, because LanguageTool is quite slow and very RAM-hungry (it is a Java app, so no surprises here). I plan to try using Harper, but I need to package it for the Guix first.
To finish with
Overall, I use Emacs for most of my writing, because I also maintain my email correspondence using Gnus. Of course, as always with Emacs, it could be tweaked a lot - and I hope I will find some inspiration in other Emacs Carnival posts this month.