diff options
Diffstat (limited to '2025/info')
| -rw-r--r-- | 2025/info/calc-after.md | 307 | ||||
| -rw-r--r-- | 2025/info/calc-before.md | 17 | ||||
| -rw-r--r-- | 2025/info/llm-after.md | 366 | ||||
| -rw-r--r-- | 2025/info/llm-before.md | 6 |
4 files changed, 692 insertions, 4 deletions
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=""""Turn this into an iterative program""" start="00:06:59.820" video="mainVideo-llm" id="subtitle"]] +[[!template text="""instead of a recursive program."""" 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 "return to be ready".""" 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, "In scratch.el"...""" 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 |
