From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id iGkNM9/Bm2fVrwAAe85BDQ:P1 (envelope-from ) for ; Thu, 30 Jan 2025 18:16:00 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id iGkNM9/Bm2fVrwAAe85BDQ (envelope-from ) for ; Thu, 30 Jan 2025 19:15:59 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=d4Gjc8IL; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1738260959; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=V86Y6zYKTEVfoly2K2NnhplwkPVlErBieDgAmJ1MAiQ=; b=mN+WPVPyfzrcd0KaukcxUSkQPXgJmqJZCQ5m+nwGnVwEKaHe2LDqiFX3ddTg5mtPbX3Ls8 ZdDcPMNkW4I7JVwYikdc9tTGIvLVRgdt8ZJ8sI0PjhrE/jPiyUpmREGR5K69uQxr974jUv lajF1WELHTCf7GxQ49gcMrGzTZxkWyUKQ9qHGEf8JTslradRvdMRiTJPBNI3Gr9ojcSJSb 8jnMoWZhXLIA6Bng+Qj3Sb4LI2Aa3RBD6h40y6haOMlfXGWsLPT1uSUwNI7aEywWcbAuPd q+6CX4oBVZVEDFBCICp219mfyqKovQGHpdfVGk9O/N56K3rykfWFqsaFF6Pdpw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=d4Gjc8IL; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=posteo.net ARC-Seal: i=1; s=key1; d=yhetil.org; t=1738260959; a=rsa-sha256; cv=none; b=RlUGDMgIZmdedrujV85Q3/0DcByDmcSjWxa6uln5GpUqXljZciNZmSPkrLFYDCaNN+s1qx BtY/NKUf+CxJqn2braFqnxHnkbQ7N4sNkLIlxccR1bEJ8cqCL1mX1uzZnCx9vt6ioQFMaO fMVgY3vVmL4wSFYQr8MOWPigIwxS/JUI1OZ95y0p6orLuyVozR73HqrH69ipQKIa0YUIwH vJHMGOEakGAfdhRTVfR+8yb6oMXspFY+woc2UYLRBdeLHETZpXBkdiODUEh7rAzbQlILMr W4fpKxUwjLKknnf+f7eIFKNwhj3gJtczct3loiMQM+RLfzJZyP5BcmqLGj7T4w== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 500A0837C3 for ; Thu, 30 Jan 2025 19:15:59 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tdZ40-0000fp-1m; Thu, 30 Jan 2025 13:14:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tdZ3q-0000er-Hl for emacs-orgmode@gnu.org; Thu, 30 Jan 2025 13:14:42 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tdZ3m-0006sp-0o for emacs-orgmode@gnu.org; Thu, 30 Jan 2025 13:14:40 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id D8B47240103 for ; Thu, 30 Jan 2025 19:14:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1738260872; bh=9Fwbn5CzOLom0Q9qZaVCFr7cvX6j4n5gfd7aAjPBItA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type: Content-Transfer-Encoding:From; b=d4Gjc8ILxrWH+ReAFwImHEN05AnyXWDjrh+iDJx+IXqwoxaYv5zINpR9LXdcIb3+L jJHQP28wbh6G8cZ37worYrRt0Mkk/cD5U0eYSo2VLJQ8BMjpnJEsKJCkew6mm5OznI vu5Y0y7ragwG7CpLnTWxMp1Fm1zSklo6Pr/KBVfUxTs/oYNGGoE+ZiRp6VzFq5wByL s+OLan/1Vobu5KeAJuFsyNGP2W4g+XxDRLy0/eZOYN6NRkRL4PUQMS9Mq+8md9llFD 5i27F9mGMhCawhkSodb6kpABbvAAGJaAJPUuQlObsAP2hhmVSoeT0fBZMoGtfBrHBc ONAYbGxKIVwtw== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4YkRxh2vDyz9rxG for ; Thu, 30 Jan 2025 19:14:31 +0100 (CET) From: Ihor Radchenko To: emacs-orgmode@gnu.org Subject: [BLOG] #15 [[bbb:OrgMeetup]] on Wed, Jan 8, 19:00 UTC+3 In-Reply-To: <87v7v3vuu4.fsf@localhost> References: <87v7v3vuu4.fsf@localhost> Date: Thu, 30 Jan 2025 18:16:45 +0000 Message-ID: <87y0ysb20i.fsf@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=185.67.36.66; envelope-from=yantar92@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_SBL_A=0.1 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -4.39 X-Spam-Score: -4.39 X-Migadu-Queue-Id: 500A0837C3 X-TUID: VxFvXQVHFKGB Dear all, Below are the meetup notes. TL;DR: org-drill, debugging errors, spaced repetition, howm (alternative to org-roam and denote), org-persist (caching library), org-agenda-prefix-format, setting duration in Org, org-supertag, feature/igc branch (Emacs), speeding up Org mode loading, big vs. small Org files. - As usual, we started from Emacs News https://sachachua.com/blog/2025/01/2025-01-06-emacs-news/ - artsi0m shared a problem he experiences with org-drill https://gitlab.com/phillord/org-drill/-/issues/55#note_2287352315 - He is getting an error when running M-x org-drill-cram =3Dfuncall-interactively: Wrong type argument: symbolp, (oref session c= ram-mode)=3D - To find out the source of the error, it is useful to get a full backtra= ce - =3DM-x toggle-debug-on-error=3D will make Emacs generate a full backtrace when any error occur - The backtrace will contain the call chain that lead to the error - Inside the backtrace buffer, one can press "e" to evaluate arbitrary Elisp in the context where the error occurred - For example, e session RET will display the value of ~session~ when the error is raised (and hopefully give some clues how ~session~ could have inappropriate value) - we then moved on discussing org-drill itself and what it does https://gitlab.com/phillord/org-drill - artsi0m demoed using org-drill to memories various pieces of information like standard TCP/IP port names - but one can do _a lot more_: https://borretti.me/article/effective-sp= aced-repetition - org-drill implements spaced repetition (similar to Anki), but in Emacs - The "flash cards" (with questions and answers) are simply Org headings - This makes it trivial to create new cards to learn, in contrast with clunky anki electron-based UI - also, https://github.com/bohonghuang/org-srs/ and https://github.com/l3= kn/org-fc/ - more about using spaced repetition - https://www.lesswrong.com/posts/F6ZTtBXn2cFLmWPdM/seven-years-of-spac= ed-repetition-software-in-the-classroom-1 - https://www.coursera.org/learn/learning-how-to-learn - artsi0m also uses https://github.com/kaorahi/howm note manager - howm is a note-taking system that may work with arbitrary text files (including, but not limited to Org mode) - somewhat similar to https://github.com/protesilaos/denote (but a lot more mature) - howm has an interesting feature similar to Org's radio targets - certain keywords (anywhere in the text) will become links to "target" - unlike Org mode, howm makes it work across multiple files - (it would be nice to extend Org targets to work across agenda files) - howm also allows multiple keywords to point to the same target (think of tag aliases) - dmg asked about Org caching and org-persist in particular - org-persist is a library for managing disk caches that Org mode uses 1. Latex preview caches (on WIP latex preview branch) that stores generated images and pre-compiled latex 2. Org parser caches (~org-element-cache-persistent~) to speed up parsing after opening Org files in a new Emacs session - In the case of Org parser, the disk cache is mainly useful the first time an Org file is opened in a new Emacs session - Later, and independently, there is runtime in-memory cache (~org-element-use-cache~) that is used by incremental Org parser - Among other things, caches speed up agenda generation, but they are used in all corners of Org codebase to analyze Org file syntax - Jake asked about my agenda view that contains the latest note before todo keywords: : Focused daily agenda : Friday 17 January 2025 : Org[H]: [1:11/0:40]+1.0x NEXT [#A] Weekly review : * 9 d. ago OrgMeetup[T]: [0:30] +1.0x [note about Jake's que= stion] DOING [#A] Ihor Radchenko [ML:Org mode] (2024) #15 [[bbb:OrgMeetup]]= on Wed, Jan 8, 19:00 UTC+3 :COMMON:@home:emacsdev::BOOKMARK:misc:email: - I do it simply using ~org-agenda-prefix-format~ - The format consists of mandatory fixed width prefix + optional suffix= with the note - the fixed prefix makes an illusion that the note is prepended to the = heading text, before todo keyword - ... but it is instead /appended/ after the prefix - config: https://github.com/yantar92/emacs-config/blob/master/config.org= #agenda - there are other components of the agenda prefix, notably repeater indic= ators - see recent blog post on how to set it up: https://whhone.com/posts/or= g-agenda-repeated-tasks/ - new-to-org asked about setting duration of agenda tasks - there are multiple notions of "duration" in Org mode in general and agenda in particular - you can use timestamp ranges for appointments - you can use effort estimates - check out dedicated section of Org mode manual: https://orgmode.org/manual/Dates-and-Times.html - we then had a moment of awkward silence, and turned to Emacs News for inspiration - There is a new package https://github.com/yibie/org-supertag - We reached to README first, but it was a bit too high-level that time t= o understand - [2025-01-18 Sat] Now, a couple of illustrative gifs have been added to = the package - It looks like the package is an alternative implementation of org-roa= m (kind of) - It provides a notion of "supertag" that is essentially a classification of headings: - specific "supertag" can be though of as a heading type, like a "book" - a "book" is defined by tag + specific set of heading properties (like author, title, etc) - org-supertag provides something similar to ~org-bibtex-create~ (or org-capture) to automate creating and populating special heading types with properties - it also re-implements certain features of org-edna, but focuses on triggers being tag change - it does not only provide actions that change headings, but also adds custom fontification of the whole heading for certain tags - it re-implements org-agenda in its own way - it re-implements org-ql-search in its own way - my Emacs crashed (several times), right while screen sharing - that was because I am testing scratch/igc ([2025-01-19 Sun] moved to feature/igc a few days back) with generational garbage collector - https://yhetil.org/emacs-devel/?q=3Digc - https://yhetil.org/emacs-bugs/86cygle696.fsf@gnu.org/T/#t - https://yhetil.org/emacs-bugs/86tta5xi0q.fsf@gnu.org/T/#t - most likely because I enabled menu bar while screen sharing (which I otherwise rarely do) - Kathink asked whether it is possible to speed up Org mode loading inside Org buffers that are known to be noninteractive (opened and closed automatically by some Elisp code) - we went throgh the code of org-mode major mode definition and found out that most of the things there are either 1. very fast (setting variables) 2. parser initialization (strictly necessary) - I am hoping to make things faster here as well, but that's significant (and sometimes breaking) refactoring work (in progress) 3. can be suppressed by setting ~org-inhibit-startup-visibility-stuff~ or ~org-inhibit-startup~ (Karthink knew these two) 4. can be suppressed by setting ~org-agenda-file-menu-enabled~ (relatively new setting) - this one addresses the problem that creating Emacs menus is relatively costly - normally, Org mode re-creates a menu entry listing all the opened agenda files (by looping over buffers); when _all_ the agenda files are opened at once, one by one, this may give a significant performance impact (scaling with number of buffers opened) - another common trick is doing (delay-mode-hooks ...) around the code opening Org buffer. Although it is generally not safe, except certain very specific scenarios - ~org-mode-hook~ may contain user customizations that can affect Org parser (e.g. setting buffer category) - the problem with disabling parts of Org mode setup (the above "inhibit" variables) is that they really disable things - as long as the org buffer in question is only used programmatically, it does not matter - but when the user switches to that org buffer, there might be issues - karthink suggested that we might somehow postpone visual setup only after the buffer is actually displayed - for example, via ~window-selection-change-functions~ or similar hoo= ks - it might be doable, but I feel that there will be a lot of edge cases out there - for example, once upon a time I tried to create a somewhat similar optimization for initial folding after opening Org buffer: instead of folding immediately, I made folding work like font-lock by folding on idle, incrementally - this was working quite well in testing, until I ran regression tests that revealed that somewhere deep inside Org codebase, an implicit assumption is made that folds are correctly initialized after loading Org mode. That took a while to figure out and that optimization never landed upstream, after all. - Jake asked whether anybody tried to profile loading org-file - Yes, of course. And a number of bottlenecks have been addressed in the recent Org mode releases - someone raised the eternal question on whether to use one big Org file or many small ones - there are pros and cons to both ways - at the end, it is up to each user workflow - common arguments are listed in a dedicated wiki page https://orgmode.org/worg/org-tutorials/org-lookups.html - (feel free to add new things to that page - it is a wiki; wee https://orgmode.org/worg/worg-about.html on how to contribute) :chat: Fellow Jitster Fellow Jitster says:The latest Emacs News:=20 https://sachachua.com/blog/2025/01/2025-01-06-emacs-news/ =20 16:58 A artsi0m artsi0m says: https://gitlab.com/phillord/org-drill/-/issues/55#note_2287352315 =20 17:03 dmg dmg says:I have been curious about the features that persist information of= org files. I think it is org-persist and seems to be on by default.=20 17:05 Fellow Jitster Fellow Jitster says:(oref OBJ SLOT) Retrieve the value stored in OBJ in the slot named by SLOT.=20 17:11 Fellow Jitster says:so maybe somehow the session does not have a slot `cram= -mode` at the time the setq is called?=20 17:12 Fellow Jitster Fellow Jitster says:1. M-x toggle-debug-on-error 2. inside backtrace buffer, you may press "e" to check environment 3. you can "e" session to see what is the value=20 17:12 A artsi0m artsi0m says:Thanks=20 17:12 Christopher Miller Christopher Miller says:thank you all! i am not able to join for long today= , but this has been great.=20 17:24 Jared Jennings Jared Jennings says:artsi0m, in ...163117.txt something tagged "flaschards"= not "flashcards" - not sure if this gets in the way of something you are t= alking about=20 17:25 K karthink karthink says:Ihor, I have a question for you about programmatic use of (or= g-mode), will ask in about fifteen minutes as I have to step away for the m= oment.=20 17:25 A artsi0m artsi0m says: https://borretti.me/article/effective-spaced-repetition =20 17:28 me says: https://kaorahi.github.io/howm/ =20 17:28 Jared Jennings Jared Jennings says:-- that's fine. i just thought if you had some code loo= king for the "flashcards" tag, it might fail to find that one=20 =F0=9F=91=8D 17:29 A artsi0m artsi0m says:Thanks=20 17:29 Jared Jennings Jared Jennings says:no problem. thanks to your questions, artsi0m, i now kn= ow more than zero about flashcards in org =F0=9F=98=84=20 17:31 dmg dmg says:does it mean that things like the agenda run faster?=20 17:31 dmg says:thank you.=20 17:32 Jake Jake says:Ihor, your org agenda appears to have information appearing *befo= re* the todo keyword in square brackets. But that doesn't look like org-age= nda-prefix-format data, though. What is that?=20 17:33 Jake says:Oh, the alignment seemed different than what I would have expecte= d from the prefix.=20 17:34 Matthew Page-Lieberman Matthew Page-Lieberman says:Have to go. Will have to catch up with the prev= ious meeting notes. Happy New Year and blessings to everyone.=20 17:35 new-to-org new-to-org says:How do we duration of agenda tasks? Those that have a defin= ite duration=20 17:36 Jake Jake says:@new-to-org I think that'd be done with the Effort property.=20 17:38 me says: https://github.com/yantar92/emacs-config/blob/master/config.org#agenda =20 17:38 me says:agenda prefix=20 17:38 me says: https://whhone.com/posts/org-agenda-repeated-tasks/ =20 17:38 me says:[[info=F0=9F=98=AErg#Effort Estimates][org#Effort Estimates]]=20 17:40 me says:[[info=F0=9F=98=AErg#Timestamps][org#Timestamps]]=20 17:42 new-to-org new-to-org says:Thank you. I didn't know timestamp could show range duratio= n.=20 17:42 K karthink karthink says:(Sorry, I need five more minutes before I can speak)=20 17:46 Jared Jennings Jared Jennings says:i was just reading about org-supertag this morning. i h= ave not tried it yet. sounds interesting=20 17:46 me says: https://github.com/yibie/org-supertag =20 17:49 JT Jeff Trull Jeff Trull says:Should I be seeing anything on the screen =F0=9F=98=83 sorr= y arrived late=20 17:58 Jeff Trull says:nvm I see it now=20 17:58 Jared Jennings Jared Jennings says:"IGC branch?" ... [searches the web]=20 =F0=9F=91=8D 18:00 Jake Jake says:Has anyone run a profiler on loading an org-mode file? That seems= like the best way to establish why it's slow for batch processing.=20 18:00 Jared Jennings Jared Jennings says:igc is [something] Garbage Collection=20 18:02 Jared Jennings says:(i have only ever run the binary distributions of relea= sed versions of emacs)=20 18:03 me says:org-agenda-file-menu-enabled=20 18:11 Jared Jennings Jared Jennings says:"Incremental," got it! cool=20 18:12 me says: https://yhetil.org/emacs-devel/?q=3Digc =20 18:14 me says:wip discussion=20 18:14 Jared Jennings Jared Jennings says:=F0=9F=91=8D=20 18:12 me says: https://sachachua.com/blog/2025/01/2025-01-06-emacs-news/ =20 18:14 me says:has links to igc discussions=20 18:15 me says: https://orgmode.org/worg/topics/how-many-files.html =20 18:19 Jared Jennings Jared Jennings says:i've got to hop out of here. thanks ihor, artsi0m, kart= hink! i came to lurk, and i learned several things already=20 18:35 K karthink karthink says:Addendum: I understand that using delay-mode-hooks to speed u= p opening Org files for (agenda) parsing is a bad idea because hooks can ch= ange the semantics of the document, such as via defining TODO keywords. But if I wanted to advise org-agenda or org-ql to do this, and call run-mod= e-hooks if/when I actually switch to that buffer interactively, how could I= do it? (All of my org-mode-hooks only run non-semantic changes, like visuals and p= resentation changes.)=20 18:44 me says: https://orgmode.org/worg/org-tutorials/org-lookups.html =20 18:52 me says:window-selection-change-functions=20 19:04 me says:buffer-list-update-hook=20 =F0=9F=91=8D=20 :end: --=20 Ihor Radchenko // yantar92, Org mode maintainer, Learn more about Org mode at . Support Org development at , or support my work at