Dear all,

Here are the last meeting notes.

TL;DR: more whisper.el+org-capture; keyboard-driven browsers (glide);
browsing web in Emacs and Org mode; captions for results of evaluation;
type-checking in Elisp; dynamic block for Google Docs; live code
review for LaTeX preview branch.

- We started a bit late. That is - I came late. Others were hanging
  out in the chat meanwhile.
- Sacha shared her new setup to capture new notes by voice,
  automatically, in the background, upon a single key press
  - The idea is to press start key, start talking, press stop key, and
    the recording is automatically captured as an Org task/note
  - She went even further, and made it so that the recording text is saved
    to currently clocked in task, alongside with link to context where the
    voice recording happens
  - Moreover, when she says "computer, remind me to", the recording
    text is saved as a task
  - 
https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/
  - She simply uses default medium English model + CPU (GPU would be even 
faster)
  - She showed her setup in action

- I then finally posted what I usually post at the very beginning (when I am 
not late)
  https://sachachua.com/blog/2026/01/2026-01-12-emacs-news/
  
- Sacha also played around with Pipewire (Chrome feature). This is a speech 
recognition
  built into Chrome browser API
  - This API is not specific to Chrome: 
https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
  - Note that it requires connecting to Google (or other) server
    (for free, so they likely get money from your data)
    - Although Sacha later mentioned that "Chrome 139 allow on-device-only 
recognition"

- Sacha announced during the meetup that she plans to play around with
  queuing whisper results
  - Ihor from future [2026-01-29 Thu], here is what she got
    
https://sachachua.com/blog/2026/01/queue-multiple-transcriptions-with-whisper-el-speech-recognition/

- Zororg shared a new keyboard-driven browser; this time, based on Firefox
  It also has M-x-like commands.
  - https://github.com/glide-browser/glide/discussions/25 (the link is to Emacs 
keybinding config)
  - There are also https://github.com/qutebrowser/qutebrowser (chromium-based) 
and
    https://github.com/atlas-engineer/nyxt (webkit/webengine)
    - Zororg commented that nyxt is not maintained - not the main browser
      but attempted rewrite on electron (I'd say no electron is good
      news - main branch has commits just 2 months ago).
  - I personally use eww and extras to view everything in Emacs more and more
    - The key to comfortable browsing with eww is enabling readable mode by 
