Compare commits

...

6 Commits

Author SHA1 Message Date
Dmitry Bogatov 7371cc9efc Merge branch 'gemlog'
* gemlog:
  text/gemini: New post: Re: "The Death of the Grown-Up" by Diana West
  text/gemini: New post: Round, not purple
  text/gemini: New post: kaction.cc is back
2024-03-02 10:38:23 -05:00
Dmitry Bogatov bf8a6d721e emacs: Disable showing "bulk" entries with elfeed
Some youtube channels produce way too much. It is nice to have them in
elfeed, but having them in the default view is overwhelming. I love
empty inboxes.
2024-03-01 21:22:19 -05:00
Dmitry Bogatov 6aa57fb613 emacs: Move (use-package elfeed) to the top-level
This is slightly less efficient (this form is evaluated at run-time
even if feeds file is not present), but keeps code simpler and avoid
mysterious interactions.

 * emacs/config.el (func_name):
2024-03-01 21:13:13 -05:00
Dmitry Bogatov ecc19e78b3 text/gemini: New post: Re: "The Death of the Grown-Up" by Diana West 2024-01-28 14:38:44 -05:00
Dmitry Bogatov e9890e7614 text/gemini: New post: Round, not purple 2024-01-15 23:31:39 -05:00
Dmitry Bogatov 5ae39eb58c text/gemini: New post: kaction.cc is back 2023-12-20 23:38:35 -05:00
4 changed files with 177 additions and 33 deletions

View File

