From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id UHCAKCTVQWMtXQEAbAwnHQ (envelope-from ) for ; Sat, 08 Oct 2022 21:53:08 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id xbSqJyTVQWMBXAAAG6o9tA (envelope-from ) for ; Sat, 08 Oct 2022 21:53:08 +0200 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 3CB2E460FC for ; Sat, 8 Oct 2022 21:53:08 +0200 (CEST) Received: from localhost ([::1]:54782 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ohFsh-0002qG-FL for larch@yhetil.org; Sat, 08 Oct 2022 15:53:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48394) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ohFsE-0002ps-Ls for emacs-orgmode@gnu.org; Sat, 08 Oct 2022 15:52:39 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:59642) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ohFsE-0005bh-DQ for emacs-orgmode@gnu.org; Sat, 08 Oct 2022 15:52:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=To:Subject:Date:From:In-Reply-To:References: MIME-Version; bh=rdSzga/b8lwEPOF9eFF9+LmIfA587X+udT58Z7Trq4Y=; b=Uz/WryEl8Pzs n5KmfZ5FjUFDH+hNyMjFHE+CtLMxFweZNdkj9trFFn1PQWHRmeOJjRX11M41OptyaKBthsUjoI3Y7 avJYZPHIJypp/kkd9xPNAtcn0U/fqpLOvWxo7IH+OqmMN4YWoicB1TJs/P8JNfPLPOn8AiyFDrB43 owT3UsiT8UmhnxDvL8/J+MFHIjJaPL+3/Mq1eY4aCPps4PErYPN1Uz0CZEjLayWqr5fC8Wrbw6li+ MvBGVBuUAoG0OzE+oXgUDPB9SI4Inyn4/lnQzODmMXGy0n7v079YuOCKponONfSK5ODT0rEIuGS4u XOvj8yOfvnB70LXoBDlVNA==; Received: from mail-vs1-f46.google.com ([209.85.217.46]:40716) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ohFsE-0000Hs-5c for emacs-orgmode@gnu.org; Sat, 08 Oct 2022 15:52:38 -0400 Received: by mail-vs1-f46.google.com with SMTP id p7so4671686vsr.7 for ; Sat, 08 Oct 2022 12:52:38 -0700 (PDT) X-Gm-Message-State: ACrzQf15MF2YeeHZPkVjz+xX8yutfP75G3v3N+GgqYoQs130741NXvij qCFts1a4prXRJLytqxlwg9B+un6O85UQvuECJN4= X-Google-Smtp-Source: AMsMyM5OeDeauznOcXmsRegxtvnggt9g2Wpu5Drt4/0/Ok61UywbcOUi+TFL4m7Fsi4vD9aXh0ByBHyyakPebRNyTBI= X-Received: by 2002:a67:c988:0:b0:390:1f73:b3ad with SMTP id y8-20020a67c988000000b003901f73b3admr5806878vsk.16.1665258757639; Sat, 08 Oct 2022 12:52:37 -0700 (PDT) MIME-Version: 1.0 References: <4451244f7fd0ea50bcd2a2270b5e75b320b2feaf.camel@gmail.com> In-Reply-To: <4451244f7fd0ea50bcd2a2270b5e75b320b2feaf.camel@gmail.com> From: Robert Weiner Date: Sat, 8 Oct 2022 15:52:10 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Org and Hyperbole To: Siva Swaminathan Cc: emacs-org list Content-Type: multipart/alternative; boundary="000000000000b558bf05ea8b4447" 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: , Reply-To: rswgnu@gmail.com Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1665258788; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=rdSzga/b8lwEPOF9eFF9+LmIfA587X+udT58Z7Trq4Y=; b=ScFQMugOXJHeSlKTHQHlhuo4bcg0/l4dtlfDIYUt5atz/JARQsTVo6rUKQtI5ZsH6VezZo mio86QESV1OPcKxcCtENZrz//P+KNPKoF9kezdw2ie46hhdk14nBZe9E9arCsNUygrXTpF NsYfXxa4DqnhHuRtCrDZ2C6JRtByqi5pKQAZn1foyQb1K3ShrO1jiAPebb7IbSZRGbbYvS yDf9sAqmH8HV56YalPJzbMLh2mKmtJNxKDyQmv6nuBD83VLclOYR4W5c/qfCw4CNsyEIlJ ez9CyuR0SVl6LDhqNL4bkcRDvcwjvQvzDG7sUPreRb5fpI1vgk0L6bOr0dE3Lg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1665258788; a=rsa-sha256; cv=none; b=OOdTtUKJOMJhqK1d0QAvL8pMrD8VbGFe/sbG6nMQ9V6eJp/wNprxrh9wfnyq+uC1E4fo13 94UsoV9bNp3znK1tooJQGPNafy2BNbh5YxeIi7lLr308WaOw+r6+8W48h19i/wQtzXwwA9 bX9e0VdbtpuqBaFzyd102y14IgaT0zK7+l0duff7VwGsAnSFs6raBez2cCU5jTv77KP71T 0Tln4b8zDwDa5q8dy7eMU67FlsxXIRT/Qle47slxlwA7wOGOF+rn1mCb4iIFy7uQy298Ib geLKIVeulhikKt4xyXK+TplbBUk6mTDDqJXPRZMQNutBZve641Kg85t5M6Xgiw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b="Uz/WryEl"; dmarc=pass (policy=none) header.from=gnu.org; 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" X-Migadu-Spam-Score: -3.58 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gnu.org header.s=fencepost-gnu-org header.b="Uz/WryEl"; dmarc=pass (policy=none) header.from=gnu.org; 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" X-Migadu-Queue-Id: 3CB2E460FC X-Spam-Score: -3.58 X-Migadu-Scanner: scn1.migadu.com X-TUID: qnaZID7kGd1B --000000000000b558bf05ea8b4447 Content-Type: text/plain; charset="UTF-8" Hi Siva: (Sorry, I can't read this list too often so I miss some of these great messages). That is a very nice explanation of the power of implicit buttons. Imagine being able to ignore having to fully parse documents and instead just describing the patterns of interest and what to do with them using simple mechanisms (see Hyperbole's defal, defil and defib macros) and then having live hypertext in such documents with no formatting changes. Hyperbole makes this quick and easy. We hope more people will give it a spin and get an understanding of what they can do with it as you have, especially in tandem with Org mode. -- rsw On Sun, Jun 26, 2022 at 2:37 AM Siva Swaminathan wrote: > Hello, > > I only recently became aware of Hyperbole (through Bob's demo video > available on Youtube), and came across this thread while googling to > find more information about Hyperbole. I feel that some of the > questions raised here about Hyperbole sound akin to the story of five > blind men feeling the elephant, so I humbly offer my perspective on > what I consider to be the key underlying ideas. Forgive me if I'm > stating the obvious, and I also don't know whether Hyperbole as > currently implemented does exactly all this :-) > > I'd like to think of the key idea of Hyperbole as converting text in > buffers into *objects* (aka "buttons") by attaching *behavior* to them. > The two actions provided by convention could be thought of as akin to > the left-click and right-click which one is familiar with in > contemporary GUIs, in this case respectively bound to methods for "do > (by default)" and "show metadata". Supporting more > behaviors/methods/messages for user-invocation is an obvious next idea > (if not already so). > > The above system would be of quite limited composability if it required > objects to be defined explicitly -- because most buffers one operates > on are generated without awareness of Hyperbole (imagine the pain of > everything needing to conform to something like a Hyperbole > framework/protocol!). The cleverness behind implicit buttons is that > one can opportunistically use common conventions as "schemas" to "parse > / deserialize" the contents which make up an object from any buffer (in > this case via regexps) and attach corresponding (expected) behaviors to > them! Because of the highly structured nature of such data, even if > embedded in a stream of plain text, it can typically be parsed > correctly without needing explicit type annotations. The behaviors > could presumably depend not just the object, but also the active modes, > environment variables, etc. > > Here are a few made-up example use cases (hand-waving over details): > > 1. I might embed phrases such as "bug:123" in my code / emails / org > task management and have behaviors that respectively fetch the bug > report / open some URL in a browser / or update the TODO status based > on the bug status, as desired. This would help me interface > conveniently with a bespoke bug-tracking tool. > > 2. On encountering Goodreads links in my reading list org file, I could > have a behavior to parse the contents of the webpage and extract > desired metadata to add to the item properties (or an entry to some org > table). > > 3. Linking by immutable block identifiers (and fast lookup) of course > enables a lot of PKM workflows that have recently become popular (with > the addition of bidirectional links). > > Other aspects such as menus generated from button files seem like > convenient affordances bolted on to make up the UI of the system. I > still need to wrap my mind around these, but I wonder whether there > might be opportunities to compose with other ecosystem tools which have > pioneered some nice UI ideas eg. transient menus, hydras, interactive > selection lists, etc. But that's a discussion for the Hyperbole mailing > list. > > > From a first impression, I'm really impressed, and also surprised that > Hyperbole is not more popular. Much gratitude to the contributors for a > nifty tool, and a fascinating design perspective. > > Best regards, > Siva > http://sivark.me > > --000000000000b558bf05ea8b4447 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Siva:

(Sorry, I can't read this list too often s= o I miss some of these great messages).

That is a very nice explanat= ion of the power of implicit buttons.=C2=A0 Imagine being able to ignore ha= ving to fully parse documents and instead just describing the patterns of i= nterest and what to do with them using simple mechanisms (see Hyperbole'= ;s=C2=A0defal, defil and defib macros) and then having live hypertext in su= ch documents with no formatting changes.=C2=A0 Hyperbole makes this quick a= nd easy.

We hope more people will give it a spin and get an understa= nding of what they can do with it as you have, especially in tandem with Or= g mode.

-- rsw

On Sun, Jun 26, 2022 at 2:37 AM Siva Swaminathan= <siva.rk.sw@gmail.com> w= rote:
Hello,

I only recently became aware of Hyperbole (through Bob's demo video
available on Youtube), and came across this thread while googling to
find more information about Hyperbole. I feel that some of the
questions raised here about Hyperbole sound akin to the story of five
blind men feeling the elephant, so I humbly offer my perspective on
what I consider to be the key underlying ideas. Forgive me if I'm
stating the obvious, and I also don't know whether Hyperbole as
currently implemented does exactly all this :-)

I'd like to think of the key idea of Hyperbole as converting text in buffers into *objects* (aka "buttons") by attaching *behavior* to= them.
The two actions provided by convention could be thought of as akin to
the left-click and right-click which one is familiar with in
contemporary GUIs, in this case respectively bound to methods for "do<= br> (by default)" and "show metadata". Supporting more
behaviors/methods/messages for user-invocation is an obvious next idea
(if not already so).

The above system would be of quite limited composability if it required
objects to be defined explicitly -- because most buffers one operates
on are generated without awareness of Hyperbole (imagine the pain of
everything needing to conform to something like a Hyperbole
framework/protocol!). The cleverness behind implicit buttons is that
one can opportunistically use common conventions as "schemas" to = "parse
/ deserialize" the contents which make up an object from any buffer (i= n
this case via regexps) and attach corresponding (expected) behaviors to
them! Because of the highly structured nature of such data, even if
embedded in a stream of plain text, it can typically be parsed
correctly without needing explicit type annotations. The behaviors
could presumably depend not just the object, but also the active modes,
environment variables, etc.

Here are a few made-up example use cases (hand-waving over details):

1. I might embed phrases such as "bug:123" in my code / emails / = org
task management and have behaviors that respectively fetch the bug
report / open some URL in a browser / or update the TODO status based
on the bug status, as desired. This would help me interface
conveniently with a bespoke bug-tracking tool.

2. On encountering Goodreads links in my reading list org file, I could
have a behavior to parse the contents of the webpage and extract
desired metadata to add to the item properties (or an entry to some org
table).

3. Linking by immutable block identifiers (and fast lookup) of course
enables a lot of PKM workflows that have recently become popular (with
the addition of bidirectional links).

Other aspects such as menus generated from button files seem like
convenient affordances bolted on to make up the UI of the system. I
still need to wrap my mind around these, but I wonder whether there
might be opportunities to compose with other ecosystem tools which have
pioneered some nice UI ideas eg. transient menus, hydras, interactive
selection lists, etc. But that's a discussion for the Hyperbole mailing=
list.


>From a first impression, I'm really impressed, and also surprised that<= br> Hyperbole is not more popular. Much gratitude to the contributors for a
nifty tool, and a fascinating design perspective.

Best regards,
Siva
http://si= vark.me

--000000000000b558bf05ea8b4447--