default
      : (setq eww-readable-urls '(".+"))
    - Many website work just fine like that. Even some (although not
      all) JS-heavy websites often do not really need all that JS
      boilerplate to read what I want
    - And I use emacs UI for mastodon, reddit, and (experimental) with github
      - 
https://github.com/yantar92/emacs-config/blob/master/config.org#reddit-client-reddiggel
        - There is also https://github.com/thanhvg/emacs-hnreader to read 
Hacker News in Emacs
      - 
https://github.com/yantar92/emacs-config/blob/master/config.org#mastodon-client-mastodonel
      - 
https://github.com/yantar92/emacs-config/blob/master/config.org#github-client-consult-gh
    - And good old yt-dlp + mpv for youtube

- yaca asked about adding caption to results of code evaluation on export
  #+name: test
  #+begin_src emacs-lisp :results value table
    '(("a" "b" "c") hline ("1" "2" "3"))
  #+end_src

  # #+results: test should mirror code block #+name
  # #+caption to be added manually, but will be retained after updating the 
results
  #+RESULTS: test
  #+caption: caption here
  | a | b | c |
  |---+---+---|
  | 1 | 2 | 3 |

- As a side, off-topic, note, zor mentioned that
  we may eventually get multi-LSP support for eglot
  - https://github.com/joaotavora/rassumfrassum (this is by the author of eglot)

- Morgan asked why Elisp does not do much type checking
  - The answer is mostly simple - Elisp is not statically typed language, so, 
naturally,
    type checking is so widespread
  - Moreover, it is a common pattern to allow values to have multiple
    types (t/nil, number, string, etc) with different meaning
  - That said, all the Elisp primitives always do type-checking to avoid
    low-level crashes
  - Does it make things easier to debug? No. But that's an eternal argument
    against dynamically typed languages. There are also pros of that.
    That's a rather beaten programming topic.

- I have been recently experimenting with Google Docs integration
  (which I have to do for work)
  - I wrote a dumb dynamic block that uses Google Docs API to download
    Google Docs document, transform it into plain text, and insert right into
    Org buffer
  - 
https://github.com/yantar92/emacs-config/blob/master/config.org#dynamic-block-to-retrieve-google-docs-contents-in-org-format
    - It is not robust, but a good starting point for hacking, is someone is 
interested in this topic

- Karthink then shared his screen, and we dived deep into Elisp code,
  for over an hour, doing code review for his latex preview branch live
  - It was rather technical as we dived into ob-latex and possible regressions
    related to the new latex preview API, sometimes drifting too far away and
    discussing cool features that would be nice to implement if karthik had more
    time to work on the branch, but trying to keep the general course and not
    sink into even more feature creep than what the branch (and Org) already has
    - One example is our discussion about the design of asynchronous command 
queue
      that the preview branch implements (and probably bike sheds), where I 
recalled
      something similar being presented back in one of the EmacsConf talks 
several
      years ago. We spend a bunch of time trying to find it, failed,
      and then concluded that we are not going to use that anyway in
      practice, and went back to actually discussing useful things to
      change in the code
      - One thing I thought it is was 
https://codeberg.org/emacs-weirdware/debase, but it was just a D-bus Elisp 
library, not job manager
  - along the way, karthink shared 
https://github.com/gggion/visual-shorthands.el
    that he uses

:chat:
[17:00] [yaca : VIEWER]: hello
[17:00] [Sacha Chua : VIEWER]: Hello hello! =)
[17:00] [Morgan : VIEWER]: Hello 😊
[17:01] [Jake : VIEWER]: Hello!
[17:01] [Rudy : VIEWER]: Howdy, folks!
[17:04] [Sacha Chua : VIEWER]: I figured out how to use natrys/whisper to 
capture dictated notes to my currently-clocked-in org task =)
[17:11] [yaca : VIEWER]: I need help dealing with tables generated from R 
source code in latex export
[17:13] [Morgan : VIEWER]: I might be able to help
[17:13] [Morgan : VIEWER]: what is the issue?
[17:14] [yaca : VIEWER]: I need to give the resulting tables a label to be able 
to reference it on text
[17:15] [Morgan : VIEWER]: I don't know the answer to that off hand but I can 
take a look
[17:18] [yaca : VIEWER]: can I share my screen maybe?
[17:18] yantar92 is now the presenter
[17:19] [Sacha Chua : VIEWER]: ah good yantar92 is here, I was just about to 
dig up the modcode
[17:19] [yaca : VIEWER]: sound is stuttering for me
[17:19] [Sacha Chua : VIEWER]: Audio is choppy for me too
[17:20] [Sacha Chua : VIEWER]: (CPU is fine on the server, probably memory is 
fine too)
[17:20] [Christian Moe : VIEWER]: You're fine, Sacha
[17:20] [Morgan : VIEWER]: Everything sounds good to me
[17:21] [Sacha Chua : VIEWER]: Yes, sound is much better
[17:22] [Sacha Chua : VIEWER]: yaca had an Org Babel and LaTeX export question
[17:22] [Sacha Chua : VIEWER]: (probably already tried #+NAME:  before the 
source block?)
[17:25] Sacha Chua is now the presenter, set by yantar92
[17:27] [Sacha Chua : VIEWER]: 
https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/
[17:27] [yantar92 : MODERATOR]: 
https://sachachua.com/blog/2026/01/using-whisper-el-to-capture-text-to-speech-in-emacs/
[17:30] [karthink : VIEWER]: Sacha, which whisper model are you using?
[17:31] [yantar92 : MODERATOR]: And Emacs news: 
https://sachachua.com/blog/2026/01/2026-01-12-emacs-news/ (just in case)
[17:32] [yaca : VIEWER]: yes i tried with no success
[17:32] [karthink : VIEWER]: Thanks Sacha
[17:32] [Sacha Chua : VIEWER]: Kiddo is out for lunch now, so I gotta go, 
thanks for letting me squeeze that in!
[17:33] [Sacha Chua : VIEWER]: ooh also you can use Pipewire to direct other 
output streams into the Chrome that's doing the streaming speech recognition
[17:33] [karthink : VIEWER]: Is it running locally in Chrome?
[17:33] [karthink : VIEWER]: It looked like a localhost URL
[17:33] [Sacha Chua : VIEWER]: looks like it uses an online service though 
https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
[17:34] yantar92 is now the presenter, set by yantar92
[17:34] [Sacha Chua : VIEWER]: someday I might have a computer powerful enough 
to do fully local streaming speech recognition, but for now the whisper.el way 
of using whisper.cpp works for the offline stuff
[17:35] [Sacha Chua : VIEWER]: sorry, what was that?
[17:35] [karthink : VIEWER]: Does whisper have a real-time mode?
[17:35] [Sacha Chua : VIEWER]: ah I haven't gotten my GPU set up on my Lenovo 
P52 and it's probably a potato GPU anyway
[17:35] [karthink : VIEWER]: It doesn't work well because because of hardware 
requirements or is the model not good at it?
[17:36] [Sacha Chua : VIEWER]: I tried SimulStreaming for the local streaming 
thing, but wasn't happy with base or medium
[17:36] [karthink : VIEWER]: I can run whisper (at least the base model) with 
very little lag on my ~2019 integrated AMD GPU
[17:37] [Sacha Chua : VIEWER]: My next step is probably to figure out how to 
get whisper.el to handle queuing so I can  queue intermediate results, since 
whisper-type recognition has a hard type with streaming because it wants 
30-second context windows or something like that.
[17:37] [Sacha Chua : VIEWER]: anyway, saving to clocked task is surprisingly 
awesome for quickly thinking out loud with links to whatever you're thinking 
about
[17:37] [Zororg : VIEWER]: If you guys still use Firefox, you must try glide: 
https://github.com/glide-browser/glide
[17:37] [Sacha Chua : VIEWER]: okay now I'm really out
[17:38] [Zororg : VIEWER]: Its a soft fork, that add lots of configuring 
options and API
[17:38] [yaca : VIEWER]: yup
[17:38] [Zororg : VIEWER]: I added Emacs keybinding config as much a i can: 
https://github.com/glide-browser/glide/discussions/25
[17:39] [Morgan : VIEWER]: for yaca

