Dear all,

Here are the (delayed) meetup notes.

TL;DR: RSS/email workflow with Emacs+Org mode+notmuch; new bug
tracker; Gentoo installation via Org tangle; asynchronous bash/python
blocks with live output; sentence-at-point support patch; reporting
bugs with patches; org-babel-post-tangle-hook; debugging Emacs config;
quick way to open a link from inside heading (built-in); browsing web
as Org files (shrface); notmuch setup; renaming org-ctrl-c-ctrl-c and
similar to more meaningful names.

- With the new time zone, I am no longer risking being late to
  the meetup as much, so I started a bit earlier, when not as
  many people joined yet
  - To fill time, I looked through my RSS feeds and new emails (from mailing 
lists)
  - RSS + mailing lists means literally hundreds of new messages
    every day
  - I am dealing with this using complex rule system
    - I do not use gnus, notmuch filters for email +
      https://github.com/sp1ff/elfeed-score/ for RSS
    - I also have a set of rules to highlight specific terms
      in titles to make it easier to capture important massages
    - And rules to split email inbox into mailing list vs.
      emails directly coming to me or emails for Org mode and other
      packages I help maintaining
    - When I view the emails and RSS feeds, most of them go to trash
      - As Nick Andreson pointed, holding "d" is his favorite email
        processing technique. That's so true when one needs to deal
        with big volumes
      - The idea is to process non-important emails (aka news) very fast
      - First, just look at the titles (scoring + highlighted words makes
        eyeballing even easier). If titles do not catch attention - "d"
      - Second, if something caught attention, do not read, just capture
        into inbox and proceed
      - Total time needed 5-10 minutes
    - After looking through all incoming news, I go to inbox (not necessarily
      right away, maybe later during the day, or next day)
      - Inbox sometimes leads to more deletes, although most incoming
        captures news are simply refiled away under appropriate topic
      - Some topics are "inactive", which means that I will only come
        back to whatever ends up there later, sometimes years later,
        when I decide that I have free time and interest to look into
        that topic (I switch active topic from time to time, as I never
        have enough free time for everything)
      - Other topics are active, and all the news refiled there will
        end up in the third layer of review
    - The third layer of review involves more than just looking at the title
      - I actually open and read the news/emails, reading summary/abstract
        and skimming through the text
      - Most news will get deleted at this point as uninteresting
        (clickbait...)
      - Whatever is left, which is a small fraction, will go to the
        fourth layer - usually SOMEDAY list, or, sometimes, further
        refiled to one of the active projects I am working on (if
        relevant)
    - The forth layer is reading items from SOMEDAY list
      - This is a part of weekly review
      - When a given "active" topic or project has no items marked
        to be read "NEXT", I look through SOMEDAY items, and
        mark a handful NEXT - not too many, but roughly enough to
        be able to finish in the coming
      - Sometimes, I mark more, but spread them around for a couple of
        weeks ahead. For example, I listen music in bursts, with many
        new songs accumulating for months, followed by me reactivating
        the "Music" topic, and using agenda scatter to spread the songs
        across next, say, 90 days, 3-4 songs per week.

