diff options
| author | Sacha Chua <sacha@sachachua.com> | 2026-10-17 19:48:59 -0400 |
|---|---|---|
| committer | Sacha Chua <sacha@sachachua.com> | 2026-10-17 19:49:05 -0400 |
| commit | bce44a1ff46f6ef57457fcb514ee68cf3f34f7db (patch) | |
| tree | b638b1e0704e6fed3cc39a05505aabf22fdc948c /2026/talks | |
| parent | eb63f9d719b738618803b9e2675ebc6d703030e1 (diff) | |
| download | emacsconf-wiki-bce44a1ff46f6ef57457fcb514ee68cf3f34f7db.tar.xz emacsconf-wiki-bce44a1ff46f6ef57457fcb514ee68cf3f34f7db.zip | |
add guile
Diffstat (limited to '2026/talks')
| -rw-r--r-- | 2026/talks/guile.md | 71 | ||||
| -rw-r--r-- | 2026/talks/nil.md | 21 |
2 files changed, 92 insertions, 0 deletions
diff --git a/2026/talks/guile.md b/2026/talks/guile.md new file mode 100644 index 00000000..6e84f52c --- /dev/null +++ b/2026/talks/guile.md @@ -0,0 +1,71 @@ +[[!meta title="æmacs: having a hoot with a guile emacs"]] +[[!meta copyright="Copyright © 2026 Akira Kyle"]] +[[!inline pages="internal(2026/info/guile-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. ---> + + +# æmacs: having a hoot with a guile emacs +Akira Kyle (he/him) - <https://akirakyle.com/> , @akira.social on bsky, @akyle@mathstodon.xyz on fediverse, <mailto:akira@akirakyle.com> + +[[!inline pages="internal(2026/info/guile-before)" raw="yes"]] + +I spend most of my computing time split between two programs: Emacs and a +web browser, and only one of them sparks joy. That's what drove my +pandemic project, emacs-webkit, which put a browser inside pgtk Emacs. I +came away thinking the more emacs-y design would be the other way around: +an emacs that lives within the web platform. I've since tried starting on +it more times than I'd like to admit, from attempting to rebase the +original guile-emacs, to deleting as much C as I could get away with, to +compiling Emacs with emscripten. Each attempt left me better +understanding how GNU Emacs became *the* emacs, but the human-hours +needed to disentangle, let alone port, the [horrors](https://emacshorrors.com/) from the depths of `src/` haunted +my dreams. + +Meanwhile, pieces of this puzzle of bringing emacs 2 da web +started falling into place. In 2023 the Spritely Institute announced +Hoot: compiling Guile Scheme to WebAssembly with Wasm GC. Then at +EmacsConf 2024, Robin Templeton announced the revival of the OG Guile +Emacs, building on work by Larry Valkama (lyrra), who successfully +rebased the decade-old branch onto GNU Emacs 31. Finally, LLM agents +started seemingly autonomously coding compilers from scratch. With +human-hours apparently no longer a barrier, why not try? After all, if +the web is evolving toward a polyglot wasm environment, it ought to have +an emacs! I'd either find out the limits of agentic coding, or end up +with my "perfect emacs" (a win-win, or so I thought). + +æmacs is the +result: my apologetically vibe-coded step towards that idea. The æmacs +frontend is implemented in Guile, compiled to wasm with Hoot, and renders +the UI in a webview. The backend is my fork of lyrra's exploratory +"guilemacs" branch, which, after a year of slogging through slop, is now +a pure Guile Scheme implementation of Emacs Lisp: no C `src/` horrors +remain! All state lives in this backend, which talks to a frontend over a +sexp websocket protocol, letting the UI render on a different machine. +Perhaps someday, Hoot may compile guilemacs itself for the browser. + +æmacs/guilemacs breaks with full GNU Emacs compatibility (e.g. unicode +only), but loads most of Emacs' lisp/ unmodified, plus packages like +org-mode and magit. Focusing on bootstrapping myself into æmacs as my +main editor has kept the scope somewhat sane. But bootstrapping an editor +with LLMs inevitably led to bootstrapping a coding harness into it too. +gptel-agent allowed me to retreat from Claude Code's we-know-best, +one-size-fits-all TUI back into the zen of an emacs' diy kitchen sink, +and vibe code æmacs inside æmacs. + +That's how I got what I've wanted since +I started using Emacs: smooth, continuous, inertial scrolling, not just +through org-mode buffers full of images, but through PDFs with aemacs-pdf +and web pages with aemacs-webkit. Doing this takes hacks in GNU Emacs, +but no disrespect, emacs is built for hacking. Unfortunately, while LLMs +never tire of hacking, I do. The limits I found were my own, but at least +æmacs is now my imperfect emacs. + + + +[[!inline pages="internal(2026/info/guile-after)" raw="yes"]] + +[[!inline pages="internal(2026/info/guile-nav)" raw="yes"]] + + diff --git a/2026/talks/nil.md b/2026/talks/nil.md new file mode 100644 index 00000000..e6215ad7 --- /dev/null +++ b/2026/talks/nil.md @@ -0,0 +1,21 @@ +[[!meta title="Draft schedule"]] +[[!meta copyright="Copyright © 2026 ${speakers}"]] +[[!inline pages="internal(2026/info/${slug}-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. ---> + + +# Draft schedule + + +[[!inline pages="internal(2026/info/${slug}-before)" raw="yes"]] + + + + +[[!inline pages="internal(2026/info/${slug}-after)" raw="yes"]] + +[[!inline pages="internal(2026/info/${slug}-nav)" raw="yes"]] + + |
