summaryrefslogtreecommitdiffstats
path: root/2023/talks/eat.md
diff options
context:
space:
mode:
Diffstat (limited to '2023/talks/eat.md')
-rw-r--r--2023/talks/eat.md141
1 files changed, 141 insertions, 0 deletions
diff --git a/2023/talks/eat.md b/2023/talks/eat.md
new file mode 100644
index 00000000..bd548153
--- /dev/null
+++ b/2023/talks/eat.md
@@ -0,0 +1,141 @@
+[[!meta title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs"]]
+[[!meta copyright="Copyright © 2023 Akib Azmain Turja"]]
+[[!inline pages="internal(2023/info/eat-nav)" raw="yes"]]
+
+<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
+<!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+
+# Eat and Eat powered Eshell, fast featureful terminal inside Emacs
+Akib Azmain Turja (he/him) - IRC: akib, <https://akib.codeberg.page>
+Fediverse: akib@hostux.social, <mailto:akib@disroot.org>
+
+[[!inline pages="internal(2023/info/eat-before)" raw="yes"]]
+
+Eat is a terminal emulator for Emacs, written in pure Emacs Lisp. It
+can run most (if not all) terminal programs. Despite being implemented
+in Emacs Lisp, it is fast enough for day-to-day uses.
+
+In this talk, I'll give an overview of Eat, its features and
+configuration. I'll show the most useful features and the features that
+make Eat unique (e.g. shell integration, mouse tracking, Sixel support).
+(This may include features that hasn't been implemented yet but will be
+implemented and stable enough by the time of the recording of the talk.)
+Most of the features require no configuration to use, but are
+configurable with user options. I'll also show the most useful
+customization options available that users may want to customize or
+tinker with.
+
+Thanks to the architecture of Eat, Eat can emulate terminal within any
+region of a buffer. Therefore, Eat can be integrated with Eshell. I'll
+show how to integrate Eat with Eshell, and the useful Eshell-specific
+features and configuration.
+
+Then, I'll compare Eat with other terminal emulators available for
+Emacs, and I'll show which feature that Eat has but the other doesn't,
+and which feature Eat lacks. I'll show why Eat is good or bad for some
+users/use cases. For example, why Shell mode users may prefer Coterm (a
+terminal emulator for Comint) over Eat, why Eat is better Term mode in
+the most cases, or why Vterm should be prefered for huge bursts of
+outputs, etc.
+
+Then I'll give pointers to the documentation available like the Info
+manual or README and what they contain. And I'll also discuss what to
+do when you hit a problem. I'll discuss about the common problems or
+misconfiguration, and also discuss where and how to report bugs
+properly. I won't go into much details in this part, since the manual
+covers this topic completely, and the users are expected to not
+encounter problems.
+
+Then I'll discuss the future plans of the project. And finally, I'll
+conclude the talk with a summary of the whole talk.
+
+Outline:
+
+- Introduction: What's Eat and why?
+- Installing Eat from NonGNU ELPA
+- Demonstrating Eat's features and configuring them
+- Eshell integration
+- Comparison with other terminal emulators
+- Shortcomings and common (fixable) problems
+- Future plans
+- Conclusion
+
+
+# Discussion
+
+## Questions and answers
+
+- Q: Have you thought about upstreaming EAT?
+ - A: Yes, but I haven't yet completed the copyright paperwork.
+ - S: Look into it, I think it would be great to have a better
+ implementation of a terminal OOTB!
+- Q: Very impressive!  What lessons did you learn while developing
+ EAT?
+ - A:I learned how to optimize Elisp code, and also how terminals
+ work actually.  And also process handling in Elisp.
+- Q: How long did it take you to develop EAT to this point?
+ - A:It took around 5 months to make it working at bare minimum.
+ - Q: Did you have any experience with terminal emulation
+ before working on EAT?
+ - A:Not much really.  I mean I knew how terminals worked
+ but I didn't know the escape sequences.
+- Q:Impressive work; I look forward to trying it.  What did you want
+ that Vterm did not provide?  I think I'll try it today.
+ - A:The keybindings, specially.  And also I wanted Eshell terminal
+ emulation.
+- Q: Is Elisp native-compilation what allows EAT to peform as well as
+ or better than Vterm, or is EAT even that fast with just
+ byte-compilation?
+ - A:I use native-compilation.  But Eat is still quite a few times
+ faster than Term mode when byte-compiled.
+- Q: Should it work on Emacs 28.1?
+ - A:Yes.
+- Q: What does EAT do differently than other terminal emulators that
+ allows it to perform so well?
+ - A:I don't really know quite clearly.  At the time I implemented
+ the main code, I had plenty of time.  I did profiling and tried
+ various implementations to do the same thing.
+- Q: what sparked your interest in Emacs, considering its often
+ perceived as outdated, and how do its powerful capabilities remain
+ relevant today?
+ - A: First of all, it's free software, I have the freedom.  And
+ the IDEs I used to use were resource hogs, so needed something
+ lightweight.  And, after I started using Emacs, I discovered how
+ powerful it actually is.  Emacs is itself a programming
+ platform, so you can make literally anything with it.
+- Q: have you thought about making EAT work with shell-mode?
+ - A: Yes, I have considered integrating with shell-mode/Comint but
+ it doesn't work, they need the terminal text to be mutable and
+ Eat doesn't support that.  So I have implemented "line mode,"
+ an input mode similar to shell-mode.
+- Q: did the talk show how to show sixel?
+
+## Notes
+
+- I found out about EAT a while ago and was excited to find out that
+ it works so well! Thank you for your great work!
+- akib, truly impressive!
+- :clap::clap::clap::clap::clap::clap:
+- ¡Muy bueno!
+- I use eat, and I have almost replace terminal (bash/zsh) with eshell paired with eat
+- i use eat but i don't really have anything to say cuz i don't use the CLI nearly as much anymore since learning more emacs stuff. but i still think eat is awesome cuz it is really fast for when i do need it
+- I'll be looking into eat more, thanks for the talk!
+- demonstrating sixels would have been a surprise for some...
+- eat is very easy to try out compared to vterm since there's no foreign code involved
+- I was stunned at how fast eat is!
+- even without native-comp, it's pretty fast
+- eat is the apple equivalent of terminal emulators in emacs: It just works! ;)
+- best of both world is, eshell paired with eat
+- <http://yeti.freeshell.org/tmp/20231203-155213__emacs_eshell_eat__showing_xkcd_378_via_sixels.png>
+ - I usd img2sixel wnd some awk glue
+ - imagemagick can also convert to sixel
+- you're the one who helped me with eat and the dumb term line for .zshrc so ty!
+- speaker: yes, i have considering integrating with shell-mode/comint but it doesn't work, they need the terminal text to be mutable and eat doesn't support that so i have implemented "line mode," input mode similar to shell mode
+
+
+[[!inline pages="internal(2023/info/eat-after)" raw="yes"]]
+
+[[!inline pages="internal(2023/info/eat-nav)" raw="yes"]]
+
+