WEBVTT 00:00:01.680 --> 00:00:04.480 you are now unmuted 00:00:04.480 --> 00:00:08.000 okay can you guys hear me yeah 00:00:08.000 --> 00:00:11.280 can you guys hear me sir yep I can and 00:00:11.280 --> 00:00:14.480 we're live so take it away okay 00:00:14.480 --> 00:00:17.199 so um hello everyone my name is ferming 00:00:17.199 --> 00:00:18.400 I'm a programmer 00:00:18.400 --> 00:00:20.960 a math student from spain I've been 00:00:20.960 --> 00:00:22.400 using me e-max for 00:00:22.400 --> 00:00:24.960 two years now more or less and today I'm 00:00:24.960 --> 00:00:26.000 going to talk about 00:00:26.000 --> 00:00:28.320 a maxima computer algebra system in 2 00:00:28.320 --> 00:00:29.199 max 00:00:29.199 --> 00:00:32.239 so let's talk about what is maxima 00:00:32.239 --> 00:00:34.239 well maxim is a system for manipulation 00:00:34.239 --> 00:00:36.079 of symbolic and numerical expression 00:00:36.079 --> 00:00:37.920 and it's similar in some regard to 00:00:37.920 --> 00:00:39.440 octave 00:00:39.440 --> 00:00:42.160 and it's also free software is derived 00:00:42.160 --> 00:00:45.039 from the maxima from the 60 from the m80 00:00:45.039 --> 00:00:47.120 and it's written in common lisp which is 00:00:47.120 --> 00:00:48.320 a language that I really 00:00:48.320 --> 00:00:50.719 like I enjoy writing it so for me it's a 00:00:50.719 --> 00:00:51.600 plus 00:00:51.600 --> 00:00:55.039 okay so let's talk about the initial 00:00:55.039 --> 00:00:57.039 support for maxima when I first started 00:00:57.039 --> 00:00:59.280 using it I looked for support into Emacs 00:00:59.280 --> 00:01:00.320 and I found that 00:01:00.320 --> 00:01:03.120 there's two major modes in the main 00:01:03.120 --> 00:01:04.640 repository of maxima 00:01:04.640 --> 00:01:07.200 for remax the first one is imaxima which 00:01:07.200 --> 00:01:09.280 I don't know too much about it 00:01:09.280 --> 00:01:12.000 and the second one is maxima dot l which 00:01:12.000 --> 00:01:13.439 is the one I took first 00:01:13.439 --> 00:01:16.640 and it was pretty nice has like a major 00:01:16.640 --> 00:01:18.080 mode a minor mode 00:01:18.080 --> 00:01:21.280 a nice ripple but it also has some 00:01:21.280 --> 00:01:23.040 disadvantage 00:01:23.040 --> 00:01:25.040 and the first one is that is quite 00:01:25.040 --> 00:01:26.479 outdated I think 00:01:26.479 --> 00:01:29.600 it was from the 2007 00:01:29.600 --> 00:01:30.960 so it's not tested with the current 00:01:30.960 --> 00:01:33.280 email version and the second one 00:01:33.280 --> 00:01:35.520 is that it doesn't use modern e-max 00:01:35.520 --> 00:01:36.320 capability 00:01:36.320 --> 00:01:38.640 I'm talking for example about the last 00:01:38.640 --> 00:01:40.479 or more latex preview 00:01:40.479 --> 00:01:44.720 from the last a max 27.1 I think 00:01:44.720 --> 00:01:46.079 and that's why is that they know 00:01:46.079 --> 00:01:47.920 integrated with common third party 00:01:47.920 --> 00:01:49.600 extension I'm talking about company for 00:01:49.600 --> 00:01:51.520 example third party 00:01:51.520 --> 00:01:55.360 yeah you know the alpa melba packages 00:01:55.360 --> 00:01:57.280 so uh this stock is going to be divided 00:01:57.280 --> 00:01:58.719 in two parts the first one is going to 00:01:58.719 --> 00:02:00.799 be how I maximize my date today 00:02:00.799 --> 00:02:03.040 in max exercise don't worry it's going 00:02:03.040 --> 00:02:03.840 to be 00:02:03.840 --> 00:02:06.000 quite easy and the second one is going 00:02:06.000 --> 00:02:07.680 to be why for the package 00:02:07.680 --> 00:02:10.560 and the list improvement that I did and 00:02:10.560 --> 00:02:13.200 a couple of things more maybe the future 00:02:13.200 --> 00:02:14.480 and where's the package right now if you 00:02:14.480 --> 00:02:16.720 can use it so 00:02:16.720 --> 00:02:19.440 let's talk about the workflow so right 00:02:19.440 --> 00:02:21.360 out of the box it has like an 00:02:21.360 --> 00:02:23.040 orimal support I didn't write this it 00:02:23.040 --> 00:02:24.400 was already 00:02:24.400 --> 00:02:27.680 in Emacs 00:02:27.680 --> 00:02:30.319 so that's pretty nice let's go with a 00:02:30.319 --> 00:02:32.720 simple example 00:02:32.720 --> 00:02:34.480 okay so this is an array of three 00:02:34.480 --> 00:02:36.000 equations and three variables 00:02:36.000 --> 00:02:37.920 so it's a system that can be solved and 00:02:37.920 --> 00:02:39.840 the solution is unique 00:02:39.840 --> 00:02:42.560 um so we're going to solve it right 00:02:42.560 --> 00:02:44.120 let's go 00:02:44.120 --> 00:02:47.519 solutions okay here's how you define a 00:02:47.519 --> 00:02:48.080 variable 00:02:48.080 --> 00:02:52.640 in it's called solve okay 00:02:52.640 --> 00:02:56.480 it's called implicit explicit 00:02:56.480 --> 00:03:00.400 sorry okay and now an array of 00:03:00.400 --> 00:03:03.680 our variables actually okay 00:03:03.680 --> 00:03:05.760 so first of all we have to send this 00:03:05.760 --> 00:03:07.599 variable to the maxima 00:03:07.599 --> 00:03:10.400 repo with we can do that with ctrl c 00:03:10.400 --> 00:03:11.200 control c 00:03:11.200 --> 00:03:14.480 or with the maxima send line 00:03:14.480 --> 00:03:19.200 okay so let's um let's put the maxima 00:03:19.200 --> 00:03:20.560 buffer right here 00:03:20.560 --> 00:03:23.680 okay let's so um 00:03:23.680 --> 00:03:25.360 right now we can get the solution like 00:03:25.360 --> 00:03:27.040 this so we call already 00:03:27.040 --> 00:03:29.360 uh we call this line right now control 00:03:29.360 --> 00:03:30.239 sequence to c 00:03:30.239 --> 00:03:31.920 as you can see we get like an array 00:03:31.920 --> 00:03:33.440 inside an array because 00:03:33.440 --> 00:03:36.080 uh let's see why we get this so we can 00:03:36.080 --> 00:03:38.799 call maxima 00:03:38.799 --> 00:03:42.239 help a point this will open a 00:03:42.239 --> 00:03:44.879 dock um buffer with all information 00:03:44.879 --> 00:03:46.000 about the 00:03:46.000 --> 00:03:48.799 solve function so we can see that this 00:03:48.799 --> 00:03:51.360 list of solution equations 00:03:51.360 --> 00:03:54.560 you can see it okay so but we no we know 00:03:54.560 --> 00:03:56.640 that this system only have one solution 00:03:56.640 --> 00:03:58.239 so we're only interested in the first 00:03:58.239 --> 00:04:00.400 one we can do this like pretty easily 00:04:00.400 --> 00:04:02.080 just to take the first one 00:04:02.080 --> 00:04:05.120 we can send it to the buffer so this is 00:04:05.120 --> 00:04:06.640 quite easy example as you can see 00:04:06.640 --> 00:04:09.280 they have to completion much of the help 00:04:09.280 --> 00:04:10.400 facilities that we have 00:04:10.400 --> 00:04:12.319 we can also get information about the 00:04:12.319 --> 00:04:14.720 symbol for example maxima 00:04:14.720 --> 00:04:17.440 symbol doc and we get in the and now you 00:04:17.440 --> 00:04:17.840 can see 00:04:17.840 --> 00:04:19.840 correctly in the mini buffer all the 00:04:19.840 --> 00:04:20.959 possible 00:04:20.959 --> 00:04:24.080 um parameter of the function 00:04:24.080 --> 00:04:28.000 right so let's continue 00:04:28.000 --> 00:04:31.440 okay so let's go to a more well 00:04:31.440 --> 00:04:34.880 complicated example to say oops 00:04:34.880 --> 00:04:38.560 okay so we have this 00:04:38.560 --> 00:04:42.400 equation and we want to go from -1 to 5 00:04:42.400 --> 00:04:43.919 I want to show in a nice 00:04:43.919 --> 00:04:46.400 graph right first of all we begin 00:04:46.400 --> 00:04:47.759 sending this line to the 00:04:47.759 --> 00:04:51.759 maxima ripple hold it button again 00:04:51.759 --> 00:04:54.880 okay um so this is not ideal if you want 00:04:54.880 --> 00:04:56.960 to write down this equation because 00:04:56.960 --> 00:05:00.160 it's quite messy what is when so 00:05:00.160 --> 00:05:03.039 uh what's thing are where so we can call 00:05:03.039 --> 00:05:04.479 the function maxima 00:05:04.479 --> 00:05:07.520 let's say insert form okay 00:05:07.520 --> 00:05:10.240 and this is more easy this basically put 00:05:10.240 --> 00:05:11.280 text behind 00:05:11.280 --> 00:05:14.240 and led or mode to render it and this is 00:05:14.240 --> 00:05:15.120 quite easy to 00:05:15.120 --> 00:05:19.039 write down you can use it like in every 00:05:19.039 --> 00:05:22.560 expression so um first we have to call a 00:05:22.560 --> 00:05:23.199 library 00:05:23.199 --> 00:05:27.280 let's load the library library draw 00:05:27.280 --> 00:05:29.199 we have also completion for local 00:05:29.199 --> 00:05:31.520 variable and local 00:05:31.520 --> 00:05:35.039 libraries sorry let me try to finish 00:05:35.039 --> 00:05:38.240 draw okay and we send the line 00:05:38.240 --> 00:05:40.320 so right now we have a leverage and we 00:05:40.320 --> 00:05:42.240 should even have auto completion for the 00:05:42.240 --> 00:05:43.600 library function 00:05:43.600 --> 00:05:47.039 okay we have let's call draw2d 00:05:47.039 --> 00:05:50.400 and now we can call implicit we should 00:05:50.400 --> 00:05:51.199 have 00:05:51.199 --> 00:05:54.400 okay and we can I mean put the variable 00:05:54.400 --> 00:05:57.520 of equations we put the first variable d 00:05:57.520 --> 00:05:58.639 minus 00:05:58.639 --> 00:06:02.319 five d five five 00:06:02.319 --> 00:06:05.280 the v variable the minus five and the 00:06:05.280 --> 00:06:06.639 five 00:06:06.639 --> 00:06:09.680 okay it should be all all good so let me 00:06:09.680 --> 00:06:11.759 try to send it 00:06:11.759 --> 00:06:14.639 okay you cannot see it right now because 00:06:14.639 --> 00:06:16.639 I'm just sharing the maxima screen let 00:06:16.639 --> 00:06:19.360 me try to change that 00:06:19.360 --> 00:06:23.520 okay um 00:06:23.520 --> 00:06:31.520 okay can you plot hello 00:06:31.520 --> 00:06:33.919 okay so this is basically the graph that 00:06:33.919 --> 00:06:35.440 I can upload generates 00:06:35.440 --> 00:06:38.800 uh right now it's not integrated into 00:06:38.800 --> 00:06:41.039 into the maximum package but it's a work 00:06:41.039 --> 00:06:42.240 in progress 00:06:42.240 --> 00:06:46.000 so let's go back to Emacs 00:06:46.000 --> 00:06:50.160 uh where are you okay there you are okay 00:06:50.160 --> 00:06:53.520 okay so um 00:06:53.520 --> 00:06:56.639 let's continue so uh this is some of the 00:06:56.639 --> 00:06:57.759 things that you can use 00:06:57.759 --> 00:07:00.000 for your day-to-day programming in 00:07:00.000 --> 00:07:01.919 maxima 00:07:01.919 --> 00:07:05.759 let's go now with the 00:07:05.759 --> 00:07:07.360 okay as you can see this is just text 00:07:07.360 --> 00:07:08.880 that is render 00:07:08.880 --> 00:07:11.199 okay let's go within a slide this is how 00:07:11.199 --> 00:07:13.440 I use maxima a simple example you don't 00:07:13.440 --> 00:07:14.400 want to 00:07:14.400 --> 00:07:16.240 talk too much about it because everyone 00:07:16.240 --> 00:07:17.919 use the package in a different way 00:07:17.919 --> 00:07:19.680 so right now I'm going to talk about the 00:07:19.680 --> 00:07:21.039 original package and 00:07:21.039 --> 00:07:23.520 the way I change it right so the 00:07:23.520 --> 00:07:25.120 documentation 00:07:25.120 --> 00:07:27.840 of the original was great but for me it 00:07:27.840 --> 00:07:29.680 wasn't embedded in the code 00:07:29.680 --> 00:07:31.840 it was something sometimes hard to read 00:07:31.840 --> 00:07:33.599 like it was like a big 00:07:33.599 --> 00:07:36.319 chunk of comment it gave me all the 00:07:36.319 --> 00:07:37.039 information 00:07:37.039 --> 00:07:40.400 like um for me that's too much I prefer 00:07:40.400 --> 00:07:44.240 a cohesive small comment and then a big 00:07:44.240 --> 00:07:45.360 redmi will order 00:07:45.360 --> 00:07:47.759 all the links and information so that's 00:07:47.759 --> 00:07:48.960 one of the first thing I 00:07:48.960 --> 00:07:52.080 change um then also completion I'm a big 00:07:52.080 --> 00:07:52.560 fan 00:07:52.560 --> 00:07:55.759 I'm used to slime so I'm I love 00:07:55.759 --> 00:07:58.639 great auto completion so um the first 00:07:58.639 --> 00:08:00.160 thing that I noticed that well 00:08:00.160 --> 00:08:01.840 it uses an absolute function I don't 00:08:01.840 --> 00:08:04.479 know if you can see correctly okay 00:08:04.479 --> 00:08:07.039 comment dynamic is deprecated and it 00:08:07.039 --> 00:08:08.800 also have like this 00:08:08.800 --> 00:08:10.720 variable which is maximus symbol which 00:08:10.720 --> 00:08:12.720 is basically a big 00:08:12.720 --> 00:08:16.160 list of all the possible completions so 00:08:16.160 --> 00:08:19.280 if I load the library it's not aware of 00:08:19.280 --> 00:08:20.960 the new symbols or even if I 00:08:20.960 --> 00:08:23.039 create a variable it's not loaded so 00:08:23.039 --> 00:08:24.240 it's not dynamic 00:08:24.240 --> 00:08:26.160 so I want the first thing I want is 00:08:26.160 --> 00:08:28.319 dynamic completion right 00:08:28.319 --> 00:08:31.680 so I improve it which wasn't that hard 00:08:31.680 --> 00:08:34.159 I first of all create maximum completion 00:08:34.159 --> 00:08:36.080 which we're going to see in a moment 00:08:36.080 --> 00:08:38.479 and then it changes completion region so 00:08:38.479 --> 00:08:39.200 this is the 00:08:39.200 --> 00:08:41.039 improved version but the good thing is 00:08:41.039 --> 00:08:43.760 like I decoupled the completion function 00:08:43.760 --> 00:08:45.839 so I make that you can use it on your 00:08:45.839 --> 00:08:47.600 own so you get a prefix 00:08:47.600 --> 00:08:50.800 which is um like 00:08:50.800 --> 00:08:52.560 the thing that you're going to also 00:08:52.560 --> 00:08:55.040 complete you get the inferior process 00:08:55.040 --> 00:08:56.959 which I'm going to talk about later but 00:08:56.959 --> 00:08:58.959 basically it's a maxima process you can 00:08:58.959 --> 00:08:59.760 work with 00:08:59.760 --> 00:09:01.760 and you get an optional argument which 00:09:01.760 --> 00:09:03.040 is fuzzy finding 00:09:03.040 --> 00:09:06.399 okay so you can easily send a block here 00:09:06.399 --> 00:09:07.200 what 00:09:07.200 --> 00:09:10.399 uh with the propos which is a maxima 00:09:10.399 --> 00:09:11.440 command that gets you 00:09:11.440 --> 00:09:13.839 all the auto completion and then you 00:09:13.839 --> 00:09:14.959 process the 00:09:14.959 --> 00:09:18.240 the output and you return a list 00:09:18.240 --> 00:09:20.480 of possible completion this function can 00:09:20.480 --> 00:09:21.600 be easily put into 00:09:21.600 --> 00:09:24.800 company as you can see you just 00:09:24.800 --> 00:09:26.640 get maximum auxiliary inferior process 00:09:26.640 --> 00:09:28.560 is a process that just 00:09:28.560 --> 00:09:32.080 uses sorry I have of 00:09:32.080 --> 00:09:35.360 all the apropos and the get that symbol 00:09:35.360 --> 00:09:36.480 it's like uh 00:09:36.480 --> 00:09:39.440 like you say auxiliary let's help me uh 00:09:39.440 --> 00:09:41.360 for that dirty stuff 00:09:41.360 --> 00:09:43.680 so and process manipulation let's talk 00:09:43.680 --> 00:09:44.640 about 00:09:44.640 --> 00:09:46.959 how the maxima process was in the 00:09:46.959 --> 00:09:47.920 beginning 00:09:47.920 --> 00:09:50.720 so at first it was just one process and 00:09:50.720 --> 00:09:52.560 you send all of the things there 00:09:52.560 --> 00:09:54.560 and you move the processor here and 00:09:54.560 --> 00:09:56.320 there and 00:09:56.320 --> 00:09:58.160 there was a global state right so all 00:09:58.160 --> 00:09:59.600 the function depends on 00:09:59.600 --> 00:10:02.000 variable global variables and I don't 00:10:02.000 --> 00:10:05.120 like that approach I prefer more like a 00:10:05.120 --> 00:10:07.680 shirt to say functional like you sense 00:10:07.680 --> 00:10:09.519 one of things and you return 00:10:09.519 --> 00:10:12.000 something so it's not like a void 00:10:12.000 --> 00:10:13.440 function so to say 00:10:13.440 --> 00:10:16.399 so I change it recipe uh well this is 00:10:16.399 --> 00:10:18.079 the maxima start function now 00:10:18.079 --> 00:10:20.959 let's just create a startup process with 00:10:20.959 --> 00:10:22.560 this function which is maxima make 00:10:22.560 --> 00:10:23.680 inferior 00:10:23.680 --> 00:10:26.880 so this function just gets a name 00:10:26.880 --> 00:10:30.000 and it return a process of maxima and 00:10:30.000 --> 00:10:31.519 you can then manipulate it the way you 00:10:31.519 --> 00:10:32.240 want 00:10:32.240 --> 00:10:35.600 let's see a better version so this is 00:10:35.600 --> 00:10:36.800 the opposite right this 00:10:36.800 --> 00:10:39.200 remove an inferior process and delete 00:10:39.200 --> 00:10:41.760 the process and kill the buffer 00:10:41.760 --> 00:10:43.440 right so let's give an example because 00:10:43.440 --> 00:10:45.519 this you can see pretty easily in this 00:10:45.519 --> 00:10:46.399 example 00:10:46.399 --> 00:10:50.079 so I want to go to the scratch buffer 00:10:50.079 --> 00:10:51.519 which I think you can see it better 00:10:51.519 --> 00:10:54.399 okay so this is the way you can get a 00:10:54.399 --> 00:10:55.760 process with your name 00:10:55.760 --> 00:10:58.320 and save it into a variable right let's 00:10:58.320 --> 00:11:00.880 execute this so as you can see well 00:11:00.880 --> 00:11:02.880 I don't know if you can see big you get 00:11:02.880 --> 00:11:03.920 a process 00:11:03.920 --> 00:11:05.839 let's go to it the process called my 00:11:05.839 --> 00:11:07.040 maxima 00:11:07.040 --> 00:11:09.519 as the buffer right and if we can you 00:11:09.519 --> 00:11:10.079 can send 00:11:10.079 --> 00:11:12.240 stuff to the process right we can call 00:11:12.240 --> 00:11:14.959 maximus in block get a block of valid 00:11:14.959 --> 00:11:16.880 maxima code and just pass the variable 00:11:16.880 --> 00:11:17.760 the process 00:11:17.760 --> 00:11:20.800 and we send code to the process right we 00:11:20.800 --> 00:11:21.519 can 00:11:21.519 --> 00:11:23.440 this is useful if you have some 00:11:23.440 --> 00:11:25.760 expensive computation that you want 00:11:25.760 --> 00:11:28.480 to process laser to say so the process 00:11:28.480 --> 00:11:29.680 can manage it 00:11:29.680 --> 00:11:32.640 and when you get the results correctly 00:11:32.640 --> 00:11:33.920 you can also get the result from the 00:11:33.920 --> 00:11:34.399 process 00:11:34.399 --> 00:11:35.920 I mean I don't put it here but quite 00:11:35.920 --> 00:11:38.000 easy and then you 00:11:38.000 --> 00:11:41.200 removed in favor which is the way to get 00:11:41.200 --> 00:11:42.079 rid of the process 00:11:42.079 --> 00:11:43.600 and the buffer so if we call this 00:11:43.600 --> 00:11:45.279 function we should get rid of the 00:11:45.279 --> 00:11:48.399 this process and it works the processing 00:11:48.399 --> 00:11:49.920 is no longer 00:11:49.920 --> 00:11:54.160 I'm happy to continue so um 00:11:54.160 --> 00:11:56.160 other things that improve the package on 00:11:56.160 --> 00:11:57.680 my commitment during time 00:11:57.680 --> 00:11:59.760 I'm going good okay another thing that I 00:11:59.760 --> 00:12:01.360 did to the package was to add 00:12:01.360 --> 00:12:02.560 continue integration and continue 00:12:02.560 --> 00:12:04.959 delivery right so the package didn't 00:12:04.959 --> 00:12:06.320 have any tests 00:12:06.320 --> 00:12:09.440 and the code was a little bit messy so 00:12:09.440 --> 00:12:12.959 I add integration a test 00:12:12.959 --> 00:12:16.560 and test with the test simple framework 00:12:16.560 --> 00:12:19.519 from rocky bursting the maintainer of 00:12:19.519 --> 00:12:20.560 real 00:12:20.560 --> 00:12:23.279 good which is a great package by the way 00:12:23.279 --> 00:12:24.079 um 00:12:24.079 --> 00:12:25.920 yeah this is one example of the process 00:12:25.920 --> 00:12:28.079 so right now because um 00:12:28.079 --> 00:12:29.760 the infrastructure of the process 00:12:29.760 --> 00:12:31.680 management is decoupled 00:12:31.680 --> 00:12:33.680 so I can test it pretty easily this is 00:12:33.680 --> 00:12:35.200 the test function of the 00:12:35.200 --> 00:12:37.519 inferior running so I can check if an 00:12:37.519 --> 00:12:39.519 inferior is running right now 00:12:39.519 --> 00:12:41.440 and I can just delete it after and get 00:12:41.440 --> 00:12:43.200 the results 00:12:43.200 --> 00:12:45.279 and I also did some integration with the 00:12:45.279 --> 00:12:46.959 party packages the first one company of 00:12:46.959 --> 00:12:48.639 course I love auto completion 00:12:48.639 --> 00:12:50.880 the second one was hormone that was 00:12:50.880 --> 00:12:53.839 already there and latex with the 00:12:53.839 --> 00:12:56.880 um or logic insert form 00:12:56.880 --> 00:13:00.079 and with poly mode because um let me 00:13:00.079 --> 00:13:02.959 evaluate this maxima can understand lisp 00:13:02.959 --> 00:13:03.680 code 00:13:03.680 --> 00:13:06.959 well more or less it has like a 00:13:06.959 --> 00:13:10.000 function so to say that you can send a 00:13:10.000 --> 00:13:11.279 list command to the 00:13:11.279 --> 00:13:13.600 maxima rebel and you can understand it 00:13:13.600 --> 00:13:14.480 in some way so 00:13:14.480 --> 00:13:17.839 we can go to the maxima poly 00:13:17.839 --> 00:13:20.959 only maxima right you enable polymaxima 00:13:20.959 --> 00:13:22.800 and it creates a polymode 00:13:22.800 --> 00:13:25.519 which this is lisp code and this is 00:13:25.519 --> 00:13:26.399 maxima code 00:13:26.399 --> 00:13:28.639 so we can send this to the maxima ripple 00:13:28.639 --> 00:13:30.560 we come to c control r which 00:13:30.560 --> 00:13:34.240 it sends the um the current 00:13:34.240 --> 00:13:37.760 um area region sorry 00:13:37.760 --> 00:13:40.160 and we define a variable which is called 00:13:40.160 --> 00:13:41.839 test and as we can see we have the 00:13:41.839 --> 00:13:44.000 variable test right here so you can 00:13:44.000 --> 00:13:47.360 program in lisp and you can send it to 00:13:47.360 --> 00:13:48.079 maxima 00:13:48.079 --> 00:13:50.399 so this is pretty good pretty nice um 00:13:50.399 --> 00:13:51.920 working integration with 00:13:51.920 --> 00:13:55.040 the slime mode and with swank so you can 00:13:55.040 --> 00:13:57.120 actually have a completion of 00:13:57.120 --> 00:13:59.120 a function inside the maximal list 00:13:59.120 --> 00:14:00.959 package but 00:14:00.959 --> 00:14:02.800 this is going to take quite a while 00:14:02.800 --> 00:14:04.399 because it's not trivial 00:14:04.399 --> 00:14:07.360 so um we're the feature of maxima right 00:14:07.360 --> 00:14:09.440 now well we have fonts highlighting 00:14:09.440 --> 00:14:11.519 smart indentation uh it was already in 00:14:11.519 --> 00:14:14.480 the package but now it's quite better 00:14:14.480 --> 00:14:16.880 great help functions right now I can 00:14:16.880 --> 00:14:18.160 find the recommendation quite 00:14:18.160 --> 00:14:20.800 fast and currently the menu integration 00:14:20.800 --> 00:14:22.160 this is quite basic it needs to be a 00:14:22.160 --> 00:14:23.120 little bit improved 00:14:23.120 --> 00:14:25.199 uh latex support also completion the 00:14:25.199 --> 00:14:26.720 company and maximizer process 00:14:26.720 --> 00:14:28.480 integration and mini buffer I didn't 00:14:28.480 --> 00:14:29.120 show you 00:14:29.120 --> 00:14:32.880 but basically if you call global maxima 00:14:32.880 --> 00:14:34.639 minor mode you have the minor mode you 00:14:34.639 --> 00:14:36.720 call maxima mini buffer 00:14:36.720 --> 00:14:38.399 how are you okay mini buffer you can 00:14:38.399 --> 00:14:40.720 basically just write simple maxima 00:14:40.720 --> 00:14:42.720 command and it will give you the result 00:14:42.720 --> 00:14:45.920 this is like a permanent version of um 00:14:45.920 --> 00:14:48.959 calc so you can do it you write the 00:14:48.959 --> 00:14:50.560 command and you get the output uh way 00:14:50.560 --> 00:14:52.320 more to come I have like a list 00:14:52.320 --> 00:14:56.079 of issues that I put enhancement a new 00:14:56.079 --> 00:14:58.880 feature that I'm going to develop 00:14:58.880 --> 00:15:01.199 so uh the future under presence of the 00:15:01.199 --> 00:15:03.120 package well the package is right now 00:15:03.120 --> 00:15:06.880 melpa a melba stable um 00:15:06.880 --> 00:15:10.720 in this 0.7.6 version 00:15:10.720 --> 00:15:13.360 and I'm planning to include into the 00:15:13.360 --> 00:15:15.279 known canoe alpha 00:15:15.279 --> 00:15:16.720 this is the url of the package by the 00:15:16.720 --> 00:15:18.959 way so you can if you go to metapod you 00:15:18.959 --> 00:15:20.079 put maxima and 00:15:20.079 --> 00:15:22.160 you can download it it doesn't have too 00:15:22.160 --> 00:15:23.199 much dependencies 00:15:23.199 --> 00:15:26.639 you aware of that um and thank you very 00:15:26.639 --> 00:15:27.120 much 00:15:27.120 --> 00:15:28.720 uh this is going to be my talk these are 00:15:28.720 --> 00:15:30.959 my uh information 00:15:30.959 --> 00:15:33.519 this is my gitlab this is my page which 00:15:33.519 --> 00:15:34.000 I don't 00:15:34.000 --> 00:15:37.120 love too much and this is my email 00:15:37.120 --> 00:15:40.240 so um thank you very much and I will be 00:15:40.240 --> 00:15:41.839 answering some questions right now 00:15:41.839 --> 00:15:45.600 and happy hacking 00:15:45.600 --> 00:15:49.600 you are now unmuted thank you very much 00:15:49.600 --> 00:15:52.720 vermin for the great talk um okay yeah 00:15:52.720 --> 00:15:55.759 let's see if you have any questions 00:15:55.759 --> 00:15:58.800 uh yeah I'm reading like this um 00:15:58.800 --> 00:16:01.759 so I'm a buddy october usually right now 00:16:01.759 --> 00:16:04.560 okay 00:16:04.560 --> 00:16:06.880 maxima over october yep there are a 00:16:06.880 --> 00:16:08.639 couple questions 00:16:08.639 --> 00:16:11.519 wow maxima we're okay I don't want to I 00:16:11.519 --> 00:16:12.160 don't know 00:16:12.160 --> 00:16:13.940 october that much um 00:16:13.940 --> 00:16:15.680 [Music] 00:16:15.680 --> 00:16:17.839 like I use it like a couple of times but 00:16:17.839 --> 00:16:18.880 I'm not happy 00:16:18.880 --> 00:16:24.000 and I found the octave packets to be 00:16:24.000 --> 00:16:27.120 quite a little bit harder to understand 00:16:27.120 --> 00:16:31.519 and also that 00:16:31.519 --> 00:16:33.839 it didn't have too much features like I 00:16:33.839 --> 00:16:35.680 prefer the maximum used to 00:16:35.680 --> 00:16:37.839 maybe octave is better I don't I'm not 00:16:37.839 --> 00:16:38.880 100 sure 00:16:38.880 --> 00:16:40.800 I know that you can use it for similar 00:16:40.800 --> 00:16:42.079 stuff but 00:16:42.079 --> 00:16:47.120 that's it so sorry 00:16:47.120 --> 00:16:50.959 okay I'm in a little bit of a rush sorry 00:16:50.959 --> 00:16:54.079 let me drink a little blue okay 00:16:54.079 --> 00:17:00.639 okay 00:17:00.639 --> 00:17:05.280 okay how does maxima compare to sagemath 00:17:05.280 --> 00:17:08.959 in imax 00:17:08.959 --> 00:17:13.360 I mean I don't know what is sage 00:17:13.360 --> 00:17:17.439 math I'm sorry um so I cannot answer 00:17:17.439 --> 00:17:18.079 your question 00:17:18.079 --> 00:17:21.839 with your question I think um 00:17:21.839 --> 00:17:25.039 sorry but I mean maxima is ready in 00:17:25.039 --> 00:17:26.720 combo list that's just a preference for 00:17:26.720 --> 00:17:28.000 me because I like 00:17:28.000 --> 00:17:31.120 lisp dialect and common lisp is 00:17:31.120 --> 00:17:36.400 interesting um 00:17:36.400 --> 00:17:40.480 yeah do you plan to 00:17:40.480 --> 00:17:42.720 I mean a maximum organization for maxima 00:17:42.720 --> 00:17:43.840 code block 00:17:43.840 --> 00:17:47.360 yes I want to improve the um 00:17:47.360 --> 00:17:50.720 of maxima package but I didn't have 00:17:50.720 --> 00:17:52.000 enough time and I want to 00:17:52.000 --> 00:17:54.400 clear a little bit of the code because 00:17:54.400 --> 00:17:58.000 still right now 00:17:58.000 --> 00:18:00.080 the code is quite messy in some areas 00:18:00.080 --> 00:18:02.080 because I pretty much implement first 00:18:02.080 --> 00:18:03.520 the base function I want to 00:18:03.520 --> 00:18:05.600 build on top of so right now it's quite 00:18:05.600 --> 00:18:07.120 usable but I still have something that I 00:18:07.120 --> 00:18:07.919 want to improve 00:18:07.919 --> 00:18:11.120 so when I finish that I will 00:18:11.120 --> 00:18:14.799 improve the normal version I think 00:18:14.799 --> 00:18:16.640 it's maximizing to get into into your 00:18:16.640 --> 00:18:18.640 opinion yes I 00:18:18.640 --> 00:18:21.200 I think that the creator of maxima like 00:18:21.200 --> 00:18:21.919 have this 00:18:21.919 --> 00:18:26.640 lisp mine and probably 00:18:26.640 --> 00:18:29.520 that they if you go to a symbol you get 00:18:29.520 --> 00:18:30.559 all the information 00:18:30.559 --> 00:18:33.520 and that reflects that you can actually 00:18:33.520 --> 00:18:36.480 write your program of maxima into 00:18:36.480 --> 00:18:40.000 um into lisp literally because they have 00:18:40.000 --> 00:18:40.799 a command 00:18:40.799 --> 00:18:42.480 so I think that is quite easy to get 00:18:42.480 --> 00:18:44.880 into some university use it for 00:18:44.880 --> 00:18:48.240 um first um 00:18:48.240 --> 00:18:51.200 years so it's quite easy and I think 00:18:51.200 --> 00:18:53.039 with my package you can use it 00:18:53.039 --> 00:18:56.640 like pretty pretty easily just create a 00:18:56.640 --> 00:18:58.960 file and you can start typing and 00:18:58.960 --> 00:19:00.880 maximize quite easy to install also 00:19:00.880 --> 00:19:04.400 so I think yeah it's crazy and 00:19:04.400 --> 00:19:07.600 the page should restart I don't know why 00:19:07.600 --> 00:19:18.320 sorry 00:19:18.320 --> 00:19:22.559 strict in fixed lisp syntax 00:19:22.559 --> 00:19:25.440 you're talking about the maxima itself 00:19:25.440 --> 00:19:26.240 syntax 00:19:26.240 --> 00:19:27.760 or I don't understand the question 00:19:27.760 --> 00:19:32.240 correctly 00:19:32.240 --> 00:19:33.679 well I'm going to go to the next 00:19:33.679 --> 00:19:35.440 question is there 00:19:35.440 --> 00:19:37.360 support for images in maximum mode not 00:19:37.360 --> 00:19:38.880 right now 00:19:38.880 --> 00:19:45.280 the way I want to implement some imax 00:19:45.280 --> 00:19:49.120 things uh is there support for 00:19:49.120 --> 00:19:51.280 but right now it doesn't have like a if 00:19:51.280 --> 00:19:53.360 you could want to have a new plot 00:19:53.360 --> 00:19:55.600 um inside you buffer right now it's not 00:19:55.600 --> 00:19:56.720 possible so 00:19:56.720 --> 00:19:59.360 that's the thing that I maximized that 00:19:59.360 --> 00:20:01.200 maxima.l still doesn't 00:20:01.200 --> 00:20:03.520 do which university you start to use 00:20:03.520 --> 00:20:04.720 maxima um 00:20:04.720 --> 00:20:08.799 in this aragosa university from spain 00:20:08.799 --> 00:20:11.840 they used to maximize the um thing in 00:20:11.840 --> 00:20:12.640 the engineer 00:20:12.640 --> 00:20:16.400 and in the math also so I'm 100 sure 00:20:16.400 --> 00:20:18.320 right now but when I started 00:20:18.320 --> 00:20:19.679 are you planning to option your package 00:20:19.679 --> 00:20:22.559 into maxima um I don't know about that 00:20:22.559 --> 00:20:25.440 because uh maybe can be a little bit 00:20:25.440 --> 00:20:26.320 messy 00:20:26.320 --> 00:20:30.720 um because the maxima ripple is more 00:20:30.720 --> 00:20:32.960 built around like maxima itself and they 00:20:32.960 --> 00:20:33.360 don't 00:20:33.360 --> 00:20:37.600 update the interfaces that much 00:20:37.600 --> 00:20:42.240 I have no problem like it's okay it just 00:20:42.240 --> 00:20:45.360 you have to um if you want to push you 00:20:45.360 --> 00:20:46.320 can push in other 00:20:46.320 --> 00:20:48.480 repository I mean it's just changed the 00:20:48.480 --> 00:20:49.520 file another way 00:20:49.520 --> 00:20:52.880 but also the test um is going to be a 00:20:52.880 --> 00:20:54.080 little bit harder because I think 00:20:54.080 --> 00:20:55.200 they're using 00:20:55.200 --> 00:20:59.120 search for and I'm using 00:20:59.120 --> 00:21:01.200 git lab continue integration within the 00:21:01.200 --> 00:21:02.159 jury 00:21:02.159 --> 00:21:06.799 so yeah I don't think that now unmuted 00:21:06.799 --> 00:21:10.799 yeah it will be nice 00:21:10.799 --> 00:21:12.799 okay um it's possible to include 00:21:12.799 --> 00:21:14.840 maximizing or false similar to jupiter 00:21:14.840 --> 00:21:16.480 notebooks 00:21:16.480 --> 00:21:19.919 um I mean you can uh use maximize your 00:21:19.919 --> 00:21:23.280 or files and you have maximum l mod 00:21:23.280 --> 00:21:26.320 integrated and you can like create put 00:21:26.320 --> 00:21:31.520 that code into a buffer and then 00:21:31.520 --> 00:21:34.400 uh edited correctly but it is now not it 00:21:34.400 --> 00:21:36.159 doesn't have like all the features like 00:21:36.159 --> 00:21:37.679 other languages because 00:21:37.679 --> 00:21:40.480 right now uh as my understanding is 00:21:40.480 --> 00:21:42.320 quite basic so I still have some 00:21:42.320 --> 00:21:45.440 still needs some some stuff some work 00:21:45.440 --> 00:21:47.919 around 00:21:47.919 --> 00:21:52.320 okay I think that's it 00:21:52.320 --> 00:21:56.320 you are now unmuted 00:21:56.320 --> 00:21:59.600 yep so that's it uh thank you very much 00:21:59.600 --> 00:22:01.919 fermin for your live talk and for you 00:22:01.919 --> 00:22:04.640 know the live q a 00:22:04.640 --> 00:22:07.679 thank you all amazing uh max conf 00:22:07.679 --> 00:22:09.840 cheers thank you it's thanks to you all 00:22:09.840 --> 00:22:10.720 you guys 00:22:10.720 --> 00:22:16.840 it's awesome okay thank you cheers bye 00:22:16.840 --> 00:22:19.840 bye