Replacing elfeed with newsticker (built-in)
Intro: Are my decisions, mine?
Skip this if you are only here of the Emacs bits!
The other day someone asked me what I chose caddy over nginx for my reverse proxy.
That's a great question, why?
Caddy has some great quality-of-life features, such as configuring TLS out of the box for you whereas nginx does not.
But how hard is it to configure TLS? Well, I wouldn't know. I never used nginx.
And here is the interesting part. Why did I choose caddy, if it solves a pain I never felt?
The truth is, I didn't choose caddy; I let others choose it for me.
I read online somewhere that someone was using caddy, and simply followed.
And this prevented me from investing a few hours in understanding how to setup TLS for a domain using an ubiquitous and trusted, widely available technology.
It's intriguing that I went straight to get the solution to a problem I didn't have.
In this case, it is not an issue: caddy is a great tool.
But it made me wonder: how often my thoughts are truly mine? How often my decision are mine?
I consume tons of information. I read a lot. Listen to many podcasts.
It feels like thinking, but is it? I am not so sure.
I want to cultivate my critical thinking. I believe it's a muscle that is easy to not exercise in our modern world.
For the last few months, I have started to really try to protect my thinking space fiercely.
For example I turned off comments on Youtube by default. I avoid listening to podcast first thing in the morning. I write a book review before looking at what others think of the book.
I want to force myself to think before yielding my thinking to some strangers online.
This is my frame of mind for deciding to give newstickers a go rather than using elfeed.
My newsticker configuration
This is my configuration:
olivetti-modeis enabled (it centers the text, a.k.a. 'Zen mode'1), and the article window is selected.variable-pitch-modeis enabled to improve readability.TABandS-TABare set to jump to links (and back). Once on a link,Enterwill open the link at point ineww.qis set tonewsticker-treeview-quiteverywhere, so all newstickers buffers are closed.- the mode-line are hidden to remove distraction. I have thin borders to keep each window distinct.
I played with the idea of modifying newsticker--treeview-window-init to use vertical panes for the list of articles to mimick elfeed, but in the end I prefer the layout proposed by newstickers. It is a bit on the heavy side
Now I hit "C-c e e" and newstickers opens.
I use f and F to selected my next or previous feed.
n and p to select the next article of the current feed, or N to select the next unread of any feed.
Finally, I can use i to mark an article as "immortal" so it is never removed.
This does everything I need from my RSS feed.
(use-package newsticker
:bind
(("C-c e e" . #'newsticker-show-news))
:hook
((newsticker-treeview-item-mode . my/setup-newsticker)
((newsticker-treeview-mode
newsticker-treeview-list-mode
newsticker-treeview-item-mode) . my/hide-mode-line))
:preface
(defun my/hide-mode-line ()
(setq mode-line-format nil))
(defun my/setup-newsticker()
(olivetti-mode)
(variable-pitch-mode)
;; Focus on the article window
(select-window (newsticker--treeview-item-window)))
:config
;; Set the key TAB and S-TAB to be bound to shr-next-link and shr-previous-link to cycle through links easily
(keymap-set newsticker-treeview-item-mode-map "TAB" #'shr-next-link)
(keymap-set newsticker-treeview-item-mode-map "<backtab>" #'shr-previous-link)
;; set q to quit tree view (I only use tree view)
(keymap-set newsticker-mode-map "q" #'newsticker-treeview-quit)
;; hide the mode line on newsticker-mode and newsticker-treeview-mode
(add-to-list 'display-buffer-alist
'((or (derived-mode . newsticker-mode)
(derived-mode . newsticker-treeview-mode))
(display-buffer-use-some-window)
(window-parameters . ((mode-line-format . none)))))
:custom
(newsticker-automatically-mark-items-as-old nil) ;; Only mark as old (read) when opened
(newsticker-url-list
'(("Derek Sivers" "https://sive.rs/en.atom")
("Drew DeVault's blog" "https://drewdevault.com/blog/index.xml")
("Fritz Gabo" "https://fritzgrabo.com/posts/rss.xml")
("Joshua Blais" "https://joshblais.com/index.xml")
("mccd.space" "https://mccd.space/feed.xml")
("Ploum" "https://ploum.net/atom_en.xml")
("Ratfactor Feed" "https://ratfactor.com/atom.xml")
("Sophie Koonin" "https://localghost.dev/feed.xml")
("Sourcery Zone" "https://sourcery.zone/index.xml")
("Xenodium, solopreneur and emacs" "https://xenodium.com/rss")
("マリウス" "https://xn--gckvb8fzb.com/index.xml")
("James Cherti" "https://www.jamescherti.com/feed/")
("Planet Emacslife" "https://planet.emacslife.com/atom.xml")
("Wai Hon's Blog" "https://whhone.com/index.xml"))))
Thank you for reading, Aloys.
Footnotes:
Surely I could write my own Olivetti?