Compare commits
6 Commits
d92b66f419
...
7371cc9efc
Author | SHA1 | Date |
---|---|---|
Dmitry Bogatov | 7371cc9efc | |
Dmitry Bogatov | bf8a6d721e | |
Dmitry Bogatov | 6aa57fb613 | |
Dmitry Bogatov | ecc19e78b3 | |
Dmitry Bogatov | e9890e7614 | |
Dmitry Bogatov | 5ae39eb58c |
|
@ -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
|
||||
|
|
|
@ -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/
|
|
@ -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".
|
|
@ -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.
|
Loading…
Reference in New Issue