WEBVTT 00:00.000 --> 00:05.819 And you're ready to go. All right, perfect. 00:05.820 --> 00:07.875 Hello, my name is Zachary Romero 00:07.876 --> 00:08.879 and today I'll be giving a talk 00:08.880 --> 00:12.719 on how I'm using Emacs for Android 00:12.720 --> 00:15.399 to replace my fitness app I normally use. 00:15.400 --> 00:17.239 So it goes without saying 00:17.240 --> 00:21.559 that a lot of the mobile ecosystem these days 00:21.560 --> 00:25.439 are pretty hostile to the interest of its users. 00:25.440 --> 00:26.999 So there's privacy policies 00:27.000 --> 00:32.959 that are constantly collecting your data and selling it. 00:32.960 --> 00:36.399 without your consent, bombardment of ads. 00:36.400 --> 00:37.999 And then there's a lot of features that are locked. 00:38.000 --> 00:40.479 Sometimes features that the app gives you, 00:40.480 --> 00:42.959 they're put behind paywalls. 00:42.960 --> 00:45.159 And so a lot of the ecosystem 00:45.160 --> 00:49.119 isn't in the best interest of users. 00:49.120 --> 00:51.959 And obviously there are apps like on F-Droid 00:51.960 --> 00:56.799 and the Android ecosystem that do try to address this, 00:56.800 --> 00:59.159 but the solutions overall are lagging 00:59.160 --> 01:05.439 behind maybe desktop computers. 01:05.440 --> 01:14.479 One option that has come in the past few years 01:14.480 --> 01:17.239 is Emacs on Android. It's just a normal Emacs build, 01:17.240 --> 01:21.159 and so it can do everything, in theory, that Emacs can do. 01:21.160 --> 01:24.399 And so I got to thinking how could I, how I could use Emacs 01:24.400 --> 01:27.039 to replace some of the proprietary apps 01:27.040 --> 01:28.479 that I use on a daily basis. 01:28.480 --> 01:31.279 So I just went thinking about the apps, 01:31.280 --> 01:33.039 the apps that Emacs can replace. 01:33.040 --> 01:35.119 Some of them seem quite easy. 01:35.120 --> 01:39.879 Some of them... maybe might take a little effort but seem doable 01:39.880 --> 01:41.959 and then obviously there's a whole class of apps 01:41.960 --> 01:47.199 that would be pretty impossible to emulate on Emacs. 01:47.200 --> 01:52.679 So I mean besides like to-do lists, note taking, org mode, 01:52.680 --> 01:55.759 one thing that came to mind was my fitness tracking app. 01:55.760 --> 01:59.239 This is an app I use pretty often 01:59.240 --> 02:06.719 and in theory Emacs should be quite usable for this case. 02:06.720 --> 02:09.759 So weightlifting tracking is, 02:09.760 --> 02:13.599 so it's normally used to record 02:13.600 --> 02:17.519 what exercises you do at what intensity 02:17.520 --> 02:20.719 in order to progress week by week. 02:20.720 --> 02:25.719 So you might plan on like slowly increasing 02:25.720 --> 02:27.399 the amount of effort you put into 02:27.400 --> 02:30.159 your various workouts from week to week, 02:30.160 --> 02:34.079 and then maybe you'll have put some rest weeks in there. 02:34.080 --> 02:37.439 And so you want a detailed plan 02:37.440 --> 02:40.439 and recording of what you do throughout the week. 02:40.440 --> 02:43.919 And so I guess way back, normally 02:43.920 --> 02:45.919 this would have been done on pen and paper. 02:45.920 --> 02:48.079 So you would take your notebook 02:48.080 --> 02:50.999 and just write down on paper what you did. 02:51.000 --> 02:56.559 And this obviously works, and a lot of people do do this. 02:56.560 --> 02:59.799 But these days, there are quite a few apps 02:59.800 --> 03:02.639 that make this process quite seamless and effortless. 03:02.640 --> 03:06.279 So just as an example, really fast. 03:06.280 --> 03:09.039 So this is one of the popular apps out these days 03:09.040 --> 03:10.399 that has such a feature. 03:10.400 --> 03:13.479 So you can save all your workout routines 03:13.480 --> 03:14.319 and this nice interface. 03:14.320 --> 03:18.719 And so you click a button and then it starts, 03:18.720 --> 03:20.919 you have the workout interface and then 03:20.920 --> 03:23.439 You can kind of, you go through your workout 03:23.440 --> 03:25.079 and then you can input, 03:25.080 --> 03:27.399 you can input like what things you do. 03:27.400 --> 03:29.119 And then it has this like fancy timer at the bottom. 03:29.120 --> 03:30.959 So like, this is kind of like the, 03:30.960 --> 03:35.839 kind of like what a lot of people use these days, 03:35.840 --> 03:39.319 just for, just for, to make it as frictionless as possible. 03:39.320 --> 03:44.359 So obviously you can do like this bare bone text editing in Emacs. 03:44.360 --> 03:46.959 You just have to open up an org mode file and just right away. 03:46.960 --> 03:48.879 So, but there are a number of problems with this. 03:48.880 --> 03:50.559 So like, especially on mobile, 03:50.560 --> 03:52.719 character by character editing, 03:52.720 --> 03:55.879 just like writing all these, this text out manually, 03:55.880 --> 03:58.759 maybe some formatting, it can be pretty tedious 03:58.760 --> 04:01.839 and not, maybe not something you want to, you want to have to do, 04:01.840 --> 04:04.559 especially if you're like exhausted or tired. 04:04.560 --> 04:06.479 So, I mean, there's also like the problem 04:06.480 --> 04:09.439 of like remembering which, where in your workout you are, 04:09.440 --> 04:11.839 like how many of these, these, like which, 04:11.840 --> 04:13.479 which, like where are you, where you are, 04:13.480 --> 04:17.159 like, um like which set number set number are you on 04:17.160 --> 04:17.679 are you on the first second 04:17.680 --> 04:19.919 and then also like maybe you failed 04:19.920 --> 04:22.239 maybe you weren't able to like perform this 04:22.240 --> 04:24.279 and maybe you have to make a note that so like 04:24.280 --> 04:28.279 so that's even more text editing you would have to do 04:28.280 --> 04:30.959 um also some things like unit conversions 04:30.960 --> 04:31.799 like you could use calc 04:31.800 --> 04:35.879 but then you know you'd have to like open up the calc, 04:35.880 --> 04:39.799 and then number, unit conversion, switch buffers. 04:39.800 --> 04:41.999 So it's doable, but it takes a little effort. 04:42.000 --> 04:43.439 And then also the rest timer. 04:43.440 --> 04:45.399 So if you want to make sure you're resting 04:45.400 --> 04:46.999 in between these exercises you do, 04:47.000 --> 04:51.079 you'd have to maybe open up another app, 04:51.080 --> 04:52.439 or maybe you'd have to bring your watch. 04:52.440 --> 04:53.719 So that's another thing that 04:53.720 --> 04:58.399 these apps normally would do for you. 04:58.400 --> 05:02.559 So writing some Elisp, I created a package 05:02.560 --> 05:04.479 to try to emulate that experience 05:04.480 --> 05:06.079 I showed you on that other app. 05:06.080 --> 05:08.159 So let me just demo this real fast. 05:08.160 --> 05:13.679 So here, the package is called org-fit. 05:13.680 --> 05:17.359 And so here, I'm going to start a new workout. 05:17.360 --> 05:19.559 And then here, I'm prompted by a list of routines 05:19.560 --> 05:22.159 that I have pre-written in org mode. 05:22.160 --> 05:25.759 So the header name is the routine name. 05:25.760 --> 05:29.279 And so I can, out of all these routines I've written, 05:29.280 --> 05:35.959 I can select one and then also I can have it populate. 05:35.960 --> 05:41.519 So here it's populating preset weights I had for it. 05:41.520 --> 05:45.839 So yeah, so basically this is my current attempt 05:45.840 --> 05:47.599 to emulate that experience. 05:47.600 --> 05:51.039 So here we can, so here like the arrows and the tabs, 05:51.040 --> 05:55.239 they only go through like the, editable fields I can so 05:55.240 --> 05:58.119 on the notes section you see you see here in the table 05:58.120 --> 06:00.439 this is like the my plan for the day 06:00.440 --> 06:02.159 so I can press space to easily 06:02.160 --> 06:03.839 just fill out the data tab 06:03.840 --> 06:06.879 go the next the next the next set 06:06.880 --> 06:10.239 I can press quote to copy from above 06:10.240 --> 06:13.359 There's also some interesting things with Android, 06:13.360 --> 06:15.719 like you can bind the volume down key. 06:15.720 --> 06:17.319 So here I have the volume down key 06:17.320 --> 06:21.439 just like inputting the data automatically 06:21.440 --> 06:22.399 and going to the next field. 06:22.400 --> 06:26.639 So you see there it's quite seamless input of information. 06:26.640 --> 06:30.119 Notice also when all the sets 06:30.120 --> 06:31.839 of a single exercise are done, 06:31.840 --> 06:34.759 it marks that heading as done. 06:34.760 --> 06:37.959 Also, if you notice at the top, on the left, 06:37.960 --> 06:42.239 you have the session time for the workout. 06:42.240 --> 06:44.199 And then on here, we have the rest timer. 06:44.200 --> 06:48.519 So the rest timer is actually just defined as an org mode property. 06:48.520 --> 06:50.839 So here it's saying that, okay, 06:50.840 --> 06:52.759 you should start the auto rest timer 06:52.760 --> 06:54.479 for three minutes every time you do a set. 06:54.480 --> 06:58.279 So here, let's fill it in, go to the next one. 06:58.280 --> 07:00.639 And now the rest timer is set for three minutes. 07:00.640 --> 07:03.079 And so here I have, I can just rest 07:03.080 --> 07:05.879 I just have the information right here. 07:05.880 --> 07:08.119 Also, you'll notice here we have 07:08.120 --> 07:09.439 some calculations at the bottom. 07:09.440 --> 07:12.159 This is something also that those apps provide, 07:12.160 --> 07:14.319 like in order to make sure you're tracking 07:14.320 --> 07:16.719 on certain levels of intensity. 07:16.720 --> 07:22.599 Let's see, what else do we have? 07:22.600 --> 07:30.879 We can add warmups, automatic warmup set inserting, unit conversions, 07:30.880 --> 07:33.439 and then Something else to know 07:33.440 --> 07:35.439 is that all of these actions I'm doing, 07:35.440 --> 07:37.079 they're all bound to a single key 07:37.080 --> 07:40.159 to make things as effortless as possible. 07:40.160 --> 07:43.679 So yeah, that's the app in a nutshell. 07:43.680 --> 07:47.079 And then, so how is this done? 07:47.080 --> 07:51.239 So the philosophy behind this is to use org mode as a base. 07:51.240 --> 07:55.639 So all the functionality, the timer for the session, 07:55.640 --> 08:00.319 that's just clock in or clock in. 08:00.320 --> 08:05.159 The various, all the data you fill in, 08:05.160 --> 08:09.519 the exercises, routines, those are just org headings, 08:09.520 --> 08:12.159 like with nested entries. 08:12.160 --> 08:14.959 So yeah, and then all the movement, 08:14.960 --> 08:16.759 like a lot of the editing stuff 08:16.760 --> 08:18.559 is just going off of the org mode API. 08:18.560 --> 08:22.919 So like here, my upper field, is actually just using the, 08:22.920 --> 08:26.239 so it's using like the org table go to line function. 08:26.240 --> 08:28.999 Adding a no is org table put. 08:29.000 --> 08:31.319 So like all of my functions I'm using, 08:31.320 --> 08:33.239 they're just building off of the org mode API. 08:33.240 --> 08:38.199 And I found that this pattern worked work pretty well. 08:38.200 --> 08:41.959 So you get the benefits of org mode 08:41.960 --> 08:48.839 and then the ease of using it on mobile. 08:48.840 --> 08:51.919 And so I guess in the last few minutes of this talk, 08:51.920 --> 08:53.479 I'll just go over some quick things 08:53.480 --> 08:56.319 about working with Android that might come up. 08:56.320 --> 08:58.879 So the first thing is notifications. 08:58.880 --> 09:01.039 This is actually an interesting feature. 09:01.040 --> 09:03.679 So In the Android build for Emacs, 09:03.680 --> 09:05.799 you have the function android notifications notify. 09:05.800 --> 09:09.039 And so here, this is how you can send a notification. 09:09.040 --> 09:11.999 So my rest timer, for example, utilizes this function 09:12.000 --> 09:14.399 to let you know when your rest is over. 09:14.400 --> 09:22.439 And the cool thing about this is that the build for Emacs 09:22.440 --> 09:29.039 lets you, so here in the app settings, under notifications, 09:29.040 --> 09:33.039 so here you can actually pick a notification group, 09:33.040 --> 09:36.639 which is here set, which is, yeah, so it's set right here 09:36.640 --> 09:37.999 and you can just customize it. 09:38.000 --> 09:39.599 So like what sound do you want it to make? 09:39.600 --> 09:40.439 Do you want it to vibrate? 09:40.440 --> 09:41.679 Do you want to show on the screen? 09:41.680 --> 09:43.519 And so this way, like you can easily, 09:43.520 --> 09:46.839 so if you are resting, you will get a notification. 09:46.840 --> 09:47.879 It will vibrate. 09:47.880 --> 09:50.079 it might make a really loud noise if you want it to. 09:50.080 --> 09:51.919 And so this is all customizable. 09:51.920 --> 09:54.479 And the cool thing is that if you have other packages 09:54.480 --> 09:55.639 that utilize these notifications, 09:55.640 --> 09:57.479 all of the notification groups, 09:57.480 --> 10:01.079 they're all customizable separately. So, and there we go. 10:01.080 --> 10:02.359 So that notification you see on the top 10:02.360 --> 10:04.999 is actually from the Emacs app. 10:05.000 --> 10:07.399 So you notice here, we're not even running Emacs 10:07.400 --> 10:09.759 and yet we got that rest timer is over. 10:09.760 --> 10:13.559 So that's one thing. Next, keyboard. 10:13.560 --> 10:15.039 So just when working with Emacs, 10:15.040 --> 10:19.079 I found using the unexpected keyboard, in particular, 10:19.080 --> 10:22.519 to be really helpful with all the keybinding. 10:22.520 --> 10:25.879 So if you just want to try out Emacs 10:25.880 --> 10:27.719 from F-Droid or something, 10:27.720 --> 10:30.239 I would recommend using a keyboard like this 10:30.240 --> 10:33.999 to let you use the meta keys and the control keys. 10:34.000 --> 10:37.039 And then yeah, using this keyboard, 10:37.040 --> 10:39.159 I haven't really noticed any problems 10:39.160 --> 10:41.679 with Emacs key bindings. 10:41.680 --> 10:45.159 And then lastly, just like my setup. 10:45.160 --> 10:49.679 So SyncThinkFork is another app I rely on heavily. 10:49.680 --> 10:54.399 So as I mentioned, all the, this is org-fit files, 10:54.400 --> 10:55.719 they're all org-mode files. 10:55.720 --> 10:57.439 So I use SyncThinkFork to synchronize them 10:57.440 --> 10:59.879 between my laptop and my Android. 10:59.880 --> 11:04.479 And then also like to get this package, 11:04.480 --> 11:06.559 just syncing a list folder might be helpful 11:06.560 --> 11:09.999 if you want to easily edit your init file 11:10.000 --> 11:12.319 on Android on your machine. 11:12.320 --> 11:15.639 So yeah, SyncThinkPort is another helpful thing 11:15.640 --> 11:17.959 that you might wanna look into 11:17.960 --> 11:22.919 if you're exploring Android, the Emacs build of Android. 11:22.920 --> 11:26.239 So yeah, Emacs on Android does actually have the potential 11:26.240 --> 11:30.959 to replace a decent number of common use cases. 11:30.960 --> 11:35.759 And org mode can be a solid foundation 11:35.760 --> 11:39.959 for any of these applications that you're thinking of. 11:39.960 --> 11:45.639 And yeah, I highly recommend giving giving Emacs on Android a shot. 11:45.640 --> 11:49.719 And that concludes this presentation. 11:49.720 --> 11:56.439 Thank you so much, Zachary. That was an awesome talk, 11:56.440 --> 11:59.599 and I appreciate your preparing it for us. 11:59.600 --> 12:03.399 A couple questions on the pad, if anybody wants to jump in 12:03.400 --> 12:05.119 and throw in your questions or comments. 12:05.120 --> 12:08.599 Of course, happy to read them out on screen here. 12:08.600 --> 12:12.039 I think when we were talking backstage before, 12:12.040 --> 12:14.239 you had asked me to kind of read them out, 12:14.240 --> 12:17.199 but feel free to jump in and kind of 12:17.200 --> 12:18.999 take over at any point. 12:19.000 --> 12:25.279 This is the You Show. I'm kind of... 12:25.280 --> 12:30.199 So the first question we had was a comment. 12:30.200 --> 12:31.439 This is very cool. 12:31.440 --> 12:33.519 It would be nice to build up some 12:33.520 --> 12:38.439 org rep max calculation formula into calc. 12:38.440 --> 12:42.119 Is that something that you've thought about? 12:42.120 --> 12:47.159 Um, well, I mean, um, one rep max. Yeah. 12:47.160 --> 12:48.799 I mean, not in honesty, 12:48.800 --> 12:52.359 I'm not sure about the, like the, like, uh, 12:52.360 --> 12:53.839 extending calc itself. 12:53.840 --> 12:56.799 Like if there's, you know, if like, 12:56.800 --> 12:59.199 what are the ways of extending calc itself, 12:59.200 --> 13:01.999 but this, this package, um, or fit, 13:02.000 --> 13:04.159 I mean, it does have the one rep max. 13:04.160 --> 13:11.199 Like I kind of had to dig into that, like, um, uh, 13:11.200 --> 13:20.079 I can find the code, but yeah, I mean, it does, 13:20.080 --> 13:25.079 I mean, you know, so this is specifically this package, 13:25.080 --> 13:33.039 but yeah, you can use the various one rep max formulas for this. 13:33.040 --> 13:37.159 Extend this clock report. Yes, yeah, exactly. 13:37.160 --> 13:39.199 Graphical reports. These are all something that, 13:39.200 --> 13:43.439 It currently doesn't have, and these nice apps do have. 13:43.440 --> 13:45.399 They have charts of all kinds. 13:45.400 --> 13:48.799 You can see your progress from week to week 13:48.800 --> 13:49.959 on various exercise. 13:49.960 --> 13:54.359 They have like charts galore, all these like fancy apps. 13:54.360 --> 14:00.319 And in theory, it wouldn't be hard at all to like, 14:00.320 --> 14:03.719 cause like, you know, there's a GNU plot. 14:03.720 --> 14:07.119 There's those, and then they have like 14:07.120 --> 14:10.479 very good packages on any of them. 14:10.480 --> 14:13.919 So, I mean, I assume integration would be pretty seamless. 14:13.920 --> 14:16.199 So yes, that is definitely on the list 14:16.200 --> 14:17.759 of things I want to do. 14:17.760 --> 14:21.599 Have you ever wanted to modify 14:21.600 --> 14:23.679 the functionality of your mobile device 14:23.680 --> 14:26.119 while working out any good 14:26.120 --> 14:28.439 or challenging experiences or tips with that? 14:28.440 --> 14:30.759 Yeah, that's actually funny. 14:30.760 --> 14:37.439 There was a time where, yeah, I mean, like debugging, 14:37.440 --> 14:40.999 there was like some bug I was having with my code. 14:41.000 --> 14:44.799 And so I have, in the middle of a workout, 14:44.800 --> 14:48.439 yeah, start, like, open up the debugger and kind of, 14:48.440 --> 14:50.959 and the cool thing is that, I mean, 14:50.960 --> 14:53.079 the biggest thing, like, the biggest thing by far 14:53.080 --> 14:54.599 is unexpected keyboard. 14:54.600 --> 14:56.359 Like, I can't state how, 14:56.360 --> 14:58.439 I don't know how much unexpected keyboard is, 14:58.440 --> 15:01.279 because, like, with unexpected, with the unexpected, 15:01.280 --> 15:03.599 with that keyboard, you can literally just, like, 15:03.600 --> 15:06.159 it's, it's not hard at all to, like, 15:06.160 --> 15:11.159 you can do meta x or uh control meta x 15:11.160 --> 15:13.639 or you know control u control meta x 15:13.640 --> 15:15.959 to like you know debug like you can do all the key bindings 15:15.960 --> 15:18.519 with unexpected keyboard there's so there's no problem 15:18.520 --> 15:20.279 whatsoever whatsoever 15:20.280 --> 15:23.599 with that part the only part is muscle memory like like 15:23.600 --> 15:25.599 it's because you get the muscle memory 15:25.600 --> 15:26.839 of like the emacs key binding 15:26.840 --> 15:28.279 and so you have to kind of like yeah 15:28.280 --> 15:31.639 i mean that translation is actually kind of 15:31.640 --> 15:35.039 you have to think about it like, like, okay, 15:35.040 --> 15:36.559 what was that key binding again? 15:36.560 --> 15:39.559 And you have to kind of like do it with your fingers. 15:39.560 --> 15:41.359 And it was like doing it on the, on Android is, 15:41.360 --> 15:44.199 I mean, it takes a little longer 15:44.200 --> 15:45.439 and it's just a different, yeah, 15:45.440 --> 15:47.079 different set of different muscle memory. 15:47.080 --> 15:51.559 Gotcha. Sorry, if you've covered this, 15:51.560 --> 15:55.439 does the rest timer end with an audible notification? 15:55.440 --> 15:58.199 That's the cool thing. 15:58.200 --> 16:02.519 So with the Emacs, with the Android notification settings, 16:02.520 --> 16:06.159 you can, I can show that again in more detail. 16:06.160 --> 16:17.079 So bonus settings, apps, pick the app, notifications. 16:17.080 --> 16:21.159 And then here we get that Org Fit Restover. 16:21.160 --> 16:22.919 And so here you can set, for example, 16:22.920 --> 16:24.879 whether it's a silent notification. 16:24.880 --> 16:27.959 And so this won't, this won't make it make noise you can do 16:27.960 --> 16:29.559 or like make it have a noise 16:29.560 --> 16:31.679 and so you can have it make sure 16:31.680 --> 16:33.119 it's pop on this way the screen 16:33.120 --> 16:37.039 and then yeah you can just pick you can just pick whatever ringtone you want 16:37.040 --> 16:38.679 and you can make it look like yeah 16:38.680 --> 16:42.559 and then obviously you have like the whole uh volume setting 16:42.560 --> 16:44.559 so you can like when you're when you're uh when you're working 16:44.560 --> 16:50.519 you know you can just set the volume pretty high 16:50.520 --> 16:51.679 so if you set if you do happen 16:51.680 --> 16:55.719 to set your phone kind of away You set the volume high, 16:55.720 --> 16:57.239 maybe make a really annoying sound, 16:57.240 --> 17:00.759 a loud sound you won't miss. And then, yeah, you'll be set. 17:00.760 --> 17:02.159 So that works. 17:02.160 --> 17:04.639 That was actually one of the biggest surprises. 17:04.640 --> 17:08.599 I wasn't expecting that to work so nice. 17:08.600 --> 17:17.279 One of the next question relates to the unexpected keyboard. 17:17.280 --> 17:19.399 Question is, have you tried other keyboards, 17:19.400 --> 17:20.399 such as Hacker's Keyboard? 17:20.400 --> 17:27.119 Not recently. I haven't, so I couldn't compare them. 17:27.120 --> 17:31.359 Fair enough. Another keyboard question. 17:31.360 --> 17:34.399 Have you tried Flickboard on F-Droid? 17:34.400 --> 17:37.959 The commenter says, this is the craziest keyboard. 17:37.960 --> 17:44.559 You use one thumb. Oh, that is interesting. Let me see. 17:44.560 --> 17:48.879 Flickboard. Flickboard. Yeah, I'll have to try that. 17:48.880 --> 17:53.119 I'm curious to get the key bindings done. 17:53.120 --> 17:57.359 I wonder if the key bindings and all that work. 17:57.360 --> 18:01.279 I hope that's interesting. I'll definitely look into that. 18:01.280 --> 18:02.359 So I'll hold on just a moment 18:02.360 --> 18:04.239 as people are typing in more questions. 18:04.240 --> 18:06.759 A good moment to just thank you for the talk. 18:06.760 --> 18:09.719 It's personally, it's one of my favorite things 18:09.720 --> 18:14.559 to see at EmacsConf is, you know, a glimpse into a world 18:14.560 --> 18:17.679 that kind of isn't mine, right? 18:17.680 --> 18:22.799 but it shows how, you know, Emacs is sort of 18:22.800 --> 18:25.999 the bazaar in the cathedral 18:26.000 --> 18:28.439 and bazaar sense of we're all just here 18:28.440 --> 18:31.839 sort of hauling our bags of toys 18:31.840 --> 18:35.679 into the center square and, you know, making a, 18:35.680 --> 18:38.439 you know, I don't know if it's a house of cards 18:38.440 --> 18:40.319 or what exactly it is, 18:40.320 --> 18:43.559 but it, you know, it's managing to keep me afloat personally. 18:43.560 --> 18:47.239 And I just appreciate your, you know, 18:47.240 --> 18:48.519 kind of expanding my world. 18:48.520 --> 18:53.759 It's pretty cool. Yeah, definitely. Yeah, I mean, I agree. 18:53.760 --> 19:01.079 There's a lot of different, yeah. So, next commenter. 19:01.080 --> 19:05.359 I'm curious, oh, sorry, I skipped one here. 19:05.360 --> 19:07.399 This user interface is simplified, 19:07.400 --> 19:09.639 but still keyboard based. 19:09.640 --> 19:11.959 Have you thought about ways to make it more touch-based? 19:11.960 --> 19:16.039 Good question. Yeah, yeah, yeah. 19:16.040 --> 19:19.599 So the only thing currently, I think, 19:19.600 --> 19:22.119 of specific touch-based functionality I have, 19:22.120 --> 19:25.399 which, so this is like, so let's see, 19:25.400 --> 19:37.679 it's Control X, Control Plus, 19:37.680 --> 19:40.159 I think that's the, okay, that wrong, 19:40.160 --> 19:42.959 that key binding wrong, what was it? Okay, whatever. 19:42.960 --> 19:45.559 Yeah, so in terms of touch command, 19:45.560 --> 19:47.839 so pressing on a headline will actually unfold it 19:47.840 --> 19:50.799 and move your cursor to the next field that you, 19:50.800 --> 19:54.639 yeah, so like, yeah, at the beginning of the table. 19:54.640 --> 19:56.959 So like, there's that, yeah, and so. 19:56.960 --> 20:02.399 It sounds like that is something you're thinking about. 20:02.400 --> 20:03.639 Yeah, exactly. 20:03.640 --> 20:05.999 Like, you know, maybe like a little thing at the bottom, 20:06.000 --> 20:09.559 like, so this thing has the, this app has this, 20:09.560 --> 20:10.839 if you notice, like, if you do something, 20:10.840 --> 20:12.479 it has this rest timer at the bottom. 20:12.480 --> 20:14.639 So I mean, it wouldn't be, 20:14.640 --> 20:16.599 it wouldn't be pretty, it wouldn't be, 20:16.600 --> 20:18.799 it seems quite doable to just have like, 20:18.800 --> 20:19.839 maybe something at the bottom, 20:19.840 --> 20:21.319 like for a timer, 20:21.320 --> 20:24.159 and then you can just like plus 15 seconds or cancel it 20:24.160 --> 20:25.239 or, you know, just, 20:25.240 --> 20:27.279 and then those could all be just like touch based. 20:27.280 --> 20:30.559 And so, yeah. And then obviously just like, 20:30.560 --> 20:36.119 just like classic Emacs, the Emacs, 20:36.120 --> 20:43.359 like clicking actions, they just, yeah, 20:43.360 --> 20:44.159 they work just fine. 20:44.160 --> 20:47.439 Like, so there's no like weird Android touch thing 20:47.440 --> 20:48.359 you have to worry about. 20:48.360 --> 20:52.559 So let me ask a question of my own here. 20:52.560 --> 20:57.199 Just thinking about that myself, how would you, you know, 20:57.200 --> 21:00.119 ideally approach that as that you'd most prefer 21:00.120 --> 21:02.879 to sort of dive into yourself? 21:02.880 --> 21:07.919 Or would you think about factoring that out into 21:07.920 --> 21:12.159 like some kind of org touch higher level API or? 21:12.160 --> 21:19.679 Oh, I mean, personally, personally, I mean, I mean, 21:19.680 --> 21:21.279 I think just like the clicking 21:21.280 --> 21:28.279 and just like adding a lambda to it. That works. 21:28.280 --> 21:35.759 I mean, that feels like it works just fine. 21:35.760 --> 21:41.639 And you can add the code, like the command right there. 21:41.640 --> 21:45.439 So it's all like, yeah, it's all, I mean, 21:45.440 --> 21:49.159 and that's kind of a nice thing is like having everything like close, 21:49.160 --> 21:54.159 just like not having those, a lot of layers of abstraction. 21:54.160 --> 22:03.279 It's just like, you have a Lambda to the click and then just do. 22:03.280 --> 22:06.439 Yeah, just do. That was my experience too. 22:06.440 --> 22:09.599 This is a few years several years ago at ENAC's conference, 22:09.600 --> 22:13.079 we were shocked to learn just how usable, 22:13.080 --> 22:18.559 this is echoing a comment I see from Elip Energo on IRC, 22:18.560 --> 22:21.479 who says, touch seems so wildly usable nowadays, 22:21.480 --> 22:22.399 that's so awesome. 22:22.400 --> 22:25.159 And that was really my experience too with Dungeon. 22:25.160 --> 22:28.719 We were just working on it, we got the fog of war going, 22:28.720 --> 22:32.439 and then just took it onto a touchscreen laptop at the time, 22:32.440 --> 22:33.959 and we're just shocked to learn, 22:33.960 --> 22:37.479 you know, everything just worked. Yeah. 22:37.480 --> 22:38.639 Maybe like the hardest thing 22:38.640 --> 22:40.559 is actually just the default font size. 22:40.560 --> 22:42.559 You know, you have to like, you can't, 22:42.560 --> 22:44.279 you can't have your font too small or you'll, 22:44.280 --> 22:46.319 you'll like, you'll touch, you'll, 22:46.320 --> 22:48.279 you'll miss touch things a lot. Yeah. 22:48.280 --> 22:50.159 Well, there's no font size 22:50.160 --> 22:52.999 large enough to make me, you know, 22:53.000 --> 22:58.159 to make me comfortable on a smart device, unfortunately. 22:58.160 --> 23:00.599 But, but that, I think it may be a me problem. 23:00.600 --> 23:04.439 I think this question we might've missed. So the file sync. 23:04.440 --> 23:12.679 Yeah, so the file sync in terms of what's worked for me, 23:12.680 --> 23:14.039 I did have to play around with this a lot. 23:14.040 --> 23:15.999 Let me go ahead and read it out. 23:16.000 --> 23:18.519 You mentioned file sync, what have you found works well for you? 23:18.520 --> 23:21.319 Sorry. Yeah, yeah, yeah. 23:21.320 --> 23:25.319 So in terms of what, yeah, I did have to play around with this a lot, 23:25.320 --> 23:28.639 but sync thing fork is what I eventually settled on. 23:28.640 --> 23:34.959 I mean, this is another thing that, I mean, I don't, 23:34.960 --> 23:36.319 it wouldn't nearly be as usable, 23:36.320 --> 23:39.679 like Emacs wouldn't be nearly usable without it. 23:39.680 --> 23:41.319 So syncing fork essentially, okay. 23:41.320 --> 23:44.559 And then I also have like a droplet on DigitalOcean, 23:44.560 --> 23:47.399 just like, so that's kind of like the whole, 23:47.400 --> 23:49.879 that's kind of like what bridges it together. 23:49.880 --> 23:52.519 So like, so my Emacs can sync to that, 23:52.520 --> 23:56.559 and then my machine also syncs to that. 23:56.560 --> 24:00.719 And so like, I don't have to have them 24:00.720 --> 24:06.359 both on the same time. It's just there, that copy. 24:06.360 --> 24:09.599 And so that works pretty well. 24:09.600 --> 24:13.559 I also found that editing code in general, 24:13.560 --> 24:15.359 I think this also goes 24:15.360 --> 24:19.919 with the development experience question. 24:19.920 --> 24:22.639 So I'm curious about the development experience. 24:22.640 --> 24:24.639 Do you do everything on the phone? And that's the thing. 24:24.640 --> 24:27.119 None of my development in general is done on the phone. 24:27.120 --> 24:32.439 just because, for one, my muscle memory isn't there, 24:32.440 --> 24:38.399 and two, just in general, typing on a virtual keyboard on the phone, 24:38.400 --> 24:40.119 it's just really slow. 24:40.120 --> 24:47.159 So yeah, all the development is done on my machine, 24:47.160 --> 24:52.119 but then there's the problem of you have to have an init.l in your Android, 24:52.120 --> 24:55.159 and so you're going to have to write, you know, 24:55.160 --> 24:56.919 I found like you'd have to like, 24:56.920 --> 24:58.279 when you first get Emacs set up, 24:58.280 --> 25:01.239 you might have to like write some, I don't know, 25:01.240 --> 25:03.959 like you'll kind of have to like get into your init file 25:03.960 --> 25:04.479 and then just like, 25:04.480 --> 25:06.999 maybe just like start to put things together. 25:07.000 --> 25:09.759 But the cool thing is with SyncThinkFork, 25:09.760 --> 25:15.519 I'm syncing my, I'm setting it to load off of a sync directory. 25:15.520 --> 25:18.559 Like this, this init file, 25:18.560 --> 25:21.159 my Android file is synced with my machine. 25:21.160 --> 25:24.319 So if I wanted to, I could just edit it on my machine 25:24.320 --> 25:25.879 and just have that synced automatically. 25:25.880 --> 25:28.839 So that makes like the whole, like in it, 25:28.840 --> 25:31.879 cause like it's, it's such a, like, that is one of the, 25:31.880 --> 25:33.079 it's just like getting, 25:33.080 --> 25:36.879 sit writing your init L and M in Emacs on Android 25:36.880 --> 25:37.839 is just kind of a. 25:37.840 --> 25:39.359 We do have one more question. 25:39.360 --> 25:41.479 I can't help but throw in a comment there. 25:41.480 --> 25:43.759 I think that's like. 25:43.760 --> 25:47.519 That's an extremely good tip, right? 25:47.520 --> 25:49.959 That if we're, as we're exploring Android, 25:49.960 --> 25:52.839 we want to think about that as 25:52.840 --> 25:55.759 adding support for another port of Emacs. 25:55.760 --> 25:58.959 So the whole dance of, oh, I took, you know, 25:58.960 --> 26:01.239 I took, you know, I took my init 26:01.240 --> 26:04.479 and I wanted to use it on BSD 26:04.480 --> 26:06.439 after mostly using GNU Linux. 26:06.440 --> 26:09.119 Now we're going in and we're looking at our Emacs. 26:09.120 --> 26:11.279 all of our Emacs and it stuff 26:11.280 --> 26:13.839 and thinking about compatibility, 26:13.840 --> 26:15.199 turning features on and off 26:15.200 --> 26:19.959 based on the OS that we're running underneath and so on. 26:19.960 --> 26:22.119 I think that's pretty heads up advice. 26:22.120 --> 26:24.759 Let me read out this other question. 26:24.760 --> 26:28.199 Have you thought about integrating cardio tracking 26:28.200 --> 26:30.559 like time runs, bike rides, and so on? 26:30.560 --> 26:34.319 Yes, I definitely thought about that. 26:34.320 --> 26:36.599 And that might be another thing 26:36.600 --> 26:38.479 where a touch interface might be helpful. 26:38.480 --> 26:41.559 I don't know if I can easily pull it up, 26:41.560 --> 26:47.199 but the app itself, oh yeah, here it is. 26:47.200 --> 26:50.199 So you can see kind of how they have, 26:50.200 --> 26:53.279 and you can kind of see how this fits. 26:53.280 --> 26:55.119 This is like an org, you can see 26:55.120 --> 26:57.399 that these are just tables, right? 26:57.400 --> 26:59.239 This is just like this whole interface in general, 26:59.240 --> 27:02.279 just like kind of screams like an org mode, 27:02.280 --> 27:05.119 file with you have you have your different headings 27:05.120 --> 27:06.559 like here's a warm-up heading 27:06.560 --> 27:07.839 and then you have the tables 27:07.840 --> 27:09.879 and you know you could just like envision 27:09.880 --> 27:12.839 how you could have a org table 27:12.840 --> 27:15.039 with one of the columns called time 27:15.040 --> 27:18.439 and then you could just imagine like there'd be a button there 27:18.440 --> 27:21.159 and you can just just have it click, 27:21.160 --> 27:24.279 and then you'd have a timer in the background 27:24.280 --> 27:25.799 that would update this timer. 27:25.800 --> 27:32.599 It's so, I mean, conceptually, there's nothing really, 27:32.600 --> 27:35.799 it conceptually maps really well to this. 27:35.800 --> 27:41.559 So yeah, I mean, that's definitely something. 27:41.560 --> 27:44.439 That's awesome. Great answer. 27:44.440 --> 27:47.759 So I think we're just at about 90 seconds left. 27:47.760 --> 27:50.119 Perfect amount of time, I think, to just wrap up. 27:50.120 --> 27:52.199 Closing thoughts. I'll share mine first. 27:52.200 --> 27:53.759 Really appreciate you, Zach. 27:53.760 --> 27:56.639 Thank you for putting this talk together. 27:56.640 --> 27:59.359 I think this is the type of talk 27:59.360 --> 28:01.239 that's really going to tie the room together 28:01.240 --> 28:07.559 for people that may be, you know, not sure how they can take 28:07.560 --> 28:12.719 although they've been interested in that, 28:12.720 --> 28:16.399 this can be a really good way to kind of open up the world. 28:16.400 --> 28:20.319 Thank you. Thank you for putting it together. 28:20.320 --> 28:22.439 Yeah, yeah, yeah, yeah, I would just say 28:22.440 --> 28:24.159 like definitely just try things out. 28:24.160 --> 28:25.359 Like if you think, you know, 28:25.360 --> 28:26.439 they're just like random ideas, 28:26.440 --> 28:30.319 like a book tracking app or like a recipe app, 28:30.320 --> 28:33.479 like, you know, there's a lot of things 28:33.480 --> 28:35.599 that you do on your mobile device 28:35.600 --> 28:37.719 that aren't like banking apps that you could easily, 28:37.720 --> 28:39.759 that seem like they could be done in Emacs. 28:39.760 --> 28:42.479 So yeah, just try different things out 28:42.480 --> 28:47.239 and I would love to hear what other people do. Bravo. 28:47.240 --> 28:52.519 I appreciate it once again, you're coming together 28:52.520 --> 28:56.639 and especially you're doing it live. 28:56.640 --> 29:00.079 I know that as a conference, we have a lot of preference 29:00.080 --> 29:01.479 for those recorded talks 29:01.480 --> 29:02.759 and getting the captioning together, 29:02.760 --> 29:05.319 but I just have a special place in my heart 29:05.320 --> 29:07.679 for the energy that comes with a live talk 29:07.680 --> 29:12.560 and I appreciate you doing it. Thanks for putting this on.