@ -455,40 +455,43 @@ This function assumes that root of the project contains either \"shell.nix\" or
(declare-function elfeed-search-selected "elfeed-search")
;; List of RSS feeds is somewhat personal, I don't want to keep it in
;; public git.
(let ((config-file "~/data/active/config/elfeed.el"))
(if (file-exists-p config-file)
(let ((elfeed-feeds-value
(with-temp-buffer
(insert-file-contents-literally config-file)
(read (current-buffer)))))
(use-package elfeed :ensure t
:config
(evil-define-key 'normal elfeed-show-mode-map
(kbd "q") #'elfeed-kill-buffer)
(use-package elfeed :ensure t
:config
(evil-define-key 'normal elfeed-show-mode-map
(kbd "q") #'elfeed-kill-buffer)
(setopt elfeed-feeds elfeed-feeds-value)
(defun @elfeed-youtube-dl ()
(interactive)
(let* ((entry (elfeed-search-selected :single))
(default-directory "~/scratch/videos/")
(name "*yt-dl*")
(args (list "yt-dlp" (elfeed-entry-link entry)))
(buffer (generate-new-buffer-name name)))
(apply #'start-process name buffer args)
(display-buffer buffer)))
:hook
(elfeed-search-mode . turn-off-evil-mode)
:bind
(:map elfeed-search-mode-map
("j" . next-line)
("k" . previous-line)
("/" . elfeed-search-live-filter)
("d" . @elfeed-youtube-dl)
)
:custom
(elfeed-db-directory "~/data/active/state/elfeed")))))
(setopt elfeed-feeds
;; List of RSS feeds is somewhat personal, I don't want to keep it in
;; public git.
(eval-when-compile
(let ((config-file "~/data/active/config/elfeed.el"))
(when (file-exists-p config-file)
(with-temp-buffer
(insert-file-contents-literally config-file)
(read (current-buffer)))))))
(defun @elfeed-youtube-dl ()
(interactive)
(let* ((entry (elfeed-search-selected :single))
(default-directory "~/scratch/videos/")
(name "*yt-dl*")
(args (list "yt-dlp" (elfeed-entry-link entry)))
(buffer (generate-new-buffer-name name)))
(apply #'start-process name buffer args)
(display-buffer buffer)))
:hook
(elfeed-search-mode . turn-off-evil-mode)
:bind
(:map elfeed-search-mode-map
("j" . next-line)
("k" . previous-line)
("/" . elfeed-search-live-filter)
("d" . @elfeed-youtube-dl)
)
:custom
(elfeed-db-directory "~/data/active/state/elfeed")
(elfeed-search-filter "@6-months-ago +unread -bulk"))
; Simple HTML renderer, used by `elfeed'.
(use-package shr

View File

@ -0,0 +1,55 @@
# kaction.cc is back
About year ago I missed expiration date of my domain, and it was bought by
somebody else. Month ago I noticed that domain is free again, so I bought it
back for just $12/year and instead of just delegating email to Migadu, decided
to setup some toys on VPS.
=> https://migadu.com
I chose AWS Lightsail because it seemed cheaper that EC2, but that left me with
no choice but to use FreeBSD image, since all GNU/Linux distributions available
on Lightsail are systemd-based.
So far, I configured these services:
### hledger-web
This is quality of life improvement for doing plain text accounting.
With this service I am able to record transactions on the mobile phone
immediately instead of processing paper receipts in the evening/on the weekend.
Also, not all transactions produce paper receipts.
=> https://hledger.org/web.html hledger-web manual
=> https://f-droid.org/packages/net.ktnx.mobileledger Android client (link to F-Droid)
### xandikos
Xandicos is standalone CalDAV server, which works faster than one included into
NextCloud instance hosted by disroot.org project. Using "vdirsyncer" on the
laptop and "DAVx⁵" on the phone, I can keep synchronized view of my calendars
and todo lists on both devices, which is really handy for generating and adding
".ics" programmatically.
=> https://vdirsyncer.pimutils.org/en/stable/
=> https://f-droid.org/packages/at.bitfire.davdroid/
Whoever designed text/calendar format clearly was totally alien to Unix
culture, so editing calendars from command line is quite painful. Well, my
attitude is simple -- if it is hard to use from $EDITOR, it sucks.
Thanks to "icalendar" python library, I can write scripts that bridge my
workflows and this stupid .ics format, yet whenever I do it, I feel like I am
solving a problem that should not have existed.
=> https://pypi.org/project/icalendar/
And yet, this miscreation managed to become a standard that is actually used
and recognized: you can share .ics with normies, and that will work on their
devices out-of-box. That is major advantage over other solutions.
### gmid
Now, I self-host my capsule in addition to "tilde.pink". Also, I serve proxied
version of the capsule over https with Kineto.
=> https://www.kaction.cc
=> gemini://kaction.cc
=> https://sr.ht/~sircmpwn/kineto/

View File

@ -0,0 +1,55 @@
# Round, not purple
Recently, I got an email response to my previous post that contained advice "get
as offline as possible". Somehow this simple and probably obvious idea made me
think, and I came to the conclusion that I have been holding many things
completely wrong.
=> ./2023-11-07.1.gmi Weight of the world
Since the day I parted with Debian, I have been lamenting about being forced to
use so-called "modern" tools, that required graphical web-browser and running
untrusted JavaScript to poorly solve problems I already had solved with my
command line setup. GitHub instead of cgit, ssh, mailing lists and debbugs;
Discourse instead of mailing lists; Matrix, Discord instead of IRC and mailing
lists. You see, mailing lists can do almost everything.
No doubt, graphical web-browsers and JavaScript suck, but until this moment I
failed to pinpoint the most significant problem with these "modern" tools --
they don't support offline work. They don't support asynchronous work.
Back then at Debian, almost everything -- bug reports, design discussions --
was done via email. I had a nice workflow when I would download email at
morning and work my way through my inbox with little to no need to access
anything else. I would draft responses, save interesting stuff into separate
folder and, crucially, only send these drafts next morning.
Don't get me wrong, "debian-devel" is no paradise and people can be
infuriating, but this process gave me time to cool down and edit (or sometimes
just discard) my response. Don't type angry, you know.
Not the case with GitHub and Discourse. When something happens, like somebody
reviews your pull request or mentions you in some thread, you get an
notification. After you click on it, it is marked as viewed and gets lost in
the list of old notifications. GitHub does some rudimentary support for
unread-read-done states, but it is pathetic compared to flexibility of proper
email management system like mmh.
=> http://marmaro.de/prog/mmh
What is even more important, you don't have option to save the notification and
its context (e.g full story of the issue) offline to think about it and act
upon. Instead, you are pressured into acting upon the notification instantly,
probably context-switching between the terminal and the browser, while being
exposed to all distractions.
Probably GitHub has financial incentives to be like that, but also it follows
the trend. People are used to these incessant interruptions, conditioned by the
social media. That is how they expect things to be. Annoying, but familiar. And
I guess that would be the reasoning for non-profit Free Software projects that
happen to care about user adoption. You don't want to be a weirdo like
SourceHut, right?
=> https://git.sr.ht
So what this realization means for me (and hopefully, it will be useful for
somebody else), is that I was fighting for the wrong goals. I was trying to
maximize amount of stuff that I can do from /dev/tty, in reality I should have
minimized amount of time with "ifconfig up".

View File

@ -0,0 +1,31 @@
# Re: "The Death of the Grown-Up" by Diana West
I picked this book quite some time ago at one of many bookcrossings in my area,
and it has been dusting on my shelf until recently I decided to challenge
myself and regain my ability to read.
=> ./2023-11-07.1.gmi
First several chapters of the book trace path of the American society from
restictive social norms through the sexual revolution to the era of "fuck" word
in the prime time, "sex sells" marketing principle and drunk undergrads on the
spring break.
Unless you believe this is a problem in itself, that would be quite boring
reading. Actually, I saw these first chapters as mockery of my own believes.
Dumbed down, concern of these chapters is "Power shifted from adults to
adiolescents", my concern is "Power shifted from programmers to C-illiterates".
And they both beg for a question "What is the problem, exactly?".
In the next chapters of her book, Diana West answers this question well. There
is a flip side of all these advancements. Now we are restrained by the concepts
of "political correctness" and "multiculturalism". Now you can say "fuck", but
you can't say "a primitive culture". It is blasphemy to even consider than one
subset of the population is better than another at something, no matter the
supporting data.
We traded one set of dogmas, restrictions and taboos for another, and that
wasn't a good trade. The author, clearly a Republican and what seems to be
affinity for Christianity, seems to believe that it was an inevitable outcome.
I want to believe that we could have a win without any sacrifices.
In any case, I recommend this book.