- Morgan asked about our new bug tracker (BARK)
  https://tracker.orgmode.org/
  - We have indeed switched from the old buggy implementation of
    our bug tracker that sources all the data from mailing lists
    https://list.orgmode.org/orgmode/[email protected]/
    - The idea is that we can use something readable both by
      bug tracker and humans to explain the status of report
    - For example, if a bug report is "Canceled", one can
      immediately explain why, while automatically closing
      the report for the purposes of bug tracker.
  - The new implementation is a ground-up rewrite by Bastien that
    is indeed working much better
  - It also comes with statistics!
    https://tracker.orgmode.org/data.html
    - [2026-05-01 Fri] That statistical data was the last missing
      piece for me to go ahead and introduce the idea of contributor
      liaisons. Having a good estimate on the amount of work
      people need to do to maintain the list is (IMHO) very helpful
      compared to our usual open-ended maintainer commitments.
  - We also imported the data back from 2020 from the list, which
    is a unique feature of BARK design where we do not care too much
    about bug tracker implementation as long as it can understand
    common mailing list writing patterns: typical subject formats like [BUG]
    and applied, fixed, etc marking closing threads.
    - BARK is very effective catching bug reports and patches,
      although closing is not always found (because it is much less
      regular to auto-detect).
    - So, we will need to clean up the backlog now, closing finished
      threads. But that backlog review already reveals a number of missed
      patches (ouch!) and bug reports.
      - I even found a bug report I missed because it got lost when my
        hard drive got corrupted because of problems with RAM.
    - Note that we deliberately *do not* auto-close bugs, unlike
      common practice on github. We'd rather deal with many old bugs
      than ignore bugs leaving them to the bot. If a bug is not important
      a human should say so, not a bot that simply closes everything
      without activity.

- I also shared a small trick I use since recently to roll out
  my Gentoo installation. I switched to a new laptop, so I had to
  re-do my system setup (which all lives in an Org file), polishing
  the bootstrap and tangling along the way
  https://github.com/yantar92/emacs-config/blob/master/system-config.org
  - As a part of bootstrap, I have a set of bash commands, I need
    to execute just once. Of course, they live inside src block.
  - However, I do not want these commands to be in a single block, as
    they come from various parts of config - add various daemons to
    init, enabling portage overlays, eselect calls, etc.
  - So, I make use of Org's =:noweb-ref= argument
    #+begin_src bash :eval yes :dir /sudo::/ :noweb yes :results verbarim output
      <<sys-configure>>
    #+end_src
    =sys-configure= is collecting all the code blocks scattered
    across the configuration, all executed in one place.
    Examples:
    #+begin_src bash :dir / :eval yes :noweb-ref sys-configure
      rc-update add dbus default
      rc-update add display-manager default
    #+end_src
    <snip many lines>
    #+begin_src bash :tangle no :dir /sudo::/ :eval yes :noweb-ref sys-configure
      eselect repository enable torbrowser
    #+end_src

- karthink asked about something he called "ob-compile" -
  a way to run code block asynchronously and be able to watch
  the progress
  - karthink commented that it may not work to run multiple async
    blocks on a single session (yeah, that's expected, and there be dragons)
  - but you can simply use async shell blocks + generated session name
    #+begin_src bash :session (symbol-name (gensym "org-session")) :async yes
    while true; do echo "testing2"; sleep 2; done
    #+end_src
  - For actual terminal, there is ob-screen where instead of
    sending to Emacs comint buffer, you can run in system
    terminal (xterm, or whatever else you have installed)
  - We also talked about async block evaluation that is, in Org mode
    itself, is only available for /ob-python/ and /ob-shell/.
    - There is third-party ob-async library that is more universal
      (and hacky)
    - Although, Org's own asynchronisity (~org-babel-comint-async-register~)
      is kind of a hack as well, with a number of edge cases
    - We have a WIP patch implementing a more appropriate async
      library called =org-pending=
      
https://list.orgmode.org/A3lTLpSwDVqF7cg-lzjHjcKDvfKpJ2omuOLJt_5otZqGESP0J_3Yuct-MjFoDato7RXfW4SGBqvfXXxH24AHU83_45x2UX7B1z7U6d4T4os=@arbos.bio/
      - This one should eventually allow dynamic progress reporting,
        and more appropriate APIs.
    - I did a small demo of the =org-pending= library, with live
      updates of the overlays. The demo is in the top commentary
      of the library.

- Sacha commented on her recent-ish patch that adds sentence-at-point
  support to Org
  - The patch is fine, but revealed some rough edges in Org's sentence
    movement commands. It is not clear, for example, whether we should
    treat a list as a part of sentence or not. Or a list with full
    sentences inside.
    https://list.orgmode.org/orgmode/[email protected]/
  - I suggested to move ahead and not try to address everything in the
    patch, leaving the edge cases with sentence movement for future
    discussion

- Sacha also reported that she found a bug in ~org-babel-tangle~
  She also did a quick fix https://pastebin.com/ESL8QcC7
  - I had no idea about such bug. Reporting it, especially with a fix,
    would be welcome.
  - Sacha was concerned about writing a test, but that not really
    mandatory. It is mostly me pushing people to contribute a bit more
    every time.

- Sacha has been experimenting with ~org-babel-post-tangle-hook~
  to put additional information into tangle Elisp files.
  For example, commentary or "provide" footer.
  See her config in
  
https://sachachua.com/dotemacs/index.html#org-mode-org-babel-tangling-my-emacs-config-snippets-to-different-files-and-adding-boilerplate
  - Zororg pointed alternative -
    ~org-babel-tangle-comment-format-beg~, but that's a completely
    different thing - Sacha is after adding things to the whole
    tangled file, while the comment format is applied to every tangled
    block, and is also used to link back to the Org file for the
    purposes of detangling.
  - Along the way, she encountered the common bumps related to interaction
    between built-in version of Org mode and newer version installed
    via ELPA/git.
    - This is a very old and common problem. Emacs does not have a notion
      if package versions, so it is often finicky to make things right
      and avoid mixing libraries from built-in Org version and newer
      version. In particular, doing something like
      ~org-babel-load-file~ in init.el often uses built-in Org
      version, if the alternative Org installation is defined in the
      literate configuration loaded by ~org-babel-load-file~

- We also turned to discuss ways to debug Emacs config
  - Naturally, https://github.com/Malabarba/elisp-bug-hunter
    came into the discussion - automated bi-section of config
  - I complained that elisp-bug-hunter does not really work
    with literate configuration
  - Sacha pointed that the cooked up something locally, to make it
    work, which was very intriguing
  - What was even more intriguing is that whatever she has, it works
    so well that she forgot that it is not a part of upstream (such
    things tend to happen for really useful local features that also
    work seamlessly)

- I was screen sharing as usual, and one of the things I have in my config
  is a replacement for the standard C-c C-o popup in org for a heading with
  multiple links
  - When point is on a heading in Org, and heading body contains links,
    C-c C-o will scan all the links in heading, and popup a window
    you can use to follow one of the links
  - I modified that window configuration via ~display-buffer-alist~, to
    show the links in a posframe
    #+begin_src emacs-lisp
      (when init-flag
        (use-package posframe
          :straight t
          :config
          (defun yant/display-buffer-in-posframe (buffer alist)
            "Display BUFFER using `posframe-show'.
        ALIST may have non-standard elements `poshandler', `foreground-color',
        `background-color', `internal-border-color', and
        `internal-border-width' to be passed to `posframe-show'."
            (posframe-show
             buffer
             :override-parameters `((quit-restore . (frame frame nil ,buffer)))
             :poshandler (alist-get 'poshandler alist)
             :foreground-color (alist-get 'foreground-color alist)
             :background-color (alist-get 'background-color alist)
             :internal-border-color (alist-get 'internal-border-color alist)
             :internal-border-width (alist-get 'internal-border-width alist))
            ;; FIXME: suppress `org-fit-window-to-buffer'.
            (setq-local window-size-fixed t))
          (setf (alist-get (regexp-quote "*Select Link*") display-buffer-alist 
nil nil #'equal)
                  `(yant/display-buffer-in-posframe
                  (poshandler . posframe-poshandler-frame-center)
                  (foreground-color . ,(face-foreground 'mode-line))
                  (background-color . ,(face-background 'highlight))
                  (internal-border-color . ,(face-background 'highlight))
                  (internal-border-width . 20)))))
    #+end_src

- I also mentioned about a way to turn any web page (in eww)
  to Org-like experience https://github.com/chenyanming/shrface
  This is what I have been playing with recently.
  - The shrface itself is a bit tricky to configure, but once done
    it works nicely (after adding various optional modules)
  - Zororg even found https://github.com/xuchunyang/shr-tag-pre-highlight.el
    for Org-mode arbitrary syntax highlighting in code on HTML itslef,
    using Emacs native facilities, so that everything blends with Emacs
    theme and settings.
  - I have been using eww for a while now, I can read the majority of
    websites using eww itself. In addition, I use reddigg to render reddit
    threads as Org, yt-dlp to watch youtube without even opening the
    website, masotdon.el to interact with Mastodon, and, sometimes,
    archive.ph to open websites that do require JS.
  - I even made some initial attempts to plug speech generation to
    read the web pages using local neural network model (so that
    voice is also natural)

- I am using notmuch (in Emacs) for my emails
  - notmuch works with Maildir format, so I store and sync
    my emails locally using isync
  - In fact, I /mostly/ store my emails locally (with backups), only
    keeping a few on servers. Do not see much point using web UI for
    emails at all.
  - My greatest application of notmuch is local search through emails
    and list archives. For actually handling and classifying emails in
    details, I use Org mode. I just capture incoming emails to inbox
    and use Org todo system to process them. The filtering on notmuch
    side only concerns: (1) filtering out obvious spam; (2) splitting
    emails going directly to me and emails from the lists and subscriptions
    that I do not pay too much attention to.
  - With notmuch, my 2M+ emails can be searched as I type
    - Although, it does take time to index everything the very first
      time (I had to do this exercise several times, when I had to
      deal with database corruption due to problems with RAM)

- ichernyshovvv asked about renaming ~org-ctrl-c-ctrl-c~ to a more... err...
  meaningful name. 
  - That what should eventually be done, yes
  - This topic is old, and we should definitely rename all the
    functions like =org-metaright= and =org-ctrl-c-ctrl-c=, but
    the question is always naming
  - If you are interested to get this thing done, please
    open a thread on the list, so that we can try to find consensus on
    the names.
  - I have this planned, but as a very low priority - current situation
    is not ideal, but it is not that much of a big deal, after all.

:chat:
[17:37] Sacha Chua is now the presenter
[17:38] Sacha Chua is now the presenter
[17:51] yantar92 is now the presenter, set by yantar92
[17:56] [Nick Anderson : VIEWER]: yep
[17:58] [Nick Anderson : VIEWER]: holding "d" is my favorite email processing 
technicque
[18:09] [Morgan : VIEWER]: I'm curious about the current state of the tracker.  
seems there was a recent switch to bark?
[18:13] [Nick Anderson : VIEWER]: Any new tricks?
[18:14] [karthink : VIEWER]: Is Ihor speaking?  I'm trying to check if my audio 
is working
[18:15] [karthink : VIEWER]: Nvm, I can hear you now
[18:15] [Nick Anderson : VIEWER]: Your audio is chopping out btw.
[18:16] [Nick Anderson : VIEWER]: well it was briefly btu recovered.
[18:16] [karthink : VIEWER]: Is there something like ob-compile, that runs 
long-running org babel shell blocks as compile commands?
[18:17] [Nick Anderson : VIEWER]: will that get you something more than async?
[18:21] [karthink : VIEWER]: Yes, you'll be able to check progress
[18:21] [yantar92 : MODERATOR]: :noweb-ref header argument
[18:21] [Nick Anderson : VIEWER]: ah
[18:21] [Ashish : VIEWER]: Is Ihor speaking? I can't hear him.
[18:21] [Nick Anderson : VIEWER]: silent for me since he tried to fix audio 
after it was cutting out
[18:22] [Nick Anderson : VIEWER]: there you are
[18:22] [Ashish : VIEWER]: Yeah, I can hear you now.
[18:24] [Morgan : VIEWER]: that's pretty cool
[18:24] [Nick Anderson : VIEWER]: oh thats nice. My org-roam config is a bunhc 
of babel blocks like that and i use a similar (but manual) strategy to execute 
them all at once (yes it's janky i know).
[18:24] [Nick Anderson : VIEWER]: Yeah too many blocks for me
[18:24] [Nick Anderson : VIEWER]: exactly
[18:25] [Nick Anderson : VIEWER]: What about Karthinks question about org-babel 
to compile commands
[18:25] [Morgan : VIEWER]: How do you want to close the wrongly open bugs on 
the tracker?  Reply with the proper keyword?  Will that clutter the mailing 
list?
[18:27] [Morgan : VIEWER]: but I love finding bugs online that have an issue 
I'm experiencing that are autoclosed
[18:27] [Morgan : VIEWER]: sarcasm 😜
[18:29] [karthink : VIEWER]: Problem with session: can't run more than one 
block at a time
[18:29] [karthink : VIEWER]: I guess I could have separate sessions
[18:30] [karthink : VIEWER]: Yeah that works!
[18:31] [yantar92 : MODERATOR]: #+begin_src bash :session (symbol-name (gensym 
"org-session")) :async yes
while true; do echo "testing2"; sleep 2; done
#+end_src

[18:31] [karthink : VIEWER]: Is async for ob-shell built-into Org?
[18:31] [Nick Anderson : VIEWER]: I think so as of soemtime in the last few 
years right?
[18:32] [karthink : VIEWER]: There's also a generic ob-async that runs any 
block in a child Emacs session
[18:32] [karthink : VIEWER]: I get the two confused
[18:32] [Nick Anderson : VIEWER]: yeah but merged to standard library in org 
9.5?
[18:33] [yantar92 : MODERATOR]: #+begin_src screen :terminal kitty
cd ~/Git/org-mode
ls
#+end_src

[18:33] [Zororg : VIEWER]: is futur package promising to replace async code?
[18:34] [karthink : VIEWER]: Is org-pending merged?
[18:34] [karthink : VIEWER]: Oh, I see it isn't
[18:36] [karthink : VIEWER]: ob-shell's async is different from the generic 
ob-async, right?
[18:37] [karthink : VIEWER]: Does using :session imply :async in ob-shell?
[18:42] [Zororg : VIEWER]: 
https://strah.net/post/org-grimoire-static-site-generator-for-gnu-emacs.html

Seems to be similar hugo for emacs.
Simply replaces partials and templating into single html file for each post
[18:44] [Sacha Chua : VIEWER]: Ihor: I think the patch I had for 
sentence-at-point actually needs to be rejigged into maybe making 
forward-sentence and backward-sentence more consistent, which would then solve 
the sentence-at-point problem (I think), but I haven't gotten around to it yet.
[18:48] [Sacha Chua : VIEWER]: Also I think that C-u C-u M-x org-babel-tangle 
wasn't doing the advertised behaviour of tangling just the current file(s) for 
the block at point and it seems to just need a small patch which I have 
locally, but I haven't gotten around to writing a test for that yet either. 
Pastebin at https://pastebin.com/ESL8QcC7 in case you want to have a quick look 
at that one, planning to write it up and send it to the list properly at some 
point unless it's already on your radar.
[18:49] [Sacha Chua : VIEWER]: Lastly, something other people might be 
interested in: I've been experimenting with using org-babel-post-tangle-hook to 
add extra stuff to my tangled .el files like commentary and the (provide ...) 
at the end. =) 
https://sachachua.com/dotemacs/index.html#org-mode-org-babel-tangling-my-emacs-config-snippets-to-different-files-and-adding-boilerplate
[18:51] [Sacha Chua : VIEWER]: (which sent me down a little bit of a 
rabbit-hole as I tried to figure out the right combination of eval-and-compile 
and loading org-core / org-macs / org-src to make sure the right things are 
available when my tangled config files are in user-lisp-directory, which 
recompiles it automatically)
[18:51] [Nick Anderson : VIEWER]: sounds like a great one for your prevgiously 
proposed set of meetings to get people contributing 
[18:55] [yantar92 : MODERATOR]: more website generators: 
https://orgmode.org/worg/org-blog-wiki.html
[18:55] [Zororg : VIEWER]: https://tracker.orgmode.org/

is not reachable for me?
[19:02] [Zororg : VIEWER]: org-babel-tangle-comment-format-beg

can be used to prepend some text. Would it be around to do that post hook thing?
(not sure, just lazy thinking)
[19:02] [Zororg : VIEWER]: workaround *
[19:07] [yantar92 : MODERATOR]: https://github.com/Malabarba/elisp-bug-hunter
[19:15] [Nick Anderson : VIEWER]: thanks again for the time, gtg.
[19:19] [Zororg : VIEWER]: gnus does completing-read by default with "w" key in 
article buffer
[19:20] [yantar92 : MODERATOR]: (when init-flag
    (use-package posframe
      :straight t
      :config
      (defun yant/display-buffer-in-posframe (buffer alist)
        "Display BUFFER using `posframe-show'.
  ALIST may have non-standard elements `poshandler', `foreground-color',
  `background-color', `internal-border-color', and
  `internal-border-width' to be passed to `posframe-show'."
        (posframe-show
         buffer
         :override-parameters `((quit-restore . (frame frame nil ,buffer)))
         :poshandler (alist-get 'poshandler alist)
         :foreground-color (alist-get 'foreground-color alist)
         :background-color (alist-get 'background-color alist)
         :internal-border-color (alist-get 'internal-border-color alist)
         :internal-border-width (alist-get 'internal-border-width alist))
        ;; FIXME: suppress `org-fit-window-to-buffer'.
        (setq-local window-size-fixed t))
      (setf (alist-get (regexp-quote "*Select Link*") display-buffer-alist nil 
nil #'equal)
          `(yant/display-buffer-in-posframe
              (poshandler . posframe-poshandler-frame-center)
              (foreground-color . ,(face-foreground 'mode-line))
              (background-color . ,(face-background 'highlight))
              (internal-border-color . ,(face-background 'highlight))
              (internal-border-width . 20)))))
[19:21] [Zororg : VIEWER]: can notmuch do online imap?
I dont want to download and sync emails, so i simply use gnus nnimap
[19:21] [Sacha Chua : VIEWER]: Oooh, how?
[19:22] [Zororg : VIEWER]: this one: https://github.com/chenyanming/shrface ?
[19:23] [Zororg : VIEWER]: also this for syntax code highlight just like org 
begin-src

https://github.com/xuchunyang/shr-tag-pre-highlight.el
[19:28] [ichernyshovvv : VIEWER]: do you have a public list of websites that 
can be displayed with no issues in eww?
[19:29] [yantar92 : MODERATOR]: https://planet.emacslife.com/
[19:32] [Zororg : VIEWER]: can notmuch be used for online imap ?

I use gnus primarily for nnimap without needing to download emails and sync
[19:34] [Zororg : VIEWER]: oh cool.
Even gnus can download but it felt weird and slow when i tried before.
[19:50] [ichernyshovvv : VIEWER]: Ihor, do you have plans on renaming 
org-ctrl-c-ctrl-c command? Probably this astronomer chose this name 20 years 
ago as a temporal solution, and for some reason we still have it
[19:52] [Sacha Chua : VIEWER]: org-do-the-thing 😉
[19:52] [ichernyshovvv : VIEWER]: org-dwim
[19:53] [yantar92 : MODERATOR]: go ahead and post on the mailing list - it has 
to be discussed first
[19:54] [ichernyshovvv : VIEWER]: org-common-do-something
[19:55] [ichernyshovvv : VIEWER]: (I meant org-come-on-do-smth)
[19:55] [ichernyshovvv : VIEWER]: funny huh
:end:

-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

Reply via email to