summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2022-12-03 13:51:11 -0500
committerSacha Chua <sacha@sachachua.com>2022-12-03 13:51:11 -0500
commitdbeb11aa22f1df7cacdb419363ad6920e5620bf8 (patch)
treed10ab35b2c58bc4c27e072fe3293f9b7cbdfc705
parent50382fa76ccd2011db704bf66b195c011dab6874 (diff)
downloademacsconf-wiki-dbeb11aa22f1df7cacdb419363ad6920e5620bf8.tar.xz
emacsconf-wiki-dbeb11aa22f1df7cacdb419363ad6920e5620bf8.zip
Automated commit
-rw-r--r--2022/info/buttons-after.md228
-rw-r--r--2022/info/buttons-before.md24
2 files changed, 251 insertions, 1 deletions
diff --git a/2022/info/buttons-after.md b/2022/info/buttons-after.md
index a140460f..3e417e70 100644
--- a/2022/info/buttons-after.md
+++ b/2022/info/buttons-after.md
@@ -1,6 +1,234 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<a name="buttons-mainVideo-transcript"></a>
+# Transcript
+
+[[!template new="1" text="Hi everyone! I'm Mats Liddell." start="00:00:00.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="In this talk, I will show" start="00:00:06.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="how you can link to personal data" start="00:00:07.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="using Hyperbole's support for implicit button types." start="00:00:09.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Before starting, a few words about me." start="00:00:13.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="I work as a software engineer," start="00:00:16.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and in my spare time" start="00:00:18.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="I'm co-maintaining the Hyperbole package" start="00:00:19.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="together with the package author Bob Weiner." start="00:00:21.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Hyperbole dates back to 1993," start="00:00:24.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and have had some inactive years in the past," start="00:00:27.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but work is now active again." start="00:00:29.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The package is available" start="00:00:31.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="through the GNU ELPA package archive." start="00:00:33.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The talk will focus on" start="00:00:36.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="creation of implicit button types." start="00:00:37.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="For more info on Hyperbole," start="00:00:39.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="listen to other presentations" start="00:00:41.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and check out the package documentation." start="00:00:43.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="What I want you to take with you from this talk is" start="00:00:46.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that the implicit button types" start="00:00:50.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="can make patterns in your files into buttons;" start="00:00:51.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and that new implicit button types" start="00:00:54.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="can quickly be created by using" start="00:00:56.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the `defil' and the `defal' macros." start="00:00:58.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="So what is an implicit button type?" start="00:01:01.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="I think of it as a text pattern" start="00:01:05.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that has some extended meaning." start="00:01:06.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="When you see the pattern in the text," start="00:01:08.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you can think of it as a button type." start="00:01:10.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="When you press the button," start="00:01:12.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="something related to that meaning happens." start="00:01:13.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It can be jumping to some place," start="00:01:16.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="opening an external tool, doing some computation." start="00:01:19.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So there can be some action" start="00:01:22.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="associated with the pattern." start="00:01:24.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="To make it clear, let's look at some examples." start="00:01:29.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Let's start with something that is maybe so obvious" start="00:01:33.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that you don't even think of it as a pattern: a file name." start="00:01:36.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="When you see such a string in text," start="00:01:39.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you will naturally associate it with a file on disk," start="00:01:41.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and if you would click on it," start="00:01:45.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you would probably expect that file to open." start="00:01:46.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="In the first sentence on the slide," start="00:01:52.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you might recognize the file name" start="00:01:55.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="for the bash initialization file, ~/.bashrc." start="00:01:56.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Hyperbole comes with built-in support" start="00:02:01.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="for recognizing files and directory path names" start="00:02:03.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="as implicit button types in text." start="00:02:06.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="For Hyperbole to take action on the button type," start="00:02:08.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you move the cursor within the button" start="00:02:11.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and press M-RET or use a mouse click." start="00:02:13.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So let's try that." start="00:02:16.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Similar for the path, /usr/local in the next sentence." start="00:02:22.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="That will open the corresponding" start="00:02:27.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="directory using dired-mode." start="00:02:29.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="Other examples of built-in implicit button types" start="00:02:37.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that Hyperbole recognizes are email addresses," start="00:02:39.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="web addresses, requests for comment documents" start="00:02:43.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="in the form of RFC followed by a number," start="00:02:47.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="GNU debbugs issues, plus many more." start="00:02:50.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="These are some examples" start="00:02:53.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="of implicit button types with built-in support." start="00:02:55.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="I list them here to give you an idea" start="00:02:58.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="how the text pattern in itself is enough" start="00:02:59.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="for the system to recognize it" start="00:03:02.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="as something actionable." start="00:03:03.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="So as shown, Hyperbole has built-in support" start="00:03:10.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="for implicit buttons." start="00:03:12.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="There's only one problem here." start="00:03:14.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The behavior is predefined." start="00:03:16.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="There is of course a trade off." start="00:03:17.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It is convenient to get" start="00:03:20.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="many button types out of the box" start="00:03:21.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="with likely good standard behavior" start="00:03:23.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and that works in many places." start="00:03:25.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="But what if you would want to create" start="00:03:27.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="your own completely new mapping," start="00:03:29.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="possibly to your own data?" start="00:03:31.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It is here that Hyperbole's support for creating" start="00:03:32.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="new implicit button types comes in." start="00:03:38.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="For the full pattern matching button type," start="00:03:41.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="like for the filename and examples we just looked at," start="00:03:43.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you need to define the implicit button" start="00:03:46.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="using the macro, `defib'." start="00:03:48.755" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The downside of that is" start="00:03:50.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you need to code at the elisp level." start="00:03:53.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="However, if you are creating a new pattern" start="00:03:54.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that has well-defined delimiters," start="00:03:57.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="there is support for that in an easier way." start="00:03:59.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="These support functions, or rather macros," start="00:04:01.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="are `defil' and `defal'." start="00:04:03.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="We will look at those macros soon," start="00:04:06.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but first, my definition of personal data." start="00:04:08.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="I think of personal data as something" start="00:04:13.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that you would like to link to," start="00:04:18.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but it's not necessarily in a form" start="00:04:19.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="supported by any known tool." start="00:04:21.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It might be stored on a web server, local storage," start="00:04:23.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="or could even be some computation" start="00:04:26.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="rather than a link." start="00:04:28.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="What all these cases have in common is that" start="00:04:29.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="you want to be able to reference it" start="00:04:32.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="in a short, and for you, descriptive way." start="00:04:34.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So when you write text, you can use" start="00:04:36.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="a new implicit type to create the connection." start="00:04:38.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="This might be a bit abstract," start="00:04:44.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="so let's look at an example." start="00:04:46.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Suppose you have a flat file structure" start="00:04:48.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="with some notes in each file." start="00:04:51.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It can look like this." start="00:04:52.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="In the data folder, we have two files" start="00:04:54.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that represents the notes we have taken." start="00:04:57.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="We now want to be able to link to these notes" start="00:05:00.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="from outside of the data folder." start="00:05:02.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Let's make an implicit button type" start="00:05:07.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that opens a file in this structure." start="00:05:08.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="To make the pattern stand out in text," start="00:05:10.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="we use double braces as start and stop delimiters." start="00:05:13.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="An implicit button instance" start="00:05:16.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="would then look like this." start="00:05:20.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="We can create that using the `defil' macro like this." start="00:05:22.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="This invocation of the field" start="00:05:27.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="creates a button type &quot;demo-link-to-file&quot;" start="00:05:31.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="with the start delimiter of &quot;{{&quot;" start="00:05:34.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and then delimiters of &quot;}}&quot;," start="00:05:37.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the regular expression &quot;.*&quot; pattern" start="00:05:40.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to match everything between the delimiters," start="00:05:43.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and finally, the action defined by the link expression." start="00:05:45.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Pattern substitution is performed" start="00:05:48.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="on the link expression before evaluation" start="00:05:52.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="so that the text that is in between the delimiters" start="00:05:54.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="is inserted where the &quot;\\&&quot; is in the link expression." start="00:05:57.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So all in all, implicit type instance will result in" start="00:06:02.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the link expression of &quot;~/data/FileA&quot;," start="00:06:07.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="which we recognize as a file path." start="00:06:11.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="With a single-line expression," start="00:06:14.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="we have created our own hyperbutton syntax" start="00:06:18.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that we can use in any Emacs buffer" start="00:06:21.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to link to this custom set of data." start="00:06:23.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So let's evaluate the defil and use it." start="00:06:25.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="I have prepared the files so that they already" start="00:06:30.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="contain some text and implicit links." start="00:06:33.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So from the presentation, we can go to FileA," start="00:06:36.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and from there to fileB." start="00:06:43.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Since the Hyperbole path expression" start="00:06:48.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="supports outline structures, we can," start="00:06:51.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="as an extra bonus, reference directly" start="00:06:53.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the headers in the files," start="00:06:55.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="so we can, for example, link directly" start="00:06:57.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to &quot;More Notes&quot; in FileB." start="00:07:00.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="We have now created a simple info system." start="00:07:02.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="Looking deeper at the link expression," start="00:07:10.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="it can be of four different types:" start="00:07:16.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="A file path expression," start="00:07:19.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="as we have already looked at;" start="00:07:22.040" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="a brace-delimited key series," start="00:07:23.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that is, a series of command keys" start="00:07:25.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="for performing some action," start="00:07:27.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="much like a keyboard macro;" start="00:07:29.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="An URL; or a function that takes one argument," start="00:07:30.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="which will be given the button text as input." start="00:07:36.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The URL link expression allows you" start="00:07:38.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to link to web pages." start="00:07:42.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So if the data you want to link to" start="00:07:44.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="is accessible through the Web" start="00:07:46.560" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and the URL can be constructed" start="00:07:48.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="from the button text in a meaningful way," start="00:07:50.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="it is possible to do that." start="00:07:53.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="Let's create the button type" start="00:07:54.520" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that links to GNU software." start="00:07:56.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The URL to the GNU software catalog" start="00:07:57.720" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="is www.gnu.org/software," start="00:08:01.089" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and with what we know about the field," start="00:08:04.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="it is easy to create the button type for that." start="00:08:07.440" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It can look like this." start="00:08:09.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="And here are two possible buttons" start="00:08:11.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="linking to Emacs and Hyperbole." start="00:08:16.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So let's again evaluate the defil and use it." start="00:08:19.320" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Please note that not all GNU software" start="00:08:24.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="is under that URL," start="00:08:28.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="so this simple definition will not work" start="00:08:29.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to link to everything." start="00:08:31.000" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="To highlight the fact that the button action" start="00:08:32.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="does not have to be a link," start="00:08:37.280" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but can be any action," start="00:08:39.080" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="let's look at a math example." start="00:08:40.600" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Here is the button type that does some math" start="00:08:42.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="and writes the result in the message area." start="00:08:44.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Let's evaluate and use it." start="00:08:47.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="Before ending, I would like to mention" start="00:08:57.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the defal macro." start="00:08:59.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It is similar to the defil macro," start="00:09:00.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but simpler, since it uses a form" start="00:09:02.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="of the implicit button type with no delimiters." start="00:09:04.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="It is simply <TYPE LINK-EXPR>." start="00:09:07.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="So the implicit button type contains the link type" start="00:09:14.800" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="in clear text." start="00:09:17.920" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Our recent FSF software button" start="00:09:18.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="would be created like this." start="00:09:23.120" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="And it would be instantiated in text like this." start="00:09:24.855" video="mainVideo-buttons" id="subtitle"]]
+[[!template new="1" text="I have shown how you," start="00:09:29.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="with the help of the defil macro in Hyperbole," start="00:09:34.960" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="quickly can create implicit buttons." start="00:09:37.840" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="With those buttons, you can link" start="00:09:40.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to your personal information" start="00:09:41.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="in the form it may have." start="00:09:43.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="By the nature of the implicit buttons," start="00:09:44.160" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="those can be used from any file in Emacs." start="00:09:47.200" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="The button types can be" start="00:09:49.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="created to be used long term," start="00:09:52.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="but even short term use within the session is possible," start="00:09:54.640" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="since the creation is simple and quick." start="00:09:57.680" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Inspired by this, I hope you will find ways" start="00:09:59.880" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="to create implicit buttons" start="00:10:03.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="that will support you getting to your information." start="00:10:04.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="For the simplest cases," start="00:10:07.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="the field and the file macros might be enough." start="00:10:09.240" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="For more complicated cases," start="00:10:11.400" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="using a tailor-made function can be an option." start="00:10:13.360" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="If you know Elisp, use the defib macro" start="00:10:15.760" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="which gives you full control over the button type." start="00:10:19.480" video="mainVideo-buttons" id="subtitle"]]
+[[!template text="Thank you." start="00:10:22.240" video="mainVideo-buttons" id="subtitle"]]
+
+
Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20buttons%3A%20Linking%20personal%20info%20with%20Hyperbole%20implicit%20buttons)
diff --git a/2022/info/buttons-before.md b/2022/info/buttons-before.md
index 10e09116..bab5a76f 100644
--- a/2022/info/buttons-before.md
+++ b/2022/info/buttons-before.md
@@ -10,9 +10,31 @@ The following image shows where the talk is in the schedule for Sat 2022-12-03.
Format: 11-min talk followed by live Q&A (<https://emacsconf.org/current/buttons/room>)
Etherpad: <https://pad.emacsconf.org/2022-buttons>
Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
-Status: Talk captioned
+Status: Q&A starting (not yet open for joining)
<div>Times in different timezones:</div><div class="times" start="2022-12-03T18:40:00Z" end="2022-12-03T18:55:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~1:40 PM - 1:55 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~12:40 PM - 12:55 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~11:40 AM - 11:55 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~10:40 AM - 10:55 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~6:40 PM - 6:55 PM UTC <br />Saturday, Dec 3 2022, ~7:40 PM - 7:55 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~8:40 PM - 8:55 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~12:10 AM - 12:25 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~2:40 AM - 2:55 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~3:40 AM - 3:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div>
+[[!template id="vid" vidid="buttons-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt" default />"""
+size="15M" duration="10:32" other_resources="""[Download --main.webm (15MB)](https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.webm)
+[Download --main.vtt](https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt)
+[Download --main--chapters.vtt](https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main--chapters.vtt)
+[View transcript](https://emacsconf.org/2022/talks/buttons#buttons-mainVideo-transcript)
+[View on Toobnix](https://toobnix.org/w/uLx9KkUP8SbH2KZfynEtLR)
+"""]]
+[[!template id="chapters" vidid="buttons-mainVideo" data="""
+00:00:00.000 Introduction
+01:01.760 Implicit buttons
+01:29.920 Filenames
+02:37.080 Other built-in implicit buttons
+03:10.120 Creating new implicit button types with defib, defil, and defal
+04:13.400 Personal data
+04:44.480 Defining an implicit button with defil
+07:10.720 Types of link expressions
+07:54.520 Another button example
+08:32.200 Action buttons
+08:57.160 The defal macro
+09:29.760 Conclusion
+
+"""]]
# Description