summaryrefslogtreecommitdiffstats
path: root/2025
diff options
context:
space:
mode:
Diffstat (limited to '2025')
-rw-r--r--2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt41
-rw-r--r--2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt888
-rw-r--r--2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt1069
-rw-r--r--2025/info/calc-after.md307
-rw-r--r--2025/info/calc-before.md17
-rw-r--r--2025/info/llm-after.md366
-rw-r--r--2025/info/llm-before.md6
-rw-r--r--2025/schedule-details.md4
8 files changed, 2692 insertions, 6 deletions
diff --git a/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt b/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt
new file mode 100644
index 00000000..f3af8a6f
--- /dev/null
+++ b/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt
@@ -0,0 +1,41 @@
+WEBVTT
+
+
+00:00:03.620 --> 00:02:36.639
+Introduction
+
+00:02:36.640 --> 00:04:54.279
+What is Calc?
+
+00:04:54.280 --> 00:06:37.398
+calc-algebraic-entry
+
+00:06:37.399 --> 00:08:07.759
+calc-roll-down
+
+00:08:07.760 --> 00:08:58.179
+Advanced functions
+
+00:08:58.180 --> 00:09:54.719
+Solving equations with calc-solve-for
+
+00:09:54.720 --> 00:12:00.079
+Systems of equations
+
+00:12:00.080 --> 00:12:39.959
+calc-find-root
+
+00:12:39.960 --> 00:14:17.539
+Derivatives and integrals
+
+00:14:17.540 --> 00:18:12.159
+Programmable functions
+
+00:18:12.160 --> 00:20:08.799
+Plotting
+
+00:20:08.800 --> 00:22:38.599
+Wish list
+
+00:22:38.600 --> 00:23:35.920
+Wrapping up
diff --git a/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt b/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt
new file mode 100644
index 00000000..f0bf2d2a
--- /dev/null
+++ b/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt
@@ -0,0 +1,888 @@
+WEBVTT captioned by sachac
+
+NOTE Introduction
+
+00:00:03.620 --> 00:00:08.799
+Hello, my name is Christopher Howard and welcome to my talk.
+
+00:00:08.800 --> 00:00:11.319
+This is basically an introduction
+
+00:00:11.320 --> 00:00:15.119
+to the built-in Emacs calculator,
+
+00:00:15.120 --> 00:00:18.319
+properly known as Emacs Calc,
+
+00:00:18.320 --> 00:00:21.439
+particularly from the perspective of someone
+
+00:00:21.440 --> 00:00:27.559
+with a technical background such as engineering or electronics.
+
+00:00:27.560 --> 00:00:32.879
+I will say, though, my personal interest is not really
+
+00:00:32.880 --> 00:00:37.839
+in digital computing or digital calculators,
+
+00:00:37.840 --> 00:00:42.519
+but lately has been focused more on analog computing.
+
+00:00:42.520 --> 00:00:46.799
+I have, for example, been working to master
+
+00:00:46.800 --> 00:00:50.839
+the venerable slide rule, a mechanical computer
+
+00:00:50.840 --> 00:00:57.319
+that calculates multiplication powers and logarithms.
+
+00:00:57.320 --> 00:01:02.199
+Here's a picture of one.
+
+00:01:02.200 --> 00:01:06.799
+It's a physical tool that was used for hundreds of years
+
+00:01:06.800 --> 00:01:08.999
+for this sort of thing
+
+00:01:09.000 --> 00:01:16.679
+before the handheld calculator was made popular.
+
+00:01:16.680 --> 00:01:18.639
+And I also had a project that I did
+
+00:01:18.640 --> 00:01:21.119
+for a while to several months
+
+00:01:21.120 --> 00:01:33.119
+to build an electronic analog computer.
+
+00:01:33.120 --> 00:01:38.679
+A rudimentary attempt of mine, but it's functional,
+
+00:01:38.680 --> 00:01:43.399
+and it's basically a 1960s or 1970s style
+
+00:01:43.400 --> 00:01:48.839
+electronic analog computer built very much on a budget,
+
+00:01:48.840 --> 00:01:52.559
+but the box in the middle is the computer proper
+
+00:01:52.560 --> 00:01:55.719
+which has most of the components inside of it
+
+00:01:55.720 --> 00:02:00.199
+as well as the potentiometers for setting values,
+
+00:02:00.200 --> 00:02:02.039
+and an operation switch.
+
+00:02:02.040 --> 00:02:04.399
+There's a patch panel on the left
+
+00:02:04.400 --> 00:02:07.119
+for connecting the different integrators,
+
+00:02:07.120 --> 00:02:11.319
+amplifiers, multipliers, and so forth together.
+
+00:02:11.320 --> 00:02:16.919
+Then the output of the simulation is displayed
+
+00:02:16.920 --> 00:02:19.799
+on the oscilloscope on the right side,
+
+00:02:19.800 --> 00:02:25.479
+which is a digital oscilloscope.
+
+00:02:25.480 --> 00:02:28.439
+To be honest, I think that a talk about analog computing
+
+00:02:28.440 --> 00:02:30.199
+would be much more interesting
+
+00:02:30.200 --> 00:02:32.039
+than the talk that I'm about to give,
+
+00:02:32.040 --> 00:02:36.639
+but unfortunately that would be out of scope for EmacsConf.
+
+NOTE What is Calc?
+
+00:02:36.640 --> 00:02:39.919
+So instead I will talk about Emacs Calc,
+
+00:02:39.920 --> 00:02:43.359
+the digital calculator built into Emacs.
+
+00:02:43.360 --> 00:02:47.519
+Emacs Calc, while not being a replacement for software
+
+00:02:47.520 --> 00:02:51.479
+like GNU Octave, does have advanced calculator functionality
+
+00:02:51.480 --> 00:02:55.039
+that can be useful in engineering, electronics,
+
+00:02:55.040 --> 00:03:00.759
+or other technical applications. So I don't want to oversell it,
+
+00:03:00.760 --> 00:03:06.479
+but I think functionality-wise, Calc is somewhere in between
+
+00:03:06.480 --> 00:03:12.239
+what you'd expect of a decent scientific calculator
+
+00:03:12.240 --> 00:03:23.939
+and an advanced graphics calculator.
+
+00:03:23.940 --> 00:03:28.839
+So this talk I'll mention is not intended to be a tutorial
+
+00:03:28.840 --> 00:03:33.839
+but only a brief introduction to Calc.
+
+00:03:33.840 --> 00:03:37.439
+Please refer to the built-in Calc info manual
+
+00:03:37.440 --> 00:03:46.739
+for detailed instructions on how to complete operations.
+
+00:03:46.740 --> 00:04:01.479
+Turn off my volume here.
+
+00:04:01.480 --> 00:04:05.719
+The documentation for Emacs Calc is built-in,
+
+00:04:05.720 --> 00:04:10.439
+although on some distributions you may have to install
+
+00:04:10.440 --> 00:04:24.479
+the Emacs documentation separately for licensing reasons.
+
+00:04:24.480 --> 00:04:28.599
+Calc presents itself as a stack-based calculator
+
+00:04:28.600 --> 00:04:31.599
+where entries are dropped onto a stack
+
+00:04:31.600 --> 00:04:36.739
+and then an operation is performed on the stack entries.
+
+00:04:36.740 --> 00:04:42.899
+For example, I can drop 1.23 onto the stack,
+
+00:04:42.900 --> 00:04:54.279
+and then 8.56, and then multiply them together.
+
+NOTE calc-algebraic-entry
+
+00:04:54.280 --> 00:05:01.559
+It may present itself as a stack-based calculator,
+
+00:05:01.560 --> 00:05:05.399
+but indeed, Calc is also capable of accepting input
+
+00:05:05.400 --> 00:05:07.739
+in the more well-known algebraic format
+
+00:05:07.740 --> 00:05:10.759
+by using the calc-algebraic-entry command,
+
+00:05:10.760 --> 00:05:14.999
+which by default is bound to the apostrophe (') key.
+
+00:05:15.000 --> 00:05:19.759
+So you type the apostrophe key, enter the algebraic input,
+
+00:05:19.760 --> 00:05:22.759
+including parentheses as needed.
+
+00:05:22.760 --> 00:05:28.199
+For example, here's a calculation of the resonance frequency
+
+00:05:28.200 --> 00:05:35.039
+of a coil which has an inductance of 250 microhenries
+
+00:05:35.040 --> 00:05:41.059
+and 160 picofarads, taken from one of my electronics handbooks.
+
+00:05:41.060 --> 00:05:50.019
+The formula for that is 1 over 2 pi
+
+00:05:50.020 --> 00:05:57.439
+and then the square root of our inductance
+
+00:05:57.440 --> 00:06:06.279
+which is in this case 250 microfarads - excuse me, microhenries
+
+00:06:06.280 --> 00:06:19.399
+and then the capacitance is 160 picofarads.
+
+00:06:19.400 --> 00:06:24.399
+Small typo here.
+
+00:06:24.400 --> 00:06:26.639
+Now I need to evaluate that one more time,
+
+00:06:26.640 --> 00:06:30.919
+because pi is a symbol.
+
+00:06:30.920 --> 00:06:37.398
+I get about 800 kHz resonant frequency.
+
+NOTE calc-roll-down
+
+00:06:37.399 --> 00:06:41.679
+The command calc-roll-down,
+
+00:06:41.680 --> 00:06:44.199
+which by default is bound to the TAB key,
+
+00:06:44.200 --> 00:06:47.919
+will swap the top two stack entries,
+
+00:06:47.920 --> 00:06:51.559
+which is sometimes useful if you need to manipulate something
+
+00:06:51.560 --> 00:06:56.999
+that's further down the stack.
+
+00:06:57.000 --> 00:07:02.039
+So I can swap this around and say multiply by two
+
+00:07:02.040 --> 00:07:05.479
+and then put it back where it was.
+
+00:07:05.480 --> 00:07:14.039
+This command is also capable of rolling the entire stack.
+
+00:07:14.040 --> 00:07:18.899
+Say I want to shift them all around.
+
+00:07:18.900 --> 00:07:21.399
+This can be done by passing extra arguments
+
+00:07:21.400 --> 00:07:23.559
+to the calc-roll-down function.
+
+00:07:23.560 --> 00:07:28.279
+That's a little bit inconvenient to do manually,
+
+00:07:28.280 --> 00:07:40.079
+so in my init file, I defined here a key definition
+
+00:07:40.080 --> 00:07:45.759
+that passes in those arguments correctly.
+
+00:07:45.760 --> 00:07:49.179
+I attached this to shift-tab,
+
+00:07:49.180 --> 00:07:52.319
+so this way, I can roll the entire stack.
+
+00:07:52.320 --> 00:07:56.159
+Then I could change one entry here
+
+00:07:56.160 --> 00:08:03.459
+and then put it back where it was.
+
+00:08:03.460 --> 00:08:07.759
+So Calc does algebraic input.
+
+NOTE Advanced functions
+
+00:08:07.760 --> 00:08:10.159
+It also does advanced functions
+
+00:08:10.160 --> 00:08:15.599
+that you would expect any handheld scientific calculator,
+
+00:08:15.600 --> 00:08:19.159
+including trigonometric functions.
+
+00:08:19.160 --> 00:08:25.319
+For example, we can get the sine of a number.
+
+00:08:25.320 --> 00:08:30.719
+Now I'll mention here that Calc has multiple modes.
+
+00:08:30.720 --> 00:08:32.319
+Right now it's in degree mode.
+
+00:08:32.320 --> 00:08:38.159
+You can switch over to radian mode if you want.
+
+00:08:38.160 --> 00:08:42.799
+I'm going to put it back in degrees.
+
+00:08:42.800 --> 00:08:49.799
+Drop 12 degrees on the stack, and then get the sine of that.
+
+00:08:49.800 --> 00:08:58.179
+And then with the inverse sine function, I can put it back.
+
+NOTE Solving equations with calc-solve-for
+
+00:08:58.180 --> 00:09:07.519
+Calc also has the nifty ability to solve equations for you
+
+00:09:07.520 --> 00:09:13.919
+so long as the equation is not too complicated.
+
+00:09:13.920 --> 00:09:19.959
+This is using the calc-solve-for function.
+
+00:09:19.960 --> 00:09:31.699
+For example, we could enter in an equation algebraically,
+
+00:09:31.700 --> 00:09:36.679
+then run calc-solve-for, and we just have to tell it
+
+00:09:36.680 --> 00:09:40.999
+what variable we want to solve for. And there we go.
+
+00:09:41.000 --> 00:09:43.199
+We can do this manually as well
+
+00:09:43.200 --> 00:09:54.719
+just so you can see that we get the same result.
+
+NOTE Systems of equations
+
+00:09:54.720 --> 00:09:57.959
+Calc is also able to solve systems of equations.
+
+00:09:57.960 --> 00:10:03.439
+We can put more than one equation on the stack,
+
+00:10:03.440 --> 00:10:08.959
+and then solve for several variables.
+
+00:10:08.960 --> 00:10:13.319
+To give a technical example for this,
+
+00:10:13.320 --> 00:10:30.659
+I'll show you a resistor network scribble that I did recently.
+
+00:10:30.660 --> 00:10:32.819
+Hopefully you can see that. Basically,
+
+00:10:32.820 --> 00:10:38.719
+it's fairly simple, a pretty simple resistor network
+
+00:10:38.720 --> 00:10:42.159
+with 1 kilo ohm and 10 kilo ohm resistors,
+
+00:10:42.160 --> 00:10:48.959
+and using the loop methods, we are calculating the currents,
+
+00:10:48.960 --> 00:10:52.759
+the current in each loop, and then that current can be used
+
+00:10:52.760 --> 00:10:58.839
+to solve for the voltage of each individual resistor
+
+00:10:58.840 --> 00:11:06.199
+if we want to. So at the bottom there we have the equations
+
+00:11:06.200 --> 00:11:11.519
+that we come up with as we work through each loop.
+
+00:11:11.520 --> 00:11:19.579
+And I'm going to paste that into Calc.
+
+00:11:19.580 --> 00:11:22.719
+To save some time, I'm going to copy and paste that
+
+00:11:22.720 --> 00:11:34.259
+from my notes instead of typing it out.
+
+00:11:34.260 --> 00:11:38.259
+So we have two equations there on the stack
+
+00:11:38.260 --> 00:11:44.719
+in one stack entry. We run that calc-solve-for function again,
+
+00:11:44.720 --> 00:11:49.899
+and we tell it which variables we want to solve for.
+
+00:11:49.900 --> 00:11:51.959
+And voila! Those are our currents,
+
+00:11:51.960 --> 00:11:55.719
+which we can then use to get the voltages
+
+00:11:55.720 --> 00:12:00.079
+for the individual resistors.
+
+NOTE calc-find-root
+
+00:12:00.080 --> 00:12:01.999
+I'll just briefly mention
+
+00:12:02.000 --> 00:12:05.839
+that if Calc is not able to solve an equation
+
+00:12:05.840 --> 00:12:07.779
+with calc-solve-for,
+
+00:12:07.780 --> 00:12:10.279
+then you might be helped by another calc function
+
+00:12:10.280 --> 00:12:11.559
+called calc-find-root.
+
+00:12:11.560 --> 00:12:14.439
+This function basically does a manual search
+
+00:12:14.440 --> 00:12:30.199
+for a numerical solution to the equation.
+
+00:12:30.200 --> 00:12:39.959
+And there's the documentation page on that.
+
+NOTE Derivatives and integrals
+
+00:12:39.960 --> 00:12:44.039
+Calc can also solve or find derivatives of functions,
+
+00:12:44.040 --> 00:12:47.579
+at least the more straightforward functions.
+
+00:12:47.580 --> 00:12:49.839
+For a simple example,
+
+00:12:49.840 --> 00:13:00.559
+we can get the derivative of that
+
+00:13:00.560 --> 00:13:11.979
+with the derivative function.
+
+00:13:11.980 --> 00:13:17.159
+On the other hand, Calc is also capable of figuring out
+
+00:13:17.160 --> 00:13:22.099
+indefinite integrals.
+
+00:13:22.100 --> 00:13:26.859
+Say we put that function back on the stack,
+
+00:13:26.860 --> 00:13:32.559
+and this time, we call the integral function.
+
+00:13:32.560 --> 00:13:35.079
+There you go. Of course, you have to add
+
+00:13:35.080 --> 00:13:39.819
+your own constant of integration.
+
+00:13:39.820 --> 00:13:43.399
+For integrals that Calc cannot figure out symbolically,
+
+00:13:43.400 --> 00:13:46.079
+a numerical integration method is available
+
+00:13:46.080 --> 00:13:59.998
+through the calc-num-integral command, which is documented...
+
+00:13:59.999 --> 00:14:17.539
+The function documentation is available here, more or less.
+
+NOTE Programmable functions
+
+00:14:17.540 --> 00:14:20.399
+I definitely need to mention
+
+00:14:20.400 --> 00:14:24.759
+that Calc is capable of doing programmable functions.
+
+00:14:24.760 --> 00:14:29.619
+That is to say, you can program your own functions into Calc.
+
+00:14:29.620 --> 00:14:32.239
+There are three separate ways to do this.
+
+00:14:32.240 --> 00:14:36.279
+One is through a macro method
+
+00:14:36.280 --> 00:14:41.539
+similar to Emacs's usual keyboard macros.
+
+00:14:41.540 --> 00:14:46.519
+The second method is to transform an algebraic function
+
+00:14:46.520 --> 00:14:50.859
+into a stored function definition.
+
+00:14:50.860 --> 00:14:54.059
+And the third is to use Elisp directly.
+
+00:14:54.060 --> 00:14:56.599
+Personally, I find that the second method
+
+00:14:56.600 --> 00:15:01.799
+is the most practical, the most convenient and practical
+
+00:15:01.800 --> 00:15:08.059
+in my opinion. So I'll give a quick example of that.
+
+00:15:08.060 --> 00:15:14.159
+So I could... Let's say I wanted to have a function
+
+00:15:14.160 --> 00:15:20.699
+for calculating capacitive reactance.
+
+00:15:20.700 --> 00:15:28.899
+I'll define that in algebraic mode first.
+
+00:15:28.900 --> 00:15:33.639
+The function for that is 1 over 2 pi
+
+00:15:33.640 --> 00:15:41.599
+the frequency and the capacitance.
+
+00:15:41.600 --> 00:15:44.959
+Drop that on the stack. You see, it does automatically
+
+00:15:44.960 --> 00:15:52.079
+get simplified a little bit, but it's the same function.
+
+00:15:52.080 --> 00:15:58.839
+And then I press letters Z and F. Do that again.
+
+00:15:58.840 --> 00:16:06.239
+Z and F to start transforming that into a stored function.
+
+00:16:06.240 --> 00:16:11.039
+It asks me to select a user key, a single key press.
+
+00:16:11.040 --> 00:16:15.479
+I'll use the letter c.
+
+00:16:15.480 --> 00:16:19.079
+Then it's going to ask for a longer command name.
+
+00:16:19.080 --> 00:16:24.639
+I've actually defined this once before, so it prefilled in
+
+00:16:24.640 --> 00:16:38.339
+that command name.
+
+00:16:38.340 --> 00:16:42.999
+Then I need to enter which variables in the formula
+
+00:16:43.000 --> 00:16:46.559
+are actual arguments, rather than just symbols
+
+00:16:46.560 --> 00:16:52.559
+to be evaluated later. I prefer to put this in with frequency
+
+00:16:52.560 --> 00:16:54.279
+and the capacitance after that,
+
+00:16:54.280 --> 00:16:57.799
+but actually in this particular case,
+
+00:16:57.800 --> 00:17:07.339
+it doesn't matter at all to the mathematics.
+
+00:17:07.340 --> 00:17:11.399
+So, now all I have to do, that this is defined,
+
+00:17:11.400 --> 00:17:15.199
+is I can drop the frequency on the stack,
+
+00:17:15.200 --> 00:17:24.399
+which we'll say, for this example, will be 4.5 MHz,
+
+00:17:24.400 --> 00:17:32.279
+and then drop on the capacitance, which in this example
+
+00:17:32.280 --> 00:17:40.319
+will be 22 pF.
+
+00:17:40.320 --> 00:17:42.439
+Then I'll call the function that I just defined.
+
+00:17:42.440 --> 00:17:45.239
+I don't really like having to try to remember
+
+00:17:45.240 --> 00:17:48.679
+the short letters that I've come up with,
+
+00:17:48.680 --> 00:17:57.839
+so I'll just use the longer name.
+
+00:17:57.840 --> 00:17:59.799
+I need to evaluate one more time
+
+00:17:59.800 --> 00:18:05.619
+because the symbol pi is in there and not yet evaluated.
+
+00:18:05.620 --> 00:18:07.539
+And so if I've done that right,
+
+00:18:07.540 --> 00:18:12.159
+we have a capacitive reactance of about 1600 ohms.
+
+NOTE Plotting
+
+00:18:12.160 --> 00:18:16.839
+As the last feature that I'll mention here,
+
+00:18:16.840 --> 00:18:24.059
+Emacs Calc does have an interface with gnuplot,
+
+00:18:24.060 --> 00:18:30.799
+if you want to have Calc work as your graphing calculator.
+
+00:18:30.800 --> 00:18:33.159
+I do need to be honest and mention
+
+00:18:33.160 --> 00:18:35.579
+that I don't generally use it myself
+
+00:18:35.580 --> 00:18:39.719
+because there's another program in GNOME
+
+00:18:39.720 --> 00:18:43.499
+that I've found to be generally more convenient
+
+00:18:43.500 --> 00:18:47.399
+for the things that I want to graph quickly.
+
+00:18:47.400 --> 00:18:53.399
+But I think I can give you a simple example.
+
+00:18:53.400 --> 00:19:00.339
+So first, we need to drop a range on the stack.
+
+00:19:00.340 --> 00:19:06.619
+Let's say 0 to 10.
+
+00:19:06.620 --> 00:19:11.639
+And then we need to drop the function on the stack.
+
+00:19:11.640 --> 00:19:17.839
+And then I believe it's the letters g and f that graph this.
+
+00:19:17.840 --> 00:19:22.319
+Let's see. Yep, there we go.
+
+00:19:22.320 --> 00:19:25.059
+So there's our function and it looks nice.
+
+00:19:25.060 --> 00:19:26.659
+That was pretty easy.
+
+00:19:26.660 --> 00:19:29.019
+That's the fast way to do it.
+
+00:19:29.020 --> 00:19:32.839
+I will, as a disclaimer, mention that
+
+00:19:32.840 --> 00:19:34.159
+using this quick approach,
+
+00:19:34.160 --> 00:19:38.759
+that sometimes more complicated graphs
+
+00:19:38.760 --> 00:19:39.999
+will not turn out nicely,
+
+00:19:40.000 --> 00:19:44.339
+because by default, the resolution will be pretty low.
+
+00:19:44.340 --> 00:19:48.119
+That is to say it's... gnuplot is going to be
+
+00:19:48.120 --> 00:19:49.899
+skipping a lot of points
+
+00:19:49.900 --> 00:19:52.039
+and so you'll have to learn a bit more
+
+00:19:52.040 --> 00:19:55.319
+about how to use the interface,
+
+00:19:55.320 --> 00:19:59.519
+what parameters to pass if you want all your graphs
+
+00:19:59.520 --> 00:20:03.699
+to come out looking nice.
+
+00:20:03.700 --> 00:20:08.799
+So that covers all the features that I wanted to cover.
+
+NOTE Wish list
+
+00:20:08.800 --> 00:20:13.279
+I wanted to briefly mention a wish list of items
+
+00:20:13.280 --> 00:20:16.679
+that I'd like to see in Calc.
+
+00:20:16.680 --> 00:20:23.639
+One of them would be improper integrals.
+
+00:20:23.640 --> 00:20:25.159
+So that's like our definite integrals
+
+00:20:25.160 --> 00:20:32.859
+except for where a limit of integration is infinity.
+
+00:20:32.860 --> 00:20:38.559
+That's something that can be useful in a few applications.
+
+00:20:38.560 --> 00:20:41.079
+Something else that would be neat to have would be
+
+00:20:41.080 --> 00:20:45.679
+annotations for row entries. So for example
+
+00:20:45.680 --> 00:20:48.819
+if I was putting together a sum of numbers
+
+00:20:48.820 --> 00:20:53.279
+for, say, my monthly budget,
+
+00:20:53.280 --> 00:20:57.479
+let's say I was paying $2,000 for my rent
+
+00:20:57.480 --> 00:21:03.831
+and let's say $800 a month for my groceries,
+
+00:21:03.832 --> 00:21:07.931
+(a lot of kids to feed there)
+
+00:21:07.932 --> 00:21:14.565
+and then say another $60 for dining out, and so on,
+
+00:21:14.566 --> 00:21:18.259
+it would be nice if there was some way
+
+00:21:18.260 --> 00:21:21.319
+to put a little annotation next to each number
+
+00:21:21.320 --> 00:21:23.399
+so that you could remember
+
+00:21:23.400 --> 00:21:27.039
+what the meaning of that number was more easily.
+
+00:21:27.040 --> 00:21:31.199
+I actually looked into programming this into Calc myself,
+
+00:21:31.200 --> 00:21:35.919
+but discovered that it would require reprogramming
+
+00:21:35.920 --> 00:21:41.839
+quite a bit of Calc to make that work well
+
+00:21:41.840 --> 00:21:43.479
+across all calc functionality,
+
+00:21:43.480 --> 00:21:46.939
+and so, eventually, I gave up.
+
+00:21:46.940 --> 00:21:51.139
+But I'd still really like to have that feature.
+
+00:21:51.140 --> 00:21:52.039
+The final thing, though
+
+00:21:52.040 --> 00:21:54.579
+I think this would not necessarily belong in Calc,
+
+00:21:54.580 --> 00:21:57.919
+I think it would be cool if Emacs had some way
+
+00:21:57.920 --> 00:22:00.599
+to run numerical solutions
+
+00:22:00.600 --> 00:22:02.599
+for systems of differential equations,
+
+00:22:02.600 --> 00:22:06.019
+also known as a differential analyzer.
+
+00:22:06.020 --> 00:22:09.279
+So this would allow you to be able to set up simulation models
+
+00:22:09.280 --> 00:22:11.679
+involving systems of differential equations,
+
+00:22:11.680 --> 00:22:14.879
+for example, a spring mass system, or pressure temperature,
+
+00:22:14.880 --> 00:22:18.039
+or what have you, and then run the simulation
+
+00:22:18.040 --> 00:22:22.119
+using numerical approximation.
+
+00:22:22.120 --> 00:22:24.079
+Maybe it would be silly
+
+00:22:24.080 --> 00:22:25.999
+to actually put that in Calc itself,
+
+00:22:26.000 --> 00:22:30.339
+but a nice interface maybe to some other software,
+
+00:22:30.340 --> 00:22:33.299
+simple software that did that,
+
+00:22:33.300 --> 00:22:35.779
+an easy to use interface for that
+
+00:22:35.780 --> 00:22:38.599
+would be really great.
+
+NOTE Wrapping up
+
+00:22:38.600 --> 00:22:41.800
+So that's my entire talk.
+
+00:22:41.801 --> 00:22:44.534
+I'll just mention some information.
+
+00:22:44.535 --> 00:22:48.365
+If you want to learn more about me
+
+00:22:48.366 --> 00:22:50.119
+or things that I'm interested in,
+
+00:22:50.120 --> 00:22:57.779
+I do not any longer have a web presence.
+
+00:22:57.780 --> 00:22:59.659
+I don't have a website anymore,
+
+00:22:59.660 --> 00:23:03.359
+but I do have a Gemini capsule
+
+00:23:03.360 --> 00:23:07.139
+that I post to all the time.
+
+00:23:07.140 --> 00:23:13.879
+And if you can install, if you're willing to install the...
+
+00:23:13.880 --> 00:23:19.079
+Gemini browser known as Elpher
+
+00:23:19.080 --> 00:23:23.698
+into Emacs, which is available from ELPA,
+
+00:23:23.699 --> 00:23:27.359
+then you can browse directly to it
+
+00:23:27.360 --> 00:23:31.439
+and look around my Gemini capsule.
+
+00:23:31.440 --> 00:23:35.920
+Thank you very much.
diff --git a/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt
new file mode 100644
index 00000000..ea969e1e
--- /dev/null
+++ b/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt
@@ -0,0 +1,1069 @@
+WEBVTT captioned by amitav
+
+NOTE Introduction
+
+00:00:01.040 --> 00:00:03.079
+Hi, I'm Andrew Hyatt.
+
+00:00:03.080 --> 00:00:09.399
+I'm going to talk to you today about Emacs and AI,
+
+00:00:09.400 --> 00:00:10.879
+and where things are right now
+
+00:00:10.880 --> 00:00:12.119
+in the world of Emacs and AI,
+
+00:00:12.120 --> 00:00:14.159
+via large language models,
+
+00:00:14.160 --> 00:00:16.999
+and where things might be going,
+
+00:00:17.000 --> 00:00:22.699
+and what it means for the future of Emacs.
+
+00:00:22.700 --> 00:00:27.279
+I think what we're seeing with Emacs is interesting.
+
+00:00:27.280 --> 00:00:29.399
+We've seen a lot of different things
+
+00:00:29.400 --> 00:00:31.559
+come around in the past year,
+
+00:00:31.560 --> 00:00:33.119
+in the past several years.
+
+00:00:33.120 --> 00:00:35.079
+There's lots of different solutions.
+
+00:00:35.080 --> 00:00:36.759
+But in the past year, things have been very interesting.
+
+00:00:36.760 --> 00:00:39.679
+I think there's new and interesting questions
+
+00:00:39.680 --> 00:00:43.279
+about what does it mean to use Emacs?
+
+00:00:43.280 --> 00:00:45.479
+What does it mean to use any editor?
+
+00:00:45.480 --> 00:00:47.279
+I'm going to be talking about Emacs,
+
+00:00:47.280 --> 00:00:50.359
+and I'm going to show you various Emacs packages
+
+00:00:50.360 --> 00:00:53.079
+as demonstrations of these ideas.
+
+00:00:53.080 --> 00:00:59.839
+But there's the general question of
+
+00:00:59.840 --> 00:01:03.719
+what does it mean to use any editor, not just Emacs?
+
+00:01:03.720 --> 00:01:06.239
+What does it mean to do work?
+
+00:01:06.240 --> 00:01:10.719
+And I think the industry in general is facing these challenges
+
+00:01:10.720 --> 00:01:13.279
+of we don't really know where things are going to end up,
+
+00:01:13.280 --> 00:01:16.919
+but we do know the direction they're going.
+
+00:01:16.920 --> 00:01:20.039
+Emacs is a reflection of that.
+
+00:01:20.040 --> 00:01:23.239
+I think the answer for Emacs might be
+
+00:01:23.240 --> 00:01:25.719
+a little bit different than everything else,
+
+00:01:25.720 --> 00:01:28.599
+but I do want to show you what's out there
+
+00:01:28.600 --> 00:01:33.319
+so we can explore what are the possibilities
+
+00:01:33.320 --> 00:01:41.119
+of Emacs, AI, and generally how we get things done.
+
+00:01:41.120 --> 00:01:44.719
+Thanks. Let's dive right into it.
+
+NOTE Copilot
+
+00:01:44.720 --> 00:01:48.079
+We're going to start by showing you
+
+00:01:48.080 --> 00:01:51.039
+some things that are pretty well integrated,
+
+00:01:51.040 --> 00:01:55.279
+that look a lot like what you see in Emacs
+
+00:01:55.280 --> 00:01:58.679
+and fit in with the kinds of editing
+
+00:01:58.680 --> 00:02:02.639
+that you normally do in Emacs.
+
+00:02:02.640 --> 00:02:06.579
+So this is just kind of like, it's well integrated.
+
+00:02:06.580 --> 00:02:08.779
+So we're going to talk about Copilot and Semext.
+
+00:02:08.780 --> 00:02:12.679
+Copilot is by Microsoft via GitHub,
+
+00:02:12.680 --> 00:02:14.759
+and Semext is just my personal demo,
+
+00:02:14.760 --> 00:02:18.039
+but they're both showing you, you know,
+
+00:02:18.040 --> 00:02:24.399
+this kind of thing. Let's start with Copilot.
+
+00:02:24.400 --> 00:02:31.919
+Let's try out Copilot on just a standard bit of Elisp.
+
+00:02:31.920 --> 00:02:38.439
+We're going to write a Fibonacci function.
+
+00:02:38.440 --> 00:02:43.079
+Let's try out Emacs on a standard bit of Elisp.
+
+00:02:43.080 --> 00:02:49.279
+We're going to write a Fibonacci function.
+
+00:02:49.280 --> 00:02:53.159
+And you can see like as soon as we even start typing it,
+
+00:02:53.160 --> 00:02:56.339
+we get everything as a completion.
+
+00:02:56.340 --> 00:02:59.879
+So you can just press Tab here,
+
+00:02:59.880 --> 00:03:02.159
+and you've just completed
+
+00:03:02.160 --> 00:03:06.799
+a significant bunch of Emacs Lisp code.
+
+00:03:06.800 --> 00:03:09.919
+It will do this no matter where you are.
+
+00:03:09.920 --> 00:03:14.799
+So, pretty useful. It will just keep suggesting things.
+
+00:03:14.800 --> 00:03:16.439
+Do you want to do this?
+
+00:03:16.440 --> 00:03:17.479
+I'm not sure.
+
+00:03:17.480 --> 00:03:22.839
+But it usually is offering pretty reasonable things.
+
+00:03:22.840 --> 00:03:29.299
+So you could do this with code,
+
+00:03:29.300 --> 00:03:32.119
+of course, any code.
+
+00:03:32.120 --> 00:03:33.919
+You don't really even have to have a mode for it, right?
+
+00:03:33.920 --> 00:03:36.679
+That's kind of the beauty of AI is that
+
+00:03:36.680 --> 00:03:38.519
+you don't need any Emacs functionality for this,
+
+00:03:38.520 --> 00:03:39.519
+except for Copilot.
+
+00:03:39.520 --> 00:03:41.679
+It doesn't need to know the structure of your code.
+
+00:03:41.680 --> 00:03:45.279
+It doesn't need anything except for the text itself
+
+00:03:45.280 --> 00:03:51.239
+and whatever AI integration that this is.
+
+00:03:51.240 --> 00:03:53.739
+We can look at, you can do the same thing with Org-mode.
+
+00:03:53.740 --> 00:03:57.999
+So we could say create, no,
+
+00:03:58.000 --> 00:04:02.919
+how about let's, let's do, you know, spring cleaning.
+
+00:04:02.920 --> 00:04:10.839
+It's actually the fall, but still we'll say spring cleaning.
+
+00:04:10.840 --> 00:04:12.767
+And it'll start suggesting things that, you know,
+
+00:04:12.768 --> 00:04:15.439
+maybe at first, it doesn't really know what to do to
+
+00:04:15.440 --> 00:04:16.433
+clean up all code.
+
+00:04:16.434 --> 00:04:18.400
+It thinks I need to clean up code, but no,
+
+00:04:18.401 --> 00:04:21.839
+this is going to be actual, you know,
+
+00:04:21.840 --> 00:04:31.567
+clean hood over range. Clean out pantry.
+
+00:04:31.568 --> 00:04:33.879
+These are all really reasonable suggestions.
+
+00:04:33.880 --> 00:04:38.319
+You just keep going here.
+
+NOTE Semext
+
+00:04:38.320 --> 00:04:40.559
+I'm going to demonstrate Semext,
+
+00:04:40.560 --> 00:04:43.879
+which is a package I have on GNU Elpa,
+
+00:04:43.880 --> 00:04:48.719
+that is designed to integrate AI in a very Emacs-like way.
+
+00:04:48.720 --> 00:04:50.999
+And so what you could do is you could do a
+
+00:04:51.000 --> 00:04:54.799
+semext-search-forward.
+
+00:04:54.800 --> 00:04:58.719
+The UI looks just like other Emacs commands,
+
+00:04:58.720 --> 00:05:02.379
+but you can search for anything.
+
+00:05:02.380 --> 00:05:06.279
+There's really no way to express what I'm about to,
+
+00:05:06.280 --> 00:05:08.679
+what I'm trying to demonstrate
+
+00:05:08.680 --> 00:05:12.359
+in Emacs's normal search commands.
+
+00:05:12.360 --> 00:05:15.399
+You could really ask for anything.
+
+00:05:15.400 --> 00:05:18.759
+And it takes a little while, which is not Emacs-like,
+
+00:05:18.760 --> 00:05:20.033
+but everything else is sort of like
+
+00:05:20.034 --> 00:05:21.719
+it's designed to be like Emacs,
+
+00:05:21.720 --> 00:05:23.519
+except way more powerful.
+
+00:05:23.520 --> 00:05:27.119
+You don't need any mode to be active for this.
+
+00:05:27.120 --> 00:05:32.039
+You just need the library
+
+00:05:32.040 --> 00:05:34.759
+and an AI provider of some sort, either locally
+
+00:05:34.760 --> 00:05:41.199
+or, you know, your favorite cloud provider.
+
+NOTE Integrated AI experiences: gptel, ellama, chatgpt-shell, etc.
+
+00:05:41.200 --> 00:05:43.679
+Now we're going to move on to a different way
+
+00:05:43.680 --> 00:05:46.399
+of interacting with AI and Emacs.
+
+00:05:46.400 --> 00:05:52.319
+This way is less like the normal editing experience.
+
+00:05:52.320 --> 00:05:56.999
+So you lose some familiarity. However, in exchange,
+
+00:05:57.000 --> 00:05:58.079
+it is a lot more powerful.
+
+00:05:58.080 --> 00:06:00.119
+And there's a whole suite of these tools.
+
+00:06:00.120 --> 00:06:02.479
+I'm going to demonstrate gptel,
+
+00:06:02.480 --> 00:06:05.779
+which is the most popular one.
+
+00:06:05.780 --> 00:06:06.399
+But there are many.
+
+00:06:06.400 --> 00:06:08.479
+And I think different people have
+
+00:06:08.480 --> 00:06:11.759
+their own preferences of what they like to use.
+
+00:06:11.760 --> 00:06:12.999
+We're going to try now something
+
+00:06:13.000 --> 00:06:15.079
+that is a step away from just editing.
+
+00:06:15.080 --> 00:06:19.839
+And we're going to, I'm actually using gptel.
+
+00:06:19.840 --> 00:06:22.799
+There are several packages that are going to be
+
+00:06:22.800 --> 00:06:25.959
+doing the same sort of thing as I'm going to show you.
+
+00:06:25.960 --> 00:06:29.999
+gptel has sort of become the most popular one.
+
+00:06:30.000 --> 00:06:32.199
+So that's why I'm showing that to you.
+
+00:06:32.200 --> 00:06:39.319
+But let's just highlight everything and say gptel rewrite.
+
+00:06:39.320 --> 00:06:42.399
+And gptel basically just has a few things.
+
+00:06:42.400 --> 00:06:45.119
+There's different ways of thinking about this.
+
+00:06:45.120 --> 00:06:49.999
+With just a few very configurable menus,
+
+00:06:50.000 --> 00:06:53.959
+you can do a large variety of things.
+
+00:06:53.960 --> 00:06:59.819
+So let's give rewrite instructions.
+
+00:06:59.820 --> 00:07:06.600
+"Turn this into an iterative program
+
+00:07:06.601 --> 00:07:12.199
+instead of a recursive program."
+
+00:07:12.200 --> 00:07:17.799
+In Elisp, you really should not be using recursion.
+
+00:07:17.800 --> 00:07:20.359
+So we could say "return to be ready".
+
+00:07:20.360 --> 00:07:21.119
+Do we accept it?
+
+00:07:21.120 --> 00:07:24.519
+Yes, we accept it. Or we could iterate and say, no, no,
+
+00:07:24.520 --> 00:07:26.799
+that's not what we meant. We meant something else.
+
+00:07:26.800 --> 00:07:29.159
+Or you did something a little something wrong.
+
+00:07:29.160 --> 00:07:29.879
+Please fix it.
+
+00:07:29.880 --> 00:07:31.879
+So this is all very powerful.
+
+00:07:31.880 --> 00:07:33.799
+Is this editing?
+
+00:07:33.800 --> 00:07:40.279
+Well, it's in the editor.
+
+00:07:40.280 --> 00:07:42.759
+You could do this while editing, while deleting,
+
+00:07:42.760 --> 00:07:44.959
+you could be doing some sort of traditional editing.
+
+00:07:44.960 --> 00:07:47.679
+And then this, which is editing
+
+00:07:47.680 --> 00:07:48.919
+in the sense that it's in your editor,
+
+00:07:48.920 --> 00:07:51.039
+you might have to highlight
+
+00:07:51.040 --> 00:07:52.799
+some parts of the file and do things,
+
+00:07:52.800 --> 00:07:54.719
+but generally you don't even need to,
+
+00:07:54.720 --> 00:07:59.879
+or you go to a spot and you say, put code at this spot.
+
+00:07:59.880 --> 00:08:01.959
+It's kind of like editing.
+
+00:08:01.960 --> 00:08:05.839
+I would say it's not exactly editing,
+
+00:08:05.840 --> 00:08:10.159
+but it's at least something that must happen in an editor
+
+00:08:10.160 --> 00:08:12.359
+and it's well integrated into Emacs.
+
+00:08:12.360 --> 00:08:14.759
+As you can tell, it used very sort of
+
+00:08:14.760 --> 00:08:18.239
+modern standard Emacs UI paradigms
+
+00:08:18.240 --> 00:08:20.759
+and it's all written in Elisp.
+
+00:08:20.760 --> 00:08:23.779
+Everything is happening in Elisp here.
+
+00:08:23.780 --> 00:08:25.959
+So this is just very much an Emacs experience.
+
+00:08:25.960 --> 00:08:27.679
+It's just not exactly editing
+
+00:08:27.680 --> 00:08:29.879
+because the thing doing the editing
+
+00:08:29.880 --> 00:08:32.519
+is the AI and not you.
+
+00:08:32.520 --> 00:08:36.039
+You're just kind of telling it what to do.
+
+NOTE Outside the editor
+
+00:08:36.040 --> 00:08:41.119
+Now we're going to go and look at a way of interaction
+
+00:08:41.120 --> 00:08:43.239
+that's even more powerful
+
+00:08:43.240 --> 00:08:46.279
+and even more disconnected from the normal editing experience.
+
+00:08:46.280 --> 00:08:47.919
+In fact, it's so disconnected
+
+00:08:47.920 --> 00:08:52.399
+that most people are using this without an editor.
+
+00:08:52.400 --> 00:08:57.879
+These are things like Claude Code
+
+00:08:57.880 --> 00:09:01.079
+or the sort of open source equivalent, Aider.
+
+00:09:01.080 --> 00:09:05.039
+There's a few other things that follow this pattern as well.
+
+00:09:05.040 --> 00:09:07.479
+But it's very interesting in the sense
+
+00:09:07.480 --> 00:09:09.839
+that while you can integrate these with the editors,
+
+00:09:09.840 --> 00:09:12.039
+and I'm going to show you an Emacs integration,
+
+00:09:12.040 --> 00:09:13.519
+you don't need to.
+
+00:09:13.520 --> 00:09:16.939
+And that's not the way most people are using them.
+
+00:09:16.940 --> 00:09:19.759
+And I find it very interesting that sort of
+
+00:09:19.760 --> 00:09:23.719
+we're going back kind of full circle where, you know,
+
+00:09:23.720 --> 00:09:31.959
+in the 1960s or 70s, we were using Ed from the terminal
+
+00:09:31.960 --> 00:09:35.639
+to edit files, but then we created editors,
+
+00:09:35.640 --> 00:09:37.959
+and that was a really good idea.
+
+00:09:37.960 --> 00:09:40.167
+It is a lot easier to edit files
+
+00:09:40.168 --> 00:09:42.499
+when you have an actual UI.
+
+00:09:42.500 --> 00:09:46.879
+But now it's 2025, and we're back in the terminal,
+
+00:09:46.880 --> 00:09:50.799
+and we're editing files through the terminal,
+
+00:09:50.800 --> 00:09:53.599
+and you know what, it's great,
+
+00:09:53.600 --> 00:09:56.899
+but I think it's even better with Emacs.
+
+00:09:56.900 --> 00:10:00.279
+On the other hand, it comes with some trade-offs,
+
+00:10:00.280 --> 00:10:04.733
+as you can see, as we will see.
+
+NOTE Outside Experiences: claude-code.el, aidermacs, eca
+
+00:10:04.734 --> 00:10:07.467
+Okay, we're going to look at
+
+00:10:07.468 --> 00:10:20.320
+[audio glitch] Claude Code IDE, aidermacs, ECA.
+
+00:10:20.321 --> 00:10:22.639
+Last time, I didn't show you all the variants.
+
+00:10:22.640 --> 00:10:26.839
+I do want to show you eca, which points to,
+
+00:10:26.840 --> 00:10:29.799
+it is a very similar tool in what it does,
+
+00:10:29.800 --> 00:10:32.739
+but does have a different
+
+00:10:32.740 --> 00:10:37.239
+and I think better type of Emacs integration.
+
+00:10:37.240 --> 00:10:42.599
+All right, we're going to demonstrate Claude Code IDE,
+
+00:10:42.600 --> 00:10:46.839
+which is one of three Claude Code packages.
+
+00:10:46.840 --> 00:10:47.719
+It's a bit confusing.
+
+00:10:47.720 --> 00:10:52.039
+One of them will be demoed by another presenter
+
+00:10:52.040 --> 00:10:54.639
+at the Emacs conference, so stay tuned for that.
+
+00:10:54.640 --> 00:10:56.439
+Here I'm just going to give you a little taste
+
+00:10:56.440 --> 00:10:58.759
+of what these packages look like.
+
+00:10:58.760 --> 00:11:03.339
+So if we say Claude Code IDE,
+
+00:11:03.340 --> 00:11:06.839
+it presents us with basically
+
+00:11:06.840 --> 00:11:09.039
+almost exactly what you would get
+
+00:11:09.040 --> 00:11:11.519
+when you're running this in the terminal.
+
+00:11:11.520 --> 00:11:13.933
+And essentially there's a terminal interface.
+
+00:11:13.934 --> 00:11:16.659
+You can see that there's a vterm.
+
+00:11:16.660 --> 00:11:20.699
+But here we're going to say, "In scratch.el"...
+
+00:11:20.700 --> 00:11:23.400
+let's say what we want to happen.
+
+00:11:23.401 --> 00:11:32.133
+[In scratch.el, there is a fibonacci function.
+
+00:11:32.134 --> 00:11:39.567
+Can you add all normal elisp headers
+
+00:11:39.568 --> 00:11:43.859
+and footers to this file?]
+
+00:11:43.860 --> 00:11:45.840
+So, we just say what's going to happen,
+
+00:11:45.841 --> 00:11:48.399
+and this is going to do things in the background.
+
+00:11:48.400 --> 00:11:50.979
+It's not going to do things through Emacs.
+
+00:11:50.980 --> 00:11:54.079
+That said, there is an integration with Emacs,
+
+00:11:54.080 --> 00:12:00.659
+so that it can do things like show you these nice ediffs.
+
+00:12:00.660 --> 00:12:03.199
+My screen is not really wide enough
+
+00:12:03.200 --> 00:12:04.699
+to show you a really great ediff here,
+
+00:12:04.700 --> 00:12:06.239
+but you can kind of see what it's doing,
+
+00:12:06.240 --> 00:12:09.079
+and you can see, yeah, that looks good,
+
+00:12:09.080 --> 00:12:14.120
+so you could say yes, yes, accept the changes,
+
+00:12:14.121 --> 00:12:25.299
+and if we... Just need to revert the buffer.
+
+00:12:25.300 --> 00:12:28.459
+We can quit the printout of this.
+
+00:12:28.460 --> 00:12:33.019
+We see that it just did everything I asked it to.
+
+00:12:33.020 --> 00:12:36.139
+Is everything exactly right?
+
+00:12:36.140 --> 00:12:39.159
+Probably not. It's reasonable for a start though.
+
+00:12:39.160 --> 00:12:40.959
+But you could ask it to do anything.
+
+00:12:40.960 --> 00:12:45.339
+You could say, write unit tests for this, and it will.
+
+00:12:45.340 --> 00:12:49.019
+You could say, write me a suite of functions
+
+00:12:49.020 --> 00:12:52.579
+like Fibonacci, and it'll probably do something reasonable.
+
+00:12:52.580 --> 00:12:54.900
+But you can see this is not editing.
+
+00:12:54.901 --> 00:12:58.659
+There's nothing editing-like about this.
+
+00:12:58.660 --> 00:13:07.159
+That said, there is something that is editing.
+
+00:13:07.160 --> 00:13:08.599
+You need to give it instructions.
+
+00:13:08.600 --> 00:13:10.959
+You need to tell it what to do.
+
+NOTE Org files
+
+00:13:10.960 --> 00:13:19.619
+And what you could do is... You could have a project.org,
+
+00:13:19.620 --> 00:13:23.899
+and what you could do is you could have functions.
+
+00:13:23.900 --> 00:13:26.659
+The way I've done things often is ....
+
+00:13:26.660 --> 00:13:28.439
+You could say something like,
+
+00:13:28.440 --> 00:13:36.199
+unit tests for Fibonacci. How do you spell Fibonacci?
+
+00:13:36.200 --> 00:13:40.479
+I don't remember. But then you could say that this is,
+
+00:13:40.480 --> 00:13:47.159
+you could clock it, basically. org-clock.
+
+00:13:47.160 --> 00:13:48.879
+What I've done is...
+
+00:13:48.880 --> 00:13:50.399
+You could add custom commands to Claude Code,
+
+00:13:50.400 --> 00:13:53.119
+and you could just say, look, here's my Org file,
+
+00:13:53.120 --> 00:13:57.879
+read it and do the thing that I'm clocked in as.
+
+00:13:57.880 --> 00:14:01.159
+And then you can write a bunch of instructions here, like,
+
+00:14:01.160 --> 00:14:07.039
+I like to use ert for tests. Tests should, like, whatever.
+
+00:14:07.040 --> 00:14:08.639
+You should just say... everything
+
+00:14:08.640 --> 00:14:10.999
+you need to kind of specify.
+
+00:14:11.000 --> 00:14:13.199
+As you get to more complicated tasks,
+
+00:14:13.200 --> 00:14:16.679
+it's harder and harder to give it all the context
+
+00:14:16.680 --> 00:14:17.799
+it needs for a task,
+
+00:14:17.800 --> 00:14:22.299
+and Org Mode is actually a pretty good way to do this.
+
+00:14:22.300 --> 00:14:24.079
+I find that this works pretty well,
+
+00:14:24.080 --> 00:14:26.699
+and you can even have it instruct Claude
+
+00:14:26.700 --> 00:14:29.333
+to just mark things done in your Org file
+
+00:14:29.334 --> 00:14:30.679
+when they're done.
+
+00:14:30.680 --> 00:14:32.867
+And it knows how to do this, of course.
+
+00:14:32.868 --> 00:14:37.959
+So, let's just clock out.
+
+00:14:37.960 --> 00:14:45.239
+That's one way to do things.
+
+NOTE ECA
+
+00:14:45.240 --> 00:14:49.499
+So one other thing I'd like to show you is eca,
+
+00:14:49.500 --> 00:14:52.879
+which, compared to Claude Code, ECA is open source.
+
+00:14:52.880 --> 00:14:54.239
+It's very nice in that respect.
+
+00:14:54.240 --> 00:14:57.839
+It doesn't have to use Anthropic's models.
+
+00:14:57.840 --> 00:15:00.279
+You can use local models,
+
+00:15:00.280 --> 00:15:07.619
+but it has the advantage of integrating very well with Emacs.
+
+00:15:07.620 --> 00:15:08.559
+I'm not going to demonstrate it,
+
+00:15:08.560 --> 00:15:11.159
+because it works essentially the same thing you could do
+
+00:15:11.160 --> 00:15:14.119
+approximately the same kinds of things
+
+00:15:14.120 --> 00:15:15.479
+you could do with Claude Code.
+
+00:15:15.480 --> 00:15:17.439
+You just write what you want to happen
+
+00:15:17.440 --> 00:15:18.639
+and it will make it happen.
+
+00:15:18.640 --> 00:15:21.879
+It again does not do this through Emacs,
+
+00:15:21.880 --> 00:15:23.039
+but what it does do is
+
+00:15:23.040 --> 00:15:25.119
+it gives you a much better Emacs interface
+
+00:15:25.120 --> 00:15:26.919
+that's not terminal-based,
+
+00:15:26.920 --> 00:15:29.639
+because you're not using it through the terminal,
+
+00:15:29.640 --> 00:15:31.239
+or not even through comint,
+
+00:15:31.240 --> 00:15:35.599
+you are using it through a backend
+
+00:15:35.600 --> 00:15:37.499
+that is exchanging structured information
+
+00:15:37.500 --> 00:15:40.999
+with this process that is doing all the work.
+
+00:15:41.000 --> 00:15:41.900
+But other than that,
+
+00:15:41.901 --> 00:15:44.519
+it's the same model as Claude Code
+
+00:15:44.520 --> 00:15:52.059
+and projects of that nature.
+
+NOTE Editing
+
+00:15:52.060 --> 00:15:56.159
+We've seen in the demos that I gave
+
+00:15:56.160 --> 00:15:58.639
+that there are AI experiences
+
+00:15:58.640 --> 00:16:01.279
+that are very natural in the world of editing.
+
+00:16:01.280 --> 00:16:05.339
+because they, like Copilot, just offers completion,
+
+00:16:05.340 --> 00:16:09.479
+it fits very well with what we all do in Emacs.
+
+00:16:09.480 --> 00:16:14.279
+And it's truly, yes, it's kind of a cheat in a sense
+
+00:16:14.280 --> 00:16:15.639
+for editing experiences,
+
+00:16:15.640 --> 00:16:20.159
+because it can do so much, but it's just editing.
+
+00:16:20.160 --> 00:16:25.259
+Whereas things like gptel and those kinds of tools,
+
+00:16:25.260 --> 00:16:29.799
+they are clearly in an editor and using editor,
+
+00:16:29.800 --> 00:16:35.319
+they're using Emacs, but they represent sort of like, well,
+
+00:16:35.320 --> 00:16:37.759
+you can edit for a while, then you could use these tools
+
+00:16:37.760 --> 00:16:39.479
+to do something that is not editing,
+
+00:16:39.480 --> 00:16:45.899
+this AI just changing the buffer for you. And that's fine.
+
+00:16:45.900 --> 00:16:48.399
+It's still... It may not be editing,
+
+00:16:48.400 --> 00:16:52.033
+but it's still clearly something that
+
+00:16:52.034 --> 00:16:55.567
+is useful to do in Emacs
+
+00:16:55.568 --> 00:16:57.039
+and belongs in Emacs.
+
+00:16:57.040 --> 00:17:01.859
+But the new tools like Claude Code and things like that
+
+00:17:01.860 --> 00:17:02.639
+are kind of different.
+
+00:17:02.640 --> 00:17:06.639
+Yes, they will get better integrated with Emacs,
+
+00:17:06.640 --> 00:17:11.639
+but it's not clear that they really need to.
+
+00:17:11.640 --> 00:17:15.479
+They can do a lot of things without editing.
+
+00:17:15.480 --> 00:17:19.239
+In a sense, editing is obsolete in some sense.
+
+00:17:19.240 --> 00:17:23.459
+For as many tasks, you don't need to edit anymore.
+
+00:17:23.460 --> 00:17:26.439
+And that's a nice thing.
+
+00:17:26.440 --> 00:17:30.579
+No one really knows when all this will end,
+
+00:17:30.580 --> 00:17:36.879
+how far things will go. It could be that in a decade or so,
+
+00:17:36.880 --> 00:17:41.039
+no one's really editing for work anymore.
+
+00:17:41.040 --> 00:17:43.159
+Maybe you're just writing instructions.
+
+00:17:43.160 --> 00:17:44.319
+You could do that with anything.
+
+00:17:44.320 --> 00:17:47.439
+You don't need Emacs or any special editor.
+
+00:17:47.440 --> 00:17:50.439
+We could all be using Notepad. That would be bad.
+
+00:17:50.440 --> 00:17:58.039
+But... I think it could go that far,
+
+00:17:58.040 --> 00:18:01.839
+but it could be that, well, for many specialized things,
+
+00:18:01.840 --> 00:18:04.359
+people are still using editing for certain tasks,
+
+00:18:04.360 --> 00:18:07.000
+but most tasks are getting fed to just...
+
+00:18:07.001 --> 00:18:08.839
+AI is just doing those things.
+
+00:18:08.840 --> 00:18:15.759
+In any case, I think it's clear that editing is diminishing,
+
+00:18:15.760 --> 00:18:17.959
+the need for editing itself is diminishing.
+
+00:18:17.960 --> 00:18:21.879
+And in such a world, It's interesting to think
+
+00:18:21.880 --> 00:18:24.799
+where Emacs is headed, especially in relation to
+
+00:18:24.800 --> 00:18:26.359
+all the other editors.
+
+00:18:26.360 --> 00:18:28.599
+I think people will use Emacs less.
+
+00:18:28.600 --> 00:18:31.639
+But I think other editors, like VS Code,
+
+00:18:31.640 --> 00:18:37.999
+may simply disappear or be a relatively fringe tool.
+
+00:18:38.000 --> 00:18:42.719
+And Emacs is going to follow its own path.
+
+00:18:42.720 --> 00:18:44.679
+It's very extensible. It could do anything.
+
+00:18:44.680 --> 00:18:47.919
+If there's one thing Emacs can do, it's adapt.
+
+00:18:47.920 --> 00:18:51.679
+Emacs has been around for a long time.
+
+00:18:51.680 --> 00:18:54.799
+It's pretty clear that Emacs will be around for a long time.
+
+00:18:54.800 --> 00:18:58.879
+It might be that in the future,
+
+00:18:58.880 --> 00:19:04.339
+editing is some sort of like an artisanal activity that we do.
+
+00:19:04.340 --> 00:19:05.599
+It's kind of weird to think about it.
+
+00:19:05.600 --> 00:19:07.679
+It's not like baking bread.
+
+00:19:07.680 --> 00:19:10.079
+But it is the sense that AI might be
+
+00:19:10.080 --> 00:19:12.399
+churning out code in the way, you know,
+
+00:19:12.400 --> 00:19:14.199
+the factories are turning out bread,
+
+00:19:14.200 --> 00:19:17.139
+but if you really want the good stuff,
+
+00:19:17.140 --> 00:19:20.999
+you'll have to do it yourself.
+
+00:19:21.000 --> 00:19:23.959
+I don't know if it'll be exactly like that,
+
+00:19:23.960 --> 00:19:29.519
+but it could be that Emacs survives and thrives
+
+00:19:29.520 --> 00:19:33.559
+in a very kind of specialized ecosystem of people
+
+00:19:33.560 --> 00:19:35.599
+who contribute and use it in the way
+
+00:19:35.600 --> 00:19:39.539
+it has survived and thrive right now.
+
+00:19:39.540 --> 00:19:46.139
+And I think that's a really nice way for all this to end up.
+
+00:19:46.140 --> 00:19:48.719
+There's the whole sense of how society will end up
+
+00:19:48.720 --> 00:19:50.759
+if all this happens. I don't know,
+
+00:19:50.760 --> 00:19:54.639
+but Emacs will be there for us when whatever happens.
+
+00:19:54.640 --> 00:20:00.079
+So thank you, and let's help make Emacs the best it can be
+
+00:20:00.080 --> 00:20:04.880
+to survive and thrive in the next decade.
diff --git a/2025/info/calc-after.md b/2025/info/calc-after.md
index 3dbaf680..7c0f6ebf 100644
--- a/2025/info/calc-after.md
+++ b/2025/info/calc-after.md
@@ -1,6 +1,313 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<div class="transcript transcript-mainVideo"><a name="calc-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:03.620" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Hello, my name is Christopher Howard and welcome to my talk.""" start="00:00:03.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This is basically an introduction""" start="00:00:08.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to the built-in Emacs calculator,""" start="00:00:11.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""properly known as Emacs Calc,""" start="00:00:15.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""particularly from the perspective of someone""" start="00:00:18.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with a technical background such as engineering or electronics.""" start="00:00:21.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I will say, though, my personal interest is not really""" start="00:00:27.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in digital computing or digital calculators,""" start="00:00:32.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but lately has been focused more on analog computing.""" start="00:00:37.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I have, for example, been working to master""" start="00:00:42.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the venerable slide rule, a mechanical computer""" start="00:00:46.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that calculates multiplication powers and logarithms.""" start="00:00:50.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Here's a picture of one.""" start="00:00:57.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""It's a physical tool that was used for hundreds of years""" start="00:01:02.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for this sort of thing""" start="00:01:06.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""before the handheld calculator was made popular.""" start="00:01:09.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And I also had a project that I did""" start="00:01:16.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for a while to several months""" start="00:01:18.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to build an electronic analog computer.""" start="00:01:21.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""A rudimentary attempt of mine, but it's functional,""" start="00:01:33.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and it's basically a 1960s or 1970s style""" start="00:01:38.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""electronic analog computer built very much on a budget,""" start="00:01:43.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but the box in the middle is the computer proper""" start="00:01:48.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which has most of the components inside of it""" start="00:01:52.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""as well as the potentiometers for setting values,""" start="00:01:55.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and an operation switch.""" start="00:02:00.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There's a patch panel on the left""" start="00:02:02.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for connecting the different integrators,""" start="00:02:04.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""amplifiers, multipliers, and so forth together.""" start="00:02:07.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then the output of the simulation is displayed""" start="00:02:11.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""on the oscilloscope on the right side,""" start="00:02:16.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is a digital oscilloscope.""" start="00:02:19.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To be honest, I think that a talk about analog computing""" start="00:02:25.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""would be much more interesting""" start="00:02:28.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""than the talk that I'm about to give,""" start="00:02:30.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but unfortunately that would be out of scope for EmacsConf.""" start="00:02:32.040" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""What is Calc?""" start="00:02:36.640" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""So instead I will talk about Emacs Calc,""" start="00:02:36.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the digital calculator built into Emacs.""" start="00:02:39.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Emacs Calc, while not being a replacement for software""" start="00:02:43.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""like GNU Octave, does have advanced calculator functionality""" start="00:02:47.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that can be useful in engineering, electronics,""" start="00:02:51.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or other technical applications. So I don't want to oversell it,""" start="00:02:55.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but I think functionality-wise, Calc is somewhere in between""" start="00:03:00.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what you'd expect of a decent scientific calculator""" start="00:03:06.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and an advanced graphics calculator.""" start="00:03:12.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So this talk I'll mention is not intended to be a tutorial""" start="00:03:23.940" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but only a brief introduction to Calc.""" start="00:03:28.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Please refer to the built-in Calc info manual""" start="00:03:33.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for detailed instructions on how to complete operations.""" start="00:03:37.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Turn off my volume here.""" start="00:03:46.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The documentation for Emacs Calc is built-in,""" start="00:04:01.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""although on some distributions you may have to install""" start="00:04:05.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the Emacs documentation separately for licensing reasons.""" start="00:04:10.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Calc presents itself as a stack-based calculator""" start="00:04:24.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""where entries are dropped onto a stack""" start="00:04:28.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then an operation is performed on the stack entries.""" start="00:04:31.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, I can drop 1.23 onto the stack,""" start="00:04:36.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then 8.56, and then multiply them together.""" start="00:04:42.900" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-algebraic-entry""" start="00:04:54.280" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""It may present itself as a stack-based calculator,""" start="00:04:54.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but indeed, Calc is also capable of accepting input""" start="00:05:01.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in the more well-known algebraic format""" start="00:05:05.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""by using the calc-algebraic-entry command,""" start="00:05:07.740" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which by default is bound to the apostrophe (') key.""" start="00:05:10.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So you type the apostrophe key, enter the algebraic input,""" start="00:05:15.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""including parentheses as needed.""" start="00:05:19.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, here's a calculation of the resonance frequency""" start="00:05:22.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""of a coil which has an inductance of 250 microhenries""" start="00:05:28.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and 160 picofarads, taken from one of my electronics handbooks.""" start="00:05:35.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The formula for that is 1 over 2 pi""" start="00:05:41.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then the square root of our inductance""" start="00:05:50.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is in this case 250 microfarads - excuse me, microhenries""" start="00:05:57.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then the capacitance is 160 picofarads.""" start="00:06:06.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Small typo here.""" start="00:06:19.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Now I need to evaluate that one more time,""" start="00:06:24.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because pi is a symbol.""" start="00:06:26.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I get about 800 kHz resonant frequency.""" start="00:06:30.920" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-roll-down""" start="00:06:37.399" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""The command calc-roll-down,""" start="00:06:37.399" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which by default is bound to the TAB key,""" start="00:06:41.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will swap the top two stack entries,""" start="00:06:44.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which is sometimes useful if you need to manipulate something""" start="00:06:47.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that's further down the stack.""" start="00:06:51.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So I can swap this around and say multiply by two""" start="00:06:57.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then put it back where it was.""" start="00:07:02.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This command is also capable of rolling the entire stack.""" start="00:07:05.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Say I want to shift them all around.""" start="00:07:14.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This can be done by passing extra arguments""" start="00:07:18.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to the calc-roll-down function.""" start="00:07:21.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's a little bit inconvenient to do manually,""" start="00:07:23.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so in my init file, I defined here a key definition""" start="00:07:28.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that passes in those arguments correctly.""" start="00:07:40.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I attached this to shift-tab,""" start="00:07:45.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so this way, I can roll the entire stack.""" start="00:07:49.180" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I could change one entry here""" start="00:07:52.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then put it back where it was.""" start="00:07:56.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So Calc does algebraic input.""" start="00:08:03.460" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Advanced functions""" start="00:08:07.760" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""It also does advanced functions""" start="00:08:07.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that you would expect any handheld scientific calculator,""" start="00:08:10.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""including trigonometric functions.""" start="00:08:15.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, we can get the sine of a number.""" start="00:08:19.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Now I'll mention here that Calc has multiple modes.""" start="00:08:25.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Right now it's in degree mode.""" start="00:08:30.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""You can switch over to radian mode if you want.""" start="00:08:32.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'm going to put it back in degrees.""" start="00:08:38.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Drop 12 degrees on the stack, and then get the sine of that.""" start="00:08:42.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then with the inverse sine function, I can put it back.""" start="00:08:49.800" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Solving equations with calc-solve-for""" start="00:08:58.180" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc also has the nifty ability to solve equations for you""" start="00:08:58.180" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so long as the equation is not too complicated.""" start="00:09:07.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This is using the calc-solve-for function.""" start="00:09:13.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For example, we could enter in an equation algebraically,""" start="00:09:19.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then run calc-solve-for, and we just have to tell it""" start="00:09:31.700" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what variable we want to solve for. And there we go.""" start="00:09:36.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""We can do this manually as well""" start="00:09:41.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""just so you can see that we get the same result.""" start="00:09:43.200" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Systems of equations""" start="00:09:54.720" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc is also able to solve systems of equations.""" start="00:09:54.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""We can put more than one equation on the stack,""" start="00:09:57.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then solve for several variables.""" start="00:10:03.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To give a technical example for this,""" start="00:10:08.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll show you a resistor network scribble that I did recently.""" start="00:10:13.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Hopefully you can see that. Basically,""" start="00:10:30.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it's fairly simple, a pretty simple resistor network""" start="00:10:32.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with 1 kilo ohm and 10 kilo ohm resistors,""" start="00:10:38.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and using the loop methods, we are calculating the currents,""" start="00:10:42.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the current in each loop, and then that current can be used""" start="00:10:48.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to solve for the voltage of each individual resistor""" start="00:10:52.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if we want to. So at the bottom there we have the equations""" start="00:10:58.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that we come up with as we work through each loop.""" start="00:11:06.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And I'm going to paste that into Calc.""" start="00:11:11.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""To save some time, I'm going to copy and paste that""" start="00:11:19.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""from my notes instead of typing it out.""" start="00:11:22.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So we have two equations there on the stack""" start="00:11:34.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in one stack entry. We run that calc-solve-for function again,""" start="00:11:38.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and we tell it which variables we want to solve for.""" start="00:11:44.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And voila! Those are our currents,""" start="00:11:49.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which we can then use to get the voltages""" start="00:11:51.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for the individual resistors.""" start="00:11:55.720" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""calc-find-root""" start="00:12:00.080" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I'll just briefly mention""" start="00:12:00.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that if Calc is not able to solve an equation""" start="00:12:02.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with calc-solve-for,""" start="00:12:05.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then you might be helped by another calc function""" start="00:12:07.780" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""called calc-find-root.""" start="00:12:10.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""This function basically does a manual search""" start="00:12:11.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for a numerical solution to the equation.""" start="00:12:14.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And there's the documentation page on that.""" start="00:12:30.200" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Derivatives and integrals""" start="00:12:39.960" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""Calc can also solve or find derivatives of functions,""" start="00:12:39.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""at least the more straightforward functions.""" start="00:12:44.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For a simple example,""" start="00:12:47.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""we can get the derivative of that""" start="00:12:49.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""with the derivative function.""" start="00:13:00.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""On the other hand, Calc is also capable of figuring out""" start="00:13:11.980" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""indefinite integrals.""" start="00:13:17.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Say we put that function back on the stack,""" start="00:13:22.100" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and this time, we call the integral function.""" start="00:13:26.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There you go. Of course, you have to add""" start="00:13:32.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""your own constant of integration.""" start="00:13:35.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""For integrals that Calc cannot figure out symbolically,""" start="00:13:39.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""a numerical integration method is available""" start="00:13:43.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""through the calc-num-integral command, which is documented...""" start="00:13:46.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The function documentation is available here, more or less.""" start="00:13:59.999" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Programmable functions""" start="00:14:17.540" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I definitely need to mention""" start="00:14:17.540" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that Calc is capable of doing programmable functions.""" start="00:14:20.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That is to say, you can program your own functions into Calc.""" start="00:14:24.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""There are three separate ways to do this.""" start="00:14:29.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""One is through a macro method""" start="00:14:32.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""similar to Emacs's usual keyboard macros.""" start="00:14:36.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The second method is to transform an algebraic function""" start="00:14:41.540" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""into a stored function definition.""" start="00:14:46.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And the third is to use Elisp directly.""" start="00:14:50.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Personally, I find that the second method""" start="00:14:54.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""is the most practical, the most convenient and practical""" start="00:14:56.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""in my opinion. So I'll give a quick example of that.""" start="00:15:01.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So I could... Let's say I wanted to have a function""" start="00:15:08.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for calculating capacitive reactance.""" start="00:15:14.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll define that in algebraic mode first.""" start="00:15:20.700" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The function for that is 1 over 2 pi""" start="00:15:28.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the frequency and the capacitance.""" start="00:15:33.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Drop that on the stack. You see, it does automatically""" start="00:15:41.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""get simplified a little bit, but it's the same function.""" start="00:15:44.960" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then I press letters Z and F. Do that again.""" start="00:15:52.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Z and F to start transforming that into a stored function.""" start="00:15:58.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""It asks me to select a user key, a single key press.""" start="00:16:06.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll use the letter c.""" start="00:16:11.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then it's going to ask for a longer command name.""" start="00:16:15.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I've actually defined this once before, so it prefilled in""" start="00:16:19.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that command name.""" start="00:16:24.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I need to enter which variables in the formula""" start="00:16:38.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""are actual arguments, rather than just symbols""" start="00:16:43.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to be evaluated later. I prefer to put this in with frequency""" start="00:16:46.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and the capacitance after that,""" start="00:16:52.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but actually in this particular case,""" start="00:16:54.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it doesn't matter at all to the mathematics.""" start="00:16:57.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So, now all I have to do, that this is defined,""" start="00:17:07.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""is I can drop the frequency on the stack,""" start="00:17:11.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""which we'll say, for this example, will be 4.5 MHz,""" start="00:17:15.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then drop on the capacitance, which in this example""" start="00:17:24.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will be 22 pF.""" start="00:17:32.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Then I'll call the function that I just defined.""" start="00:17:40.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I don't really like having to try to remember""" start="00:17:42.440" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""the short letters that I've come up with,""" start="00:17:45.240" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so I'll just use the longer name.""" start="00:17:48.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I need to evaluate one more time""" start="00:17:57.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because the symbol pi is in there and not yet evaluated.""" start="00:17:59.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And so if I've done that right,""" start="00:18:05.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""we have a capacitive reactance of about 1600 ohms.""" start="00:18:07.540" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Plotting""" start="00:18:12.160" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""As the last feature that I'll mention here,""" start="00:18:12.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Emacs Calc does have an interface with gnuplot,""" start="00:18:16.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if you want to have Calc work as your graphing calculator.""" start="00:18:24.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I do need to be honest and mention""" start="00:18:30.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I don't generally use it myself""" start="00:18:33.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because there's another program in GNOME""" start="00:18:35.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I've found to be generally more convenient""" start="00:18:39.720" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for the things that I want to graph quickly.""" start="00:18:43.500" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""But I think I can give you a simple example.""" start="00:18:47.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So first, we need to drop a range on the stack.""" start="00:18:53.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Let's say 0 to 10.""" start="00:19:00.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then we need to drop the function on the stack.""" start="00:19:06.620" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And then I believe it's the letters g and f that graph this.""" start="00:19:11.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Let's see. Yep, there we go.""" start="00:19:17.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So there's our function and it looks nice.""" start="00:19:22.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That was pretty easy.""" start="00:19:25.060" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's the fast way to do it.""" start="00:19:26.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I will, as a disclaimer, mention that""" start="00:19:29.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""using this quick approach,""" start="00:19:32.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that sometimes more complicated graphs""" start="00:19:34.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""will not turn out nicely,""" start="00:19:38.760" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""because by default, the resolution will be pretty low.""" start="00:19:40.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That is to say it's... gnuplot is going to be""" start="00:19:44.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""skipping a lot of points""" start="00:19:48.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and so you'll have to learn a bit more""" start="00:19:49.900" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""about how to use the interface,""" start="00:19:52.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what parameters to pass if you want all your graphs""" start="00:19:55.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to come out looking nice.""" start="00:19:59.520" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So that covers all the features that I wanted to cover.""" start="00:20:03.700" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wish list""" start="00:20:08.800" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""I wanted to briefly mention a wish list of items""" start="00:20:08.800" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I'd like to see in Calc.""" start="00:20:13.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""One of them would be improper integrals.""" start="00:20:16.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So that's like our definite integrals""" start="00:20:23.640" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""except for where a limit of integration is infinity.""" start="00:20:25.160" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""That's something that can be useful in a few applications.""" start="00:20:32.860" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Something else that would be neat to have would be""" start="00:20:38.560" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""annotations for row entries. So for example""" start="00:20:41.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""if I was putting together a sum of numbers""" start="00:20:45.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for, say, my monthly budget,""" start="00:20:48.820" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""let's say I was paying $2,000 for my rent""" start="00:20:53.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and let's say $800 a month for my groceries,""" start="00:20:57.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""(a lot of kids to feed there)""" start="00:21:03.832" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and then say another $60 for dining out, and so on,""" start="00:21:07.932" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""it would be nice if there was some way""" start="00:21:14.566" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to put a little annotation next to each number""" start="00:21:18.260" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""so that you could remember""" start="00:21:21.320" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""what the meaning of that number was more easily.""" start="00:21:23.400" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I actually looked into programming this into Calc myself,""" start="00:21:27.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but discovered that it would require reprogramming""" start="00:21:31.200" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""quite a bit of Calc to make that work well""" start="00:21:35.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""across all calc functionality,""" start="00:21:41.840" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and so, eventually, I gave up.""" start="00:21:43.480" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""But I'd still really like to have that feature.""" start="00:21:46.940" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""The final thing, though""" start="00:21:51.140" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I think this would not necessarily belong in Calc,""" start="00:21:52.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I think it would be cool if Emacs had some way""" start="00:21:54.580" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to run numerical solutions""" start="00:21:57.920" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for systems of differential equations,""" start="00:22:00.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""also known as a differential analyzer.""" start="00:22:02.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""So this would allow you to be able to set up simulation models""" start="00:22:06.020" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""involving systems of differential equations,""" start="00:22:09.280" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""for example, a spring mass system, or pressure temperature,""" start="00:22:11.680" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or what have you, and then run the simulation""" start="00:22:14.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""using numerical approximation.""" start="00:22:18.040" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Maybe it would be silly""" start="00:22:22.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""to actually put that in Calc itself,""" start="00:22:24.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but a nice interface maybe to some other software,""" start="00:22:26.000" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""simple software that did that,""" start="00:22:30.340" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""an easy to use interface for that""" start="00:22:33.300" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""would be really great.""" start="00:22:35.780" video="mainVideo-calc" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Wrapping up""" start="00:22:38.600" video="mainVideo-calc" id="subtitle"]]</div>[[!template text="""So that's my entire talk.""" start="00:22:38.600" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I'll just mention some information.""" start="00:22:41.801" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""If you want to learn more about me""" start="00:22:44.535" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""or things that I'm interested in,""" start="00:22:48.366" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I do not any longer have a web presence.""" start="00:22:50.120" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""I don't have a website anymore,""" start="00:22:57.780" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""but I do have a Gemini capsule""" start="00:22:59.660" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""that I post to all the time.""" start="00:23:03.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""And if you can install, if you're willing to install the...""" start="00:23:07.140" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Gemini browser known as Elpher""" start="00:23:13.880" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""into Emacs, which is available from ELPA,""" start="00:23:19.080" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""then you can browse directly to it""" start="00:23:23.699" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""and look around my Gemini capsule.""" start="00:23:27.360" video="mainVideo-calc" id="subtitle"]]
+[[!template text="""Thank you very much.""" start="00:23:31.440" video="mainVideo-calc" id="subtitle"]]
+
+</div>
+
+Captioner: sachac
+
Questions or comments? Please e-mail [christopher@librehacker.com](mailto:christopher@librehacker.com?subject=Comment%20for%20EmacsConf%202023%20calc%3A%20Basic%20Calc%20functionality%20for%20engineering%20or%20electronics)
diff --git a/2025/info/calc-before.md b/2025/info/calc-before.md
index ae994a76..271d9d3f 100644
--- a/2025/info/calc-before.md
+++ b/2025/info/calc-before.md
@@ -8,12 +8,27 @@ The following image shows where the talk is in the schedule for Sat 2025-12-06.
Format: 24-min talk ; Q&A: IRC <https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen> Etherpad: <https://pad.emacsconf.org/2025-calc>
Etherpad: <https://pad.emacsconf.org/2025-calc>
Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen)
-Status: Ready to stream
+Status: Now playing on the conference livestream
<div>Times in different time zones:</div><div class="times" start="2025-12-06T18:00:00Z" end="2025-12-06T18:25:00Z"><div class="conf-time">Saturday, Dec 6 2025, ~1:00 PM - 1:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 6 2025, ~12:00 PM - 12:25 PM CST (US/Central)<br />Saturday, Dec 6 2025, ~11:00 AM - 11:25 AM MST (US/Mountain)<br />Saturday, Dec 6 2025, ~10:00 AM - 10:25 AM PST (US/Pacific)<br />Saturday, Dec 6 2025, ~6:00 PM - 6:25 PM UTC <br />Saturday, Dec 6 2025, ~7:00 PM - 7:25 PM CET (Europe/Paris)<br />Saturday, Dec 6 2025, ~8:00 PM - 8:25 PM EET (Europe/Athens)<br />Saturday, Dec 6 2025, ~11:30 PM - 11:55 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~2:00 AM - 2:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~3:00 AM - 3:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/gen/">Find out how to watch and participate</a></strong></div>
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-calc"><source src="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt" default />"""<track kind="chapters" label="Chapters" src="/2025/captions/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt" /><p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video>[[!template id="chapters" vidid="mainVideo-calc" data="""
+00:03.620 Introduction
+02:36.640 What is Calc?
+04:54.280 calc-algebraic-entry
+06:37.399 calc-roll-down
+08:07.760 Advanced functions
+08:58.180 Solving equations with calc-solve-for
+09:54.720 Systems of equations
+12:00.080 calc-find-root
+12:39.960 Derivatives and integrals
+14:17.540 Programmable functions
+18:12.160 Plotting
+20:08.800 Wish list
+22:38.600 Wrapping up
+"""]]<div></div>Duration: 23:35 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-calc">Open Etherpad</a></li><li><a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">Open public Q&A</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main--chapters.vtt">Download --main--chapters.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.opus">Download --main.opus (20MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-calc--basic-calc-functionality-for-engineering-or-electronics--christopher-howard--main.webm">Download --main.webm (56MB)</a></li><li><a href="https://youtu.be/MAc6gCUHjOw">View on Youtube</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/info/llm-after.md b/2025/info/llm-after.md
index b83899b2..91904dd7 100644
--- a/2025/info/llm-after.md
+++ b/2025/info/llm-after.md
@@ -1,6 +1,372 @@
<!-- Automatically generated by emacsconf-publish-after-page -->
+<div class="transcript transcript-mainVideo"><a name="llm-mainVideo-transcript"></a><h1>Transcript</h1>
+
+
+<div class="transcript-heading">[[!template new="1" text="""Introduction""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Hi, I'm Andrew Hyatt.""" start="00:00:01.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to talk to you today about Emacs and AI,""" start="00:00:03.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things are right now""" start="00:00:09.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the world of Emacs and AI,""" start="00:00:10.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""via large language models,""" start="00:00:12.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and where things might be going,""" start="00:00:14.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what it means for the future of Emacs.""" start="00:00:17.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think what we're seeing with Emacs is interesting.""" start="00:00:22.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We've seen a lot of different things""" start="00:00:27.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""come around in the past year,""" start="00:00:29.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the past several years.""" start="00:00:31.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's lots of different solutions.""" start="00:00:33.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But in the past year, things have been very interesting.""" start="00:00:35.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think there's new and interesting questions""" start="00:00:36.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""about what does it mean to use Emacs?""" start="00:00:39.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to use any editor?""" start="00:00:43.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to be talking about Emacs,""" start="00:00:45.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you various Emacs packages""" start="00:00:47.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as demonstrations of these ideas.""" start="00:00:50.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there's the general question of""" start="00:00:53.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what does it mean to use any editor, not just Emacs?""" start="00:00:59.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What does it mean to do work?""" start="00:01:03.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think the industry in general is facing these challenges""" start="00:01:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of we don't really know where things are going to end up,""" start="00:01:10.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but we do know the direction they're going.""" start="00:01:13.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs is a reflection of that.""" start="00:01:16.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think the answer for Emacs might be""" start="00:01:20.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a little bit different than everything else,""" start="00:01:23.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I do want to show you what's out there""" start="00:01:25.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so we can explore what are the possibilities""" start="00:01:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of Emacs, AI, and generally how we get things done.""" start="00:01:33.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Thanks. Let's dive right into it.""" start="00:01:41.120" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Copilot""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We're going to start by showing you""" start="00:01:44.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some things that are pretty well integrated,""" start="00:01:48.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that look a lot like what you see in Emacs""" start="00:01:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and fit in with the kinds of editing""" start="00:01:55.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that you normally do in Emacs.""" start="00:01:58.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just kind of like, it's well integrated.""" start="00:02:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we're going to talk about Copilot and Semext.""" start="00:02:06.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Copilot is by Microsoft via GitHub,""" start="00:02:08.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Semext is just my personal demo,""" start="00:02:12.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but they're both showing you, you know,""" start="00:02:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this kind of thing. Let's start with Copilot.""" start="00:02:18.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Copilot on just a standard bit of Elisp.""" start="00:02:24.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:31.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Let's try out Emacs on a standard bit of Elisp.""" start="00:02:38.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to write a Fibonacci function.""" start="00:02:43.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And you can see like as soon as we even start typing it,""" start="00:02:49.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we get everything as a completion.""" start="00:02:53.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you can just press Tab here,""" start="00:02:56.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you've just completed""" start="00:02:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""a significant bunch of Emacs Lisp code.""" start="00:03:02.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It will do this no matter where you are.""" start="00:03:06.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, pretty useful. It will just keep suggesting things.""" start="00:03:09.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do you want to do this?""" start="00:03:14.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not sure.""" start="00:03:16.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it usually is offering pretty reasonable things.""" start="00:03:17.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you could do this with code,""" start="00:03:22.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of course, any code.""" start="00:03:29.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't really even have to have a mode for it, right?""" start="00:03:32.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's kind of the beauty of AI is that""" start="00:03:33.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need any Emacs functionality for this,""" start="00:03:36.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except for Copilot.""" start="00:03:38.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need to know the structure of your code.""" start="00:03:39.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't need anything except for the text itself""" start="00:03:41.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and whatever AI integration that this is.""" start="00:03:45.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can look at, you can do the same thing with Org-mode.""" start="00:03:51.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say create, no,""" start="00:03:53.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how about let's, let's do, you know, spring cleaning.""" start="00:03:58.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's actually the fall, but still we'll say spring cleaning.""" start="00:04:02.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it'll start suggesting things that, you know,""" start="00:04:10.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""maybe at first, it doesn't really know what to do to""" start="00:04:12.768" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean up all code.""" start="00:04:15.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It thinks I need to clean up code, but no,""" start="00:04:16.434" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this is going to be actual, you know,""" start="00:04:18.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""clean hood over range. Clean out pantry.""" start="00:04:21.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are all really reasonable suggestions.""" start="00:04:31.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just keep going here.""" start="00:04:33.880" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Semext""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""I'm going to demonstrate Semext,""" start="00:04:38.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is a package I have on GNU Elpa,""" start="00:04:40.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is designed to integrate AI in a very Emacs-like way.""" start="00:04:43.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And so what you could do is you could do a""" start="00:04:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""semext-search-forward.""" start="00:04:51.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The UI looks just like other Emacs commands,""" start="00:04:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can search for anything.""" start="00:04:58.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's really no way to express what I'm about to,""" start="00:05:02.380" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""what I'm trying to demonstrate""" start="00:05:06.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in Emacs's normal search commands.""" start="00:05:08.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could really ask for anything.""" start="00:05:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it takes a little while, which is not Emacs-like,""" start="00:05:15.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but everything else is sort of like""" start="00:05:18.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's designed to be like Emacs,""" start="00:05:20.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""except way more powerful.""" start="00:05:21.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need any mode to be active for this.""" start="00:05:23.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just need the library""" start="00:05:27.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and an AI provider of some sort, either locally""" start="00:05:32.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or, you know, your favorite cloud provider.""" start="00:05:34.760" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Integrated AI experiences: gptel, ellama, chatgpt-shell, etc.""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to move on to a different way""" start="00:05:41.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of interacting with AI and Emacs.""" start="00:05:43.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""This way is less like the normal editing experience.""" start="00:05:46.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So you lose some familiarity. However, in exchange,""" start="00:05:52.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a lot more powerful.""" start="00:05:57.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And there's a whole suite of these tools.""" start="00:05:58.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm going to demonstrate gptel,""" start="00:06:00.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is the most popular one.""" start="00:06:02.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But there are many.""" start="00:06:05.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think different people have""" start="00:06:06.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""their own preferences of what they like to use.""" start="00:06:08.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We're going to try now something""" start="00:06:11.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is a step away from just editing.""" start="00:06:13.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And we're going to, I'm actually using gptel.""" start="00:06:15.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There are several packages that are going to be""" start="00:06:19.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""doing the same sort of thing as I'm going to show you.""" start="00:06:22.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""gptel has sort of become the most popular one.""" start="00:06:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So that's why I'm showing that to you.""" start="00:06:30.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But let's just highlight everything and say gptel rewrite.""" start="00:06:32.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And gptel basically just has a few things.""" start="00:06:39.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's different ways of thinking about this.""" start="00:06:42.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""With just a few very configurable menus,""" start="00:06:45.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can do a large variety of things.""" start="00:06:50.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So let's give rewrite instructions.""" start="00:06:53.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""&quot;Turn this into an iterative program""" start="00:06:59.820" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""instead of a recursive program.&quot;""" start="00:07:06.601" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In Elisp, you really should not be using recursion.""" start="00:07:12.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So we could say &quot;return to be ready&quot;.""" start="00:07:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Do we accept it?""" start="00:07:20.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, we accept it. Or we could iterate and say, no, no,""" start="00:07:21.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not what we meant. We meant something else.""" start="00:07:24.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Or you did something a little something wrong.""" start="00:07:26.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Please fix it.""" start="00:07:29.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is all very powerful.""" start="00:07:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is this editing?""" start="00:07:31.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Well, it's in the editor.""" start="00:07:33.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do this while editing, while deleting,""" start="00:07:40.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could be doing some sort of traditional editing.""" start="00:07:42.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then this, which is editing""" start="00:07:44.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the sense that it's in your editor,""" start="00:07:47.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you might have to highlight""" start="00:07:48.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""some parts of the file and do things,""" start="00:07:51.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but generally you don't even need to,""" start="00:07:52.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or you go to a spot and you say, put code at this spot.""" start="00:07:54.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of like editing.""" start="00:07:59.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I would say it's not exactly editing,""" start="00:08:01.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's at least something that must happen in an editor""" start="00:08:05.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's well integrated into Emacs.""" start="00:08:10.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you can tell, it used very sort of""" start="00:08:12.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""modern standard Emacs UI paradigms""" start="00:08:14.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it's all written in Elisp.""" start="00:08:18.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Everything is happening in Elisp here.""" start="00:08:20.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So this is just very much an Emacs experience.""" start="00:08:23.780" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's just not exactly editing""" start="00:08:25.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because the thing doing the editing""" start="00:08:27.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is the AI and not you.""" start="00:08:29.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You're just kind of telling it what to do.""" start="00:08:32.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside the editor""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Now we're going to go and look at a way of interaction""" start="00:08:36.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's even more powerful""" start="00:08:41.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and even more disconnected from the normal editing experience.""" start="00:08:43.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In fact, it's so disconnected""" start="00:08:46.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that most people are using this without an editor.""" start="00:08:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""These are things like Claude Code""" start="00:08:52.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or the sort of open source equivalent, Aider.""" start="00:08:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's a few other things that follow this pattern as well.""" start="00:09:01.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it's very interesting in the sense""" start="00:09:05.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that while you can integrate these with the editors,""" start="00:09:07.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I'm going to show you an Emacs integration,""" start="00:09:09.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you don't need to.""" start="00:09:12.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's not the way most people are using them.""" start="00:09:13.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I find it very interesting that sort of""" start="00:09:16.940" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""we're going back kind of full circle where, you know,""" start="00:09:19.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in the 1960s or 70s, we were using Ed from the terminal""" start="00:09:23.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to edit files, but then we created editors,""" start="00:09:31.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and that was a really good idea.""" start="00:09:35.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It is a lot easier to edit files""" start="00:09:37.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you have an actual UI.""" start="00:09:40.168" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But now it's 2025, and we're back in the terminal,""" start="00:09:42.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and we're editing files through the terminal,""" start="00:09:46.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you know what, it's great,""" start="00:09:50.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but I think it's even better with Emacs.""" start="00:09:53.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""On the other hand, it comes with some trade-offs,""" start="00:09:56.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""as you can see, as we will see.""" start="00:10:00.280" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Outside Experiences: claude-code.el, aidermacs, eca""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""Okay, we're going to look at""" start="00:10:04.734" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[audio glitch] Claude Code IDE, aidermacs, ECA.""" start="00:10:07.468" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Last time, I didn't show you all the variants.""" start="00:10:20.321" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I do want to show you eca, which points to,""" start="00:10:22.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it is a very similar tool in what it does,""" start="00:10:26.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but does have a different""" start="00:10:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and I think better type of Emacs integration.""" start="00:10:32.740" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""All right, we're going to demonstrate Claude Code IDE,""" start="00:10:37.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which is one of three Claude Code packages.""" start="00:10:42.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's a bit confusing.""" start="00:10:46.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""One of them will be demoed by another presenter""" start="00:10:47.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""at the Emacs conference, so stay tuned for that.""" start="00:10:52.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Here I'm just going to give you a little taste""" start="00:10:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""of what these packages look like.""" start="00:10:56.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So if we say Claude Code IDE,""" start="00:10:58.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it presents us with basically""" start="00:11:03.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""almost exactly what you would get""" start="00:11:06.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when you're running this in the terminal.""" start="00:11:09.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And essentially there's a terminal interface.""" start="00:11:11.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can see that there's a vterm.""" start="00:11:13.934" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But here we're going to say, &quot;In scratch.el&quot;...""" start="00:11:16.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""let's say what we want to happen.""" start="00:11:20.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""[In scratch.el, there is a fibonacci function.""" start="00:11:23.401" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Can you add all normal elisp headers""" start="00:11:32.134" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and footers to this file?]""" start="00:11:39.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, we just say what's going to happen,""" start="00:11:43.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and this is going to do things in the background.""" start="00:11:45.841" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not going to do things through Emacs.""" start="00:11:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is an integration with Emacs,""" start="00:11:50.980" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so that it can do things like show you these nice ediffs.""" start="00:11:54.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""My screen is not really wide enough""" start="00:12:00.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to show you a really great ediff here,""" start="00:12:03.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but you can kind of see what it's doing,""" start="00:12:04.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can see, yeah, that looks good,""" start="00:12:06.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""so you could say yes, yes, accept the changes,""" start="00:12:09.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and if we... Just need to revert the buffer.""" start="00:12:14.121" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We can quit the printout of this.""" start="00:12:25.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We see that it just did everything I asked it to.""" start="00:12:28.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Is everything exactly right?""" start="00:12:33.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Probably not. It's reasonable for a start though.""" start="00:12:36.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you could ask it to do anything.""" start="00:12:39.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write unit tests for this, and it will.""" start="00:12:40.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say, write me a suite of functions""" start="00:12:45.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""like Fibonacci, and it'll probably do something reasonable.""" start="00:12:49.020" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But you can see this is not editing.""" start="00:12:52.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's nothing editing-like about this.""" start="00:12:54.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That said, there is something that is editing.""" start="00:12:58.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to give it instructions.""" start="00:13:07.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You need to tell it what to do.""" start="00:13:08.600" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Org files""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""And what you could do is... You could have a project.org,""" start="00:13:10.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and what you could do is you could have functions.""" start="00:13:19.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""The way I've done things often is ....""" start="00:13:23.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could say something like,""" start="00:13:26.660" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""unit tests for Fibonacci. How do you spell Fibonacci?""" start="00:13:28.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't remember. But then you could say that this is,""" start="00:13:36.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could clock it, basically. org-clock.""" start="00:13:40.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""What I've done is...""" start="00:13:47.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could add custom commands to Claude Code,""" start="00:13:48.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you could just say, look, here's my Org file,""" start="00:13:50.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""read it and do the thing that I'm clocked in as.""" start="00:13:53.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And then you can write a bunch of instructions here, like,""" start="00:13:57.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I like to use ert for tests. Tests should, like, whatever.""" start="00:14:01.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You should just say... everything""" start="00:14:07.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you need to kind of specify.""" start="00:14:08.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""As you get to more complicated tasks,""" start="00:14:11.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's harder and harder to give it all the context""" start="00:14:13.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it needs for a task,""" start="00:14:16.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and Org Mode is actually a pretty good way to do this.""" start="00:14:17.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I find that this works pretty well,""" start="00:14:22.300" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and you can even have it instruct Claude""" start="00:14:24.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to just mark things done in your Org file""" start="00:14:26.700" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""when they're done.""" start="00:14:29.334" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it knows how to do this, of course.""" start="00:14:30.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So, let's just clock out.""" start="00:14:32.868" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""That's one way to do things.""" start="00:14:37.960" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""ECA""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""So one other thing I'd like to show you is eca,""" start="00:14:45.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""which, compared to Claude Code, ECA is open source.""" start="00:14:49.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very nice in that respect.""" start="00:14:52.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It doesn't have to use Anthropic's models.""" start="00:14:54.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You can use local models,""" start="00:14:57.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it has the advantage of integrating very well with Emacs.""" start="00:15:00.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I'm not going to demonstrate it,""" start="00:15:07.620" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it works essentially the same thing you could do""" start="00:15:08.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""approximately the same kinds of things""" start="00:15:11.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you could do with Claude Code.""" start="00:15:14.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You just write what you want to happen""" start="00:15:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and it will make it happen.""" start="00:15:17.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It again does not do this through Emacs,""" start="00:15:18.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but what it does do is""" start="00:15:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it gives you a much better Emacs interface""" start="00:15:23.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that's not terminal-based,""" start="00:15:25.120" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because you're not using it through the terminal,""" start="00:15:26.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""or not even through comint,""" start="00:15:29.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you are using it through a backend""" start="00:15:31.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that is exchanging structured information""" start="00:15:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""with this process that is doing all the work.""" start="00:15:37.500" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But other than that,""" start="00:15:41.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it's the same model as Claude Code""" start="00:15:41.901" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and projects of that nature.""" start="00:15:44.520" video="mainVideo-llm" id="subtitle"]]
+
+<div class="transcript-heading">[[!template new="1" text="""Editing""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]</div>[[!template text="""We've seen in the demos that I gave""" start="00:15:52.060" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that there are AI experiences""" start="00:15:56.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""that are very natural in the world of editing.""" start="00:15:58.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because they, like Copilot, just offers completion,""" start="00:16:01.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it fits very well with what we all do in Emacs.""" start="00:16:05.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And it's truly, yes, it's kind of a cheat in a sense""" start="00:16:09.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""for editing experiences,""" start="00:16:14.280" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""because it can do so much, but it's just editing.""" start="00:16:15.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Whereas things like gptel and those kinds of tools,""" start="00:16:20.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they are clearly in an editor and using editor,""" start="00:16:25.260" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""they're using Emacs, but they represent sort of like, well,""" start="00:16:29.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you can edit for a while, then you could use these tools""" start="00:16:35.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to do something that is not editing,""" start="00:16:37.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""this AI just changing the buffer for you. And that's fine.""" start="00:16:39.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's still... It may not be editing,""" start="00:16:45.900" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's still clearly something that""" start="00:16:48.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""is useful to do in Emacs""" start="00:16:52.034" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""and belongs in Emacs.""" start="00:16:55.568" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But the new tools like Claude Code and things like that""" start="00:16:57.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""are kind of different.""" start="00:17:01.860" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Yes, they will get better integrated with Emacs,""" start="00:17:02.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it's not clear that they really need to.""" start="00:17:06.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""They can do a lot of things without editing.""" start="00:17:11.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In a sense, editing is obsolete in some sense.""" start="00:17:15.480" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""For as many tasks, you don't need to edit anymore.""" start="00:17:19.240" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And that's a nice thing.""" start="00:17:23.460" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""No one really knows when all this will end,""" start="00:17:26.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""how far things will go. It could be that in a decade or so,""" start="00:17:30.580" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""no one's really editing for work anymore.""" start="00:17:36.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Maybe you're just writing instructions.""" start="00:17:41.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You could do that with anything.""" start="00:17:43.160" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""You don't need Emacs or any special editor.""" start="00:17:44.320" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""We could all be using Notepad. That would be bad.""" start="00:17:47.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But... I think it could go that far,""" start="00:17:50.440" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that, well, for many specialized things,""" start="00:17:58.040" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""people are still using editing for certain tasks,""" start="00:18:01.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but most tasks are getting fed to just...""" start="00:18:04.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""AI is just doing those things.""" start="00:18:07.001" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""In any case, I think it's clear that editing is diminishing,""" start="00:18:08.840" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the need for editing itself is diminishing.""" start="00:18:15.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And in such a world, It's interesting to think""" start="00:18:17.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""where Emacs is headed, especially in relation to""" start="00:18:21.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""all the other editors.""" start="00:18:24.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I think people will use Emacs less.""" start="00:18:26.360" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But I think other editors, like VS Code,""" start="00:18:28.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""may simply disappear or be a relatively fringe tool.""" start="00:18:31.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And Emacs is going to follow its own path.""" start="00:18:38.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's very extensible. It could do anything.""" start="00:18:42.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""If there's one thing Emacs can do, it's adapt.""" start="00:18:44.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""Emacs has been around for a long time.""" start="00:18:47.920" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's pretty clear that Emacs will be around for a long time.""" start="00:18:51.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It might be that in the future,""" start="00:18:54.800" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""editing is some sort of like an artisanal activity that we do.""" start="00:18:58.880" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's kind of weird to think about it.""" start="00:19:04.340" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""It's not like baking bread.""" start="00:19:05.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""But it is the sense that AI might be""" start="00:19:07.680" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""churning out code in the way, you know,""" start="00:19:10.080" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""the factories are turning out bread,""" start="00:19:12.400" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but if you really want the good stuff,""" start="00:19:14.200" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""you'll have to do it yourself.""" start="00:19:17.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""I don't know if it'll be exactly like that,""" start="00:19:21.000" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but it could be that Emacs survives and thrives""" start="00:19:23.960" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""in a very kind of specialized ecosystem of people""" start="00:19:29.520" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""who contribute and use it in the way""" start="00:19:33.560" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""it has survived and thrive right now.""" start="00:19:35.600" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""And I think that's a really nice way for all this to end up.""" start="00:19:39.540" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""There's the whole sense of how society will end up""" start="00:19:46.140" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""if all this happens. I don't know,""" start="00:19:48.720" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""but Emacs will be there for us when whatever happens.""" start="00:19:50.760" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""So thank you, and let's help make Emacs the best it can be""" start="00:19:54.640" video="mainVideo-llm" id="subtitle"]]
+[[!template text="""to survive and thrive in the next decade.""" start="00:20:00.080" video="mainVideo-llm" id="subtitle"]]
+
+</div>
+
+Captioner: amitav
+
Questions or comments? Please e-mail [ahyatt@gmail.com](mailto:ahyatt@gmail.com?subject=Comment%20for%20EmacsConf%202023%20llm%3A%20Emacs%2C%20editors%2C%20and%20LLM%20driven%20workflows)
diff --git a/2025/info/llm-before.md b/2025/info/llm-before.md
index c2aa1889..2ba18a33 100644
--- a/2025/info/llm-before.md
+++ b/2025/info/llm-before.md
@@ -5,15 +5,15 @@ The following image shows where the talk is in the schedule for Sat 2025-12-06.
</div>
[[!toc ]]
-Format: 21-min talk ; Q&A: BigBlueButton conference room <https://media.emacsconf.org/2025/current/bbb-llm.html> Etherpad: <https://pad.emacsconf.org/2025-llm>
+Format: 21-min talk ; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2025-llm>
Etherpad: <https://pad.emacsconf.org/2025-llm>
Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev)
-Status: Ready to stream
+Status: Now playing on the conference livestream
<div>Times in different time zones:</div><div class="times" start="2025-12-06T18:00:00Z" end="2025-12-06T18:25:00Z"><div class="conf-time">Saturday, Dec 6 2025, ~1:00 PM - 1:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 6 2025, ~12:00 PM - 12:25 PM CST (US/Central)<br />Saturday, Dec 6 2025, ~11:00 AM - 11:25 AM MST (US/Mountain)<br />Saturday, Dec 6 2025, ~10:00 AM - 10:25 AM PST (US/Pacific)<br />Saturday, Dec 6 2025, ~6:00 PM - 6:25 PM UTC <br />Saturday, Dec 6 2025, ~7:00 PM - 7:25 PM CET (Europe/Paris)<br />Saturday, Dec 6 2025, ~8:00 PM - 8:25 PM EET (Europe/Athens)<br />Saturday, Dec 6 2025, ~11:30 PM - 11:55 PM IST (Asia/Kolkata)<br />Sunday, Dec 7 2025, ~2:00 AM - 2:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 7 2025, ~3:00 AM - 3:25 AM JST (Asia/Tokyo)</div></div><div><strong><a href="/2025/watch/dev/">Find out how to watch and participate</a></strong></div>
-
+<div class="vid mainVideo"><video controls preload="none" id="mainVideo-llm"><source src="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2025/captions/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 20:04 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2025-llm">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.opus">Download --main.opus (17MB)</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.png">Download --main.png</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2025/emacsconf-2025-llm--emacs-editors-and-llm-driven-workflows--andrew-hyatt--main.webm">Download --main.webm (45MB)</a></li><li><a href="https://youtu.be/U3kbEabBJ_s">View on Youtube</a></li></ul></div></div>
# Description
<!-- End of emacsconf-publish-before-page --> \ No newline at end of file
diff --git a/2025/schedule-details.md b/2025/schedule-details.md
index 5361f271..f5afee68 100644
--- a/2025/schedule-details.md
+++ b/2025/schedule-details.md
@@ -21,8 +21,8 @@ Jump to: <a href="#date-2025-12-06">Sat Dec 6</a> - <a href="#date-2025-12-07">S
[[!template id=sched time="""25""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-gnus.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-gnus""" startutc="""2025-12-06T15:50:00+0000""" endutc="""2025-12-06T16:15:00+0000""" start="""10:50""" end="""11:15""" title="""Reading and writing emails in GNU Emacs with Gnus""" url="""/2025/talks/gnus""" speakers="""Amin Bandali""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""gnus""" note="""captioned, video posted, video: 21:37"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-python.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-python""" startutc="""2025-12-06T16:20:00+0000""" endutc="""2025-12-06T16:40:00+0000""" start="""11:20""" end="""11:40""" title="""Interactive Python programming in Emacs""" url="""/2025/talks/python""" speakers="""David Vujic""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""python""" note="""captioned, video posted, video: 19:52"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-latex.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-latex""" startutc="""2025-12-06T16:25:00+0000""" endutc="""2025-12-06T16:45:00+0000""" start="""11:25""" end="""11:45""" title="""LaTeX export in org-mode: the overhaul""" url="""/2025/talks/latex""" speakers="""Pedro A. Aranda GutiƩrrez""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""latex""" note=""""""]]
-[[!template id=sched time="""25""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: lispmacs or lispmacs[work]</a>""" pad="""https://pad.emacsconf.org/2025-calc""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note="""captioned, video: 23:35"""]]
-[[!template id=sched time="""25""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-llm""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""captioned, video: 20:04"""]]
+[[!template id=sched time="""25""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen">#emacsconf-gen, speaker nick: lispmacs or lispmacs[work]</a>""" pad="""https://pad.emacsconf.org/2025-calc""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Basic Calc functionality for engineering or electronics""" url="""/2025/talks/calc""" speakers="""Christopher Howard""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""calc""" note="""captioned, video posted, video: 23:35"""]]
+[[!template id=sched time="""25""" q-and-a="""none""" pad="""https://pad.emacsconf.org/2025-llm""" startutc="""2025-12-06T18:00:00+0000""" endutc="""2025-12-06T18:25:00+0000""" start="""1:00""" end="""1:25""" title="""Emacs, editors, and LLM driven workflows""" url="""/2025/talks/llm""" speakers="""Andrew Hyatt""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""llm""" note="""captioned, video posted, video: 20:04"""]]
[[!template id=sched time="""40""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-blee-lcnt.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-blee-lcnt""" startutc="""2025-12-06T18:35:00+0000""" endutc="""2025-12-06T19:15:00+0000""" start="""1:35""" end="""2:15""" title="""Blee-LCNT: An Emacs-centered content production and self-publication framework""" url="""/2025/talks/blee-lcnt""" speakers="""Mohsen BANAN""" track="""General""" watch="""https://emacsconf.org/2025/watch/gen""" slug="""blee-lcnt""" note="""captioned, video: 36:41"""]]
[[!template id=sched time="""20""" q-and-a="""<a href="https://media.emacsconf.org/2025/current/bbb-private-ai.html">BBB</a>""" pad="""https://pad.emacsconf.org/2025-private-ai""" startutc="""2025-12-06T18:45:00+0000""" endutc="""2025-12-06T19:05:00+0000""" start="""1:45""" end="""2:05""" title="""Emacs and private AI: a great match""" url="""/2025/talks/private-ai""" speakers="""Aaron Grothe""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""private-ai""" note=""""""]]
[[!template id=sched time="""30""" q-and-a="""<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev">#emacsconf-dev, speaker nick: screwlisp</a>""" pad="""https://pad.emacsconf.org/2025-commonlisp""" startutc="""2025-12-06T19:25:00+0000""" endutc="""2025-12-06T19:55:00+0000""" start="""2:25""" end="""2:55""" title="""Common Lisp images communicating like-a-human through shared Emacs slime and eev""" url="""/2025/talks/commonlisp""" speakers="""screwlisp""" track="""Development""" watch="""https://emacsconf.org/2025/watch/dev""" slug="""commonlisp""" note="""video: 25:56"""]]