the relevent documentation:

[[info:org#Exporting Code Blocks]]

snippet from that info page:

Results of evaluation of a named block can also be explicitly named
using a separate ‘NAME’ keyword.  The name value set via ‘NAME’ keyword
will be preferred over the parent source block.

#+NAME: code name
#+BEGIN_SRC emacs-lisp :exports both value
(+ 1 2)
#+END_SRC

#+NAME: results name
#+RESULTS: code name
3

This [[code name][link]] will point to the code block.
Another [[results name][link]] will point to the results.

[17:40] [yaca : VIEWER]: I also want to add a caption, i have an example 
prepared
[17:40] yaca is now the presenter, set by yantar92
[17:44] yantar92 is now the presenter, set by yantar92
[17:44] [yaca : VIEWER]: thank you very much
[17:47] [Rudy : VIEWER]: This is similar to LibreWolf, which I use.
[17:47] [Zororg : VIEWER]: But you can config all keymaps
[17:47] [M. Page-Lieberman : VIEWER]: Nice! 
https://www.redbubble.com/i/t-shirt/M-x-solves-everything-Emacs-by-themkat/95142088.NL9AC
[17:47] [Zororg : VIEWER]: And build M-x like commands
[17:49] [Morgan : VIEWER]: https://nyxt-browser.com/
[17:49] [Zororg : VIEWER]: Not maintained anymore
[17:50] [Morgan : VIEWER]: I never figured out how to use it.  Tried a couple 
times
[17:50] [Zororg : VIEWER]: 4.0 was supposedly rewrite on electron, but its stall
[17:51] [Morgan : VIEWER]: all the time
[17:51] [M. Page-Lieberman : VIEWER]: Why would they want to rewrite it in 
Electron rather than Chromium? Electron is the Chromium backend for local apps, 
no?
[17:51] [Rudy : VIEWER]: Any news on the new LaTeX export/subsystem? 😊
[17:52] [M. Page-Lieberman : VIEWER]: I use w3m
[17:53] [Morgan : VIEWER]: I also thought it was one way 😜
[17:53] [M. Page-Lieberman : VIEWER]: That is not vanilla eww, right?
[17:54] [M. Page-Lieberman : VIEWER]: Wow. I'll have to give eww another try 
then.
[17:54] [Zororg : VIEWER]: How are you going from agenda item -> reddig post?
[17:55] [yantar92 : MODERATOR]: (add-to-list 'browse-url-handlers
                 '("^https?://\\(www\\.\\)?\\(?:old\\.\\)?reddit\\.com"
                   . yant/browse-url-reddit))
[17:56] [Zororg : VIEWER]: Cool. Even same author has package for hackernews 
comments, stack exchange as well
[17:58] [yantar92 : MODERATOR]: https://github.com/thanhvg/emacs-hnreader
[18:01] [yantar92 : MODERATOR]: 
https://github.com/yantar92/emacs-config/blob/master/config.org#automatically-redirect-from-eww-to-mastodonel
[18:02] [Rudy : VIEWER]: Yes!
[18:02] [Rudy : VIEWER]: 😊
[18:05] [zor : VIEWER]: In case anyone does not know, eglot author is writing a 
client to connect multi Lsp : https://github.com/joaotavora/rassumfrassum
[18:08] [Morgan : VIEWER]: unrelated question: why don't we do more type 
checking?

The entire Emacs repository only has 140 hits for `cl-check-type' and 36 for
`cl-the'.

I seem to hit type problems often and wonder if more liberal use of these
wouldn't make the code more robust and easier to debug?
[18:11] [Morgan : VIEWER]: that makes sense
[18:14] karthink is now the presenter, set by yantar92
[18:29] [Jacob S. Gordon : VIEWER]: Minor point: doc strings unfortunately 
don’t respect ‘read-symbol-shorthands’, so I think you need to spell out 
abbreviated references
[18:29] [Jacob S. Gordon : VIEWER]: Sorry didn't catch that Ihor!
[18:30] [Jacob S. Gordon : VIEWER]: Oh very cool, didn't know about either
[18:30] [yantar92 : MODERATOR]: visual-shorthand-mode
[18:31] [yantar92 : MODERATOR]: https://github.com/gggion/visual-shorthands.el
[18:53] [M. Page-Lieberman : VIEWER]: I have to to. Happy new year and peace to 
all. Bless!
[18:53] [Rudy : VIEWER]: Looking at all this code ... made me hungry.
[18:54] [oylenshpeegul : VIEWER]: Yes, it's lunchtime here! 😊
[18:57] [Rudy : VIEWER]: Few things in life make me feel more stupid than 
hearing Yantar92 talking to Karthink.
[19:01] [Sacha Chua : VIEWER]: Hahaha
[19:01] [Sacha Chua : VIEWER]: I'm so glad the text makes it easy to skim
[19:03] [yantar92 : MODERATOR]: https://codeberg.org/emacs-weirdware/debase
[19:04] [Sacha Chua : VIEWER]: John Wiegley and async, maybe?
[19:05] [karthink : VIEWER]: el-job
[19:06] [Sacha Chua : VIEWER]: https://emacsconf.org/talks/ only mentions 
lsp-bridge as the other thing with async in its title
[19:07] [Sacha Chua : VIEWER]: Oh, just as a follow-up, Chrome 139 allow 
on-device-only recognition
[19:08] [Sacha Chua : VIEWER]: with .processLocally and downloading the language
[19:09] [Sacha Chua : VIEWER]: I'm off to the library, thanks for working on 
all this cool stuff!
[19:41] [karthink : VIEWER]: #+begin_src latex :results file :file /tmp/test.pdf
\[ \int_0^1 x^2 \mathrm{d}x \]
#+end_src

[19:53] [Rudy : VIEWER]: Here.
[19:53] [Rudy : VIEWER]: Two Xmas later, still here!
[19:54] [Jacob S. Gordon : VIEWER]: I'm looking forward to it too! (also 
curious about the changes, seems like a huge job)
[19:54] [Rudy : VIEWER]: So, Org 10 released this month? 😊
[19:54] [Jacob S. Gordon : VIEWER]: nope!
[19:57] [Rudy : VIEWER]: Thank you everyone.
[19:57] [Rudy : VIEWER]: Lovely session!
[19:57] [Jacob S. Gordon : VIEWER]: Thanks!
: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