diff options
Diffstat (limited to '2024/talks')
-rw-r--r-- | 2024/talks/blee.md | 46 | ||||
-rw-r--r-- | 2024/talks/emacs30.md | 21 | ||||
-rw-r--r-- | 2024/talks/gypsum.md | 281 | ||||
-rw-r--r-- | 2024/talks/org-update.md | 21 |
4 files changed, 352 insertions, 17 deletions
diff --git a/2024/talks/blee.md b/2024/talks/blee.md index 5bee1b49..971c2af0 100644 --- a/2024/talks/blee.md +++ b/2024/talks/blee.md @@ -1,4 +1,4 @@ -[[!meta title="About Blee: towards an integrated Emacs environment for enveloping our own autonomy directed digital ecosystem"]] +[[!meta title="About Blee: enveloping our own autonomy directed digital ecosystem"]] [[!meta copyright="Copyright © 2024 Mohsen BANAN"]] [[!inline pages="internal(2024/info/blee-nav)" raw="yes"]] @@ -6,7 +6,7 @@ <!-- You can manually edit this file to update the abstract, add links, etc. ---> -# About Blee: towards an integrated Emacs environment for enveloping our own autonomy directed digital ecosystem +# About Blee: enveloping our own autonomy directed digital ecosystem Mohsen BANAN (he/him) - Pronunciation: MO-HH-SS-EN [[!inline pages="internal(2024/info/blee-before)" raw="yes"]] @@ -26,11 +26,7 @@ is Emacs-centric, Blee is digital ecosystem-centric. To further elucidate Blee, let’s break down the subtitle of this presentation: -"Towards an Integrated Emacs Environment for Enveloping Our Own -Autonomy Directed Digital Ecosystem." - -- **"Towards":** Blee is an ever-evolving, organic, and ongoing project — just - like Emacs itself. +"Enveloping Our Own Autonomy Directed Digital Ecosystem With Emacs." - **"Enveloping":** Blee is designed to fully integrate and encapsulate usage of an entire digital ecosystem. @@ -48,15 +44,32 @@ redecentralization of internet application services. Some might dismiss ByStar as an ambitious, utopian vision. In response, I’ve authored a book titled: -Nature of Polyexistentials: -Basis for Abolishment of the Western Intellectual Property Rights Regime -And Introduction of the Libre-Halaal ByStar Digital Ecosystem +------------------------------------------------------------------------ + +<!-- <img align="right" height="230" src="https://github.com/mohsenBanan/mohsenBanan/blob/main/images/frontCover-1.jpg"> --> + +<p align="center"><font size="+3"><b>Nature of Polyexistentials:</font></b></p> + +<p align="center"><b>Basis for Abolishment of the Western Intellectual Property Rights Regime</b></p> + +<p align="center"><b>And Introduction of the Libre-Halaal ByStar Digital Ecosystem</b></p> + + +<p align="left">On Line:   <a href="https://github.com/bxplpc/120033">PLPC-120033 at Github</a> -- <a href="https://doi.org/10.5281/zenodo.8003846">DOI </a> + --- PDF: <a href="https://github.com/bxplpc/120033/blob/main/pdf/c-120033-1_05-book-8.5x11-col-emb-pub.pdf">8.5x11</a> -- + <a href="https://github.com/bxplpc/120033/blob/main/pdf/c-120033-1_05-book-a4-col-emb-pub.pdf">A4</a> +<br> +US Edition Book Prints At Amazon:   <a href="https://www.amazon.com/dp/1960957015"> US </a> -- <a href="https://www.amazon.fr/dp/1960957015"> France </a> -- <a href="https://www.amazon.co.uk/dp/1960957015"> UK </a> -- <a href="https://www.amazon.co.jp/dp/1960957015"> Japan </a> +  (424 pages --- 6 x 0.96 x 9 inches) +<br> +International Edition Book Prints:   <a href="https://jangal.com/fa/product/252689/nature-of-polyexistentials"> Iran (Jangal Publishers) </a> +  (406 pages --- 23.5 x 16.5 cm) +</p> +<p align="left">Comments, Feedback:   +<a href="mailto:plpc-120033@mohsen.1.banan.byname.net">plpc-120033@mohsen.1.banan.byname.net</a> +</p> -- On Line US Edition: <https://github.com/bxplpc/120033> -- On Line International Edition: <https://github.com/bxplpc/120074> -- DOI: <https://doi.org/10.5281/zenodo.8003846> -- US Edition Book Prints At Amazon: > -- International Edition Book Prints in Iran: <https://jangal.com/fa/product/252689/nature-of-polyexistentials> +------------------------------------------------------------------------ Blee and Emacs are integral parts of ByStar. @@ -117,7 +130,8 @@ OS) and Blee (ByStar Libre Emacs Environment). Central to his presentation is the positioning of Emacs, as the core of Blee. -See also: <https://emacsconf.org/2021/talks/bidi> +Previous Talks: <https://emacsconf.org/2021/talks/bidi> and + <https://emacsconf.org/2022/talks/mail> [[!inline pages="internal(2024/info/blee-after)" raw="yes"]] diff --git a/2024/talks/emacs30.md b/2024/talks/emacs30.md new file mode 100644 index 00000000..20a163e1 --- /dev/null +++ b/2024/talks/emacs30.md @@ -0,0 +1,21 @@ +[[!meta title="Emacs 30 Highlights"]] +[[!meta copyright="Copyright © 2024 Philip Kaludercic"]] +[[!inline pages="internal(2024/info/emacs30-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. ---> + + +# Emacs 30 Highlights +Philip Kaludercic + +[[!inline pages="internal(2024/info/emacs30-before)" raw="yes"]] + + + + +[[!inline pages="internal(2024/info/emacs30-after)" raw="yes"]] + +[[!inline pages="internal(2024/info/emacs30-nav)" raw="yes"]] + + diff --git a/2024/talks/gypsum.md b/2024/talks/gypsum.md index 02888492..3ee5a75a 100644 --- a/2024/talks/gypsum.md +++ b/2024/talks/gypsum.md @@ -7,10 +7,289 @@ # Gypsum: my clone of Emacs and ELisp written in Scheme -Ramin Honary (he/him) - <mailto:ramin.honary@gmail.com> +Ramin Honary (he/him) + + - E-mail: <mailto:ramin.honary@gmail.com> + - ActivityPub: @ramin_hal9001@fe.disroot.org + - Website: <https://tilde.town/~ramin_hal9001> [[!inline pages="internal(2024/info/gypsum-before)" raw="yes"]] +## Slides + +### Introduction + +1. Ramin Honary + + - Emacs enthusiast since 2017 + + - Software developer (full stack) + + - I love Haskell, Scheme, functional programming + + - Started learning Scheme about 2 years ago + +2. My project: an Emacs Clone + + - Tentative name: "Gypsum" + - Its not a great name, open to suggestions. + +### Goal: to Clone **Emacs Lisp** + +- Many clones already: + + - Edwin, Jed, jEdit, Jove, Lem, MG, Yi, Zile + +- These only clone the key bindings, not Elisp + +- Only XEmacs (a fork of GNU Emacs) provided an alternative Emacs Lisp + +### Most people don't use Emacs for the keybindings + +- Anecodtal, but yes really. + +- Use Emacs because of the power of Emacs Lisp + +- Emacs is as powerful as a system shell + +- A good language is what makes it powerful + +### Goal: use R7RS Standard Scheme + +- I want it to work on a many Scheme implementations + +- Guile is the reference implementation + +- (more about this later) + +### Goal: able to run any `init.el` + +- Should be able to use `init.el` without significant changes + +- Many invest significant time in their configs + +- Suddenly not having your config is disruptive + +- Such an Emacs clone would be more useful + +### Why do this? + +- I personally like Scheme's minimalism. + +- Use Scheme as more than just an academic language. + +- Seems to be a lot of interest in a project like this. + +- Talk of "Guile Emacs" for about 30 years + +### A long history of Guile Emacs (1/3) + +- **Early 90s**: Initial discussion between RMS, Tom Lord, + Aubrey Jaffer, begin work on replacing Emacs Lisp with Scheme. + +- **1999--2009**: Ken Raeburn's [Guile-Based Emacs](https://www.mit.edu/~raeburn/guilemacs/). + (My project is similar.) + + > "*This project that I (Ken Raeburn) have started is for converting* + > *GNU Emacs to use Guile as its programming language. Support for* + > *Emacs Lisp will continue to exist, of course, but it may be* + > *through translation and/or interpretation; the Lisp engine itself* + > *may no longer be the core of the program.*" + +### A long history of Guile Emacs (2/3) + +- **2010**: Andy Wingo and Ludovic Courtes + take maintainership of Guile project. + +- **2009--2011**: Emacs Lisp interpreter implemented in Guile. + Still ships with Guile. + +- **2011**: Guile 2.0 is released + +- **2011--2015**: Robin Templeton's GSoC project. + (Is presenting later today!) + +### A long history of Guile Emacs (3/3) + +- **2020**: Vasilij Schneidermann published an overview called + "[The State of Emacs Lisp on Guile](https://emacsninja.com/posts/state-of-emacs-lisp-on-guile.html)". + +- **2020 to present**: Guile Emacs is dead? Andrea Corallo, GCC Emacs, + JIT-compiler for Emacs Lisp based on "libgccjit", brings into + question any need for combining Guile with Emacs. + +### Demo + +### GUI is barely working + +- I have almost no experience with Gtk or GObject Introspection + +- Hard to debug, crashes at C-level produce no stack traces + +- Using GDB requires rebuilding all of Gtk, GIO, GLib, etc. + +### Emacs Lisp parser based on Guile Emacs Lisp + +- Foked the Guile Emacs Lisp implementation for easier development + +- Have already submitted a patch to the parser upstream + +### Emacs Lisp interpter is barely working + +- Implementing my own interpreter in portable Scheme + +- Monadic pattern matcher + +### Can parse but not interpret "`subr.el`" + +- "`subr.el`" is the first ELisp file run by Emacs + +- A good way to determine what to work on first + +### A call for help + +### Latest Emacs has **1,393** built-in functions + +- I could never implement that many functions alone + +- Probably not all are required to create a useful editor + +### My job is to make contributing easy + +- Document the build and test process + +- Document the system architecture + +- Prioritize which built-in functions are most essential + +- Find low-hanging fruit, use as means to teach others + +### The work for which I will take responsibility + +- Clone enough Elisp to be able to run ERT tests + +- Then use GNU Emacs's own regression tests to test patches + +- Make sure there is a usable GUI + +- (Someday?) be able to contribute a patch from within + +### Quick architectural overview + +### The editor is based in Scheme, not Emacs Lisp + +- Config, scripting, packages all done in Scheme + +- Use of Emacs Lisp for scripting not encouraged + +- Should still be able to run your `init.el` + +- Ideally should be able to run ELPA packages + +### Difference with Robin Templeton's project + +- Guile-Emacs links Guile runtime into Emacs + +- Not a Scheme application + +- An IDE for Schemers + +### Emacs Lisp is an "environment" + +- "Environments" are a feature of Scheme + +- Scheme procedures can be called from Emacs Lisp + +- Scheme state can be mutated by Emacs Lisp + +- (See "`./gypsum/elisp-eval.scm`", "`new-env`") + +### "Functional Lenses" + +- Because R7RS does not standardize MOP (not even in "large") + +- Inspired by Haskell + +- Composes getters and setters + +- Single source file, easy to port + +- Ported to 3 other Schemes + +### A lot of work went into keymaps data structure + +- Keybindings are an important part of Emacs + +- Had to do this well from very beginning + +- Keybindings work correctly in demo + +### A lot of work went into separating GUI from Editor logic + +- "Parameters" are a feature of Scheme + +- Platform-specific APIs are always parameterized + + - Windowing and widgets + + - Translate key events to bindings + + - Evaluating Scheme expressions + + - Text buffering and rendering + +- (See "`./gypsum/editor-impl.scm`") + +### Monadic pattern matching + +- Simpler, more portable + +- (Not as feature-rich) + +- Easier than porting SRFI-241 ("Match") to Guile + +- No relation to SRFI-247 ("Syntatic Monads") + +- You can still use pattern matching + +### Monad pattern matching + +Example program + + + (define push-stack (put-with cons)) + (define collatz + (many + push-stack + (either + (try (check (λ (n) (<= n 1))) + (success)) + (try (check odd?) + (next (λ (n) (+ 1 (* 3 n))))) + (try (check even?) + (next (λ (n) (quotient n 2)))) + (fail "not an integer") + ))) + +### Conclusion + +- I am just getting the ball rolling + +- Helping others contribute is my top priority + +- ActivityPub :: `ramin_hal9001@fe.disroot.org` + +- E-mail :: <span class="spurious-link" + target="ramin.honary@gmail.com">*ramin.honary@gmail.com*</span> + +- Homepage :: <https://tilde.town/~ramin_hal9001> + +- Codeberg :: <https://codeberg.org/ramin_hal9001> + +- This presentation :: <https://emacsconf.org/2024/talks/gypsum/> + + +## Original presentation proposal I would like to demonstrate an Emacs clone I have been writing in Guile Scheme for the past year, which I am tentatively calling "Gypsum". Unlike other editors which diff --git a/2024/talks/org-update.md b/2024/talks/org-update.md new file mode 100644 index 00000000..6141f4f0 --- /dev/null +++ b/2024/talks/org-update.md @@ -0,0 +1,21 @@ +[[!meta title="Updates on Org Mode maintenance"]] +[[!meta copyright="Copyright © 2024 Ihor Radchenko and Bastien Guerry"]] +[[!inline pages="internal(2024/info/org-update-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. ---> + + +# The Future of Org +Ihor Radchenko and Bastien Guerry + +[[!inline pages="internal(2024/info/org-update-before)" raw="yes"]] + + + + +[[!inline pages="internal(2024/info/org-update-after)" raw="yes"]] + +[[!inline pages="internal(2024/info/org-update-nav)" raw="yes"]] + + |