20211108192506emacsconf2021EmacsConf 20212021-11-272021-11-28America/Torontohttps://emacsconf.org/20212021-11-27T14:00:00Z09:00enMainTalkemacsconf-2021-talk-day1-open0:05Opening remarksTimes are approximate and will probably change.
# Opening remarkshttps://emacsconf.org/2021/talks/day1-openEmacsConf2021-11-27T14:05:00Z09:05enMainTalkemacsconf-2021-talk-news0:05Emacs News HighlightsTimes are approximate and will probably change.
# Emacs News Highlights
Sacha Chua <mailto:sacha@sachachua.com> - pronouns: she/her
Quick overview of Emacs community highlights since the last conference
You can find the links and images at
<https://github.com/sachac/emacsconf-2021-emacs-news-highlights>
Posting the video early to help test formatting.
# Questions, answers, and community-provided links
<a name="transcript"></a>
# Transcripthttps://emacsconf.org/2021/talks/newsSacha Chua2021-11-27T14:11:00Z09:11enMainTalkemacsconf-2021-talk-frownies0:20The True Frownies are the Friends We Made Along the Way: An Anecdote of Emacs's MalleabilityTimes are approximate and will probably change.
# The True Frownies are the Friends We Made Along the Way: An Anecdote of Emacs's Malleability
Case Duckworth
Emacs is well-known for being extremely flexible, programmable, and
extensible; in fact, that's probably the biggest reason it's still
being used after 40+ years of existence, and even has enough clout to
generate an entire conference in its name. In this medium-length
presentation, I will add another point to the data set proving Emacs's
abilities, by narrating the latest package I made, \`frowny.el\`, from
its conception to its current, nearly-completed state.
I wrote frowny.el to scratch someone else's itch as a joke on IRC, but
it has been called "pretty useful, for a joke package." I feel like
that encapsulates the spirit of Emacs and that's why I want to present
on this topic.
Along the way, I'll discuss just a little of my own history of Emacs,
and why I feel it's a great tool for non-technical users to sink their
teeth into.https://emacsconf.org/2021/talks/frowniesCase Duckworth2021-11-27T14:34:00Z09:34enMainTalkemacsconf-2021-talk-adventure0:20Choose Your Own (Technology-Enhanced Learning) AdventureTimes are approximate and will probably change.
# Choose Your Own (Technology-Enhanced Learning) Adventure
Greta Goetz
This presentation will first illustrate possible paths for beginners and then mapping out the significance of the enhanced learning potential of Emacs (Caillet in Andler & Guerry, Markauskaite & Goodyear). The technology-enhanced learning (TEL) that Emacs affords departs from the 'many, many features' (Stallman) which surpass the confines of a pre-fabricated environment (Stiegler). This affords diverse possibilities for individuals to interact creatively and autonomously to satisfy their own needs alongside others who share use of the tool (Illich). Its adaptability will be shown to be an asset in support of the learning trends identified by the latest pedagogical research (Guo).
1. Setting out as beginners who may be overwhelmed by formal Emacs documentation. Some inroads. No trace is too small.
2. Emacs as common ground between people and technology.
3. Emacs modularity and TEL design.
4. Emacs as personal, creative, autonomous.
5. Emacs and cognitive democracy.
# References
## General workflow, inspiration, fun:
- Bin, C. (2020). Mastering Emacs in one year. <https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-en.org#on-the-shoulders-of-giants>. Accessed 25 October 2021.
- Chua, S. https://sachachua.com/blog/
- Goetz, G. (2021). Additional references: A back-to-school/GTD Emacs journey. <https://gretzuni.com/articles/a-back-to-school-gtd-emacs-journey>. Accessed 25 October 2021.
- Guerry, B. (2020). Org-mode features you may not know. <https://bzg.fr/en/some-emacs-org-mode-features-you-may-not-know/>. Accessed 25 October 2021.
- Kaiser, K. (2017). Writing a technical book in Emacs and Org-mode. <https://www.kpkaiser.com/programming/writing-a-technical-book-in-emacs-and-org-mode/>. Accessed 25 October 2021.
- Planet Emacs Life. <https://planet.emacslife.com/>. Accessed 25 October 2021.
- Stavrou, P. My packages for GNU Emacs. <https://protesilaos.com/emacs/>. Accessed 25 October 2021.
- Wellons, C. Emacs articles. <https://nullprogram.com/tags/emacs/>. Accessed 25 October 2021.
## On TEL design and learning:
- Andler, D. & Guerry, B. (Eds.). *Apprendre demain: Sciences cognitives et éducation à l’ère numérique*, 137-154. Paris: Hatier.
- Crichton, M. (1983). *Electronic life*. New York: Knopf.
- De Bono, E. (2009). *Think! Before it's too late*. London: Random House.
- Drosos, I. & Guo, P. (2021). Streamers teaching programming, art, and gaming: Cognitive apprenticeship, serendipitous teachable moments, and tacit expert knowledge. IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), short paper, 2021. <https://pg.ucsd.edu/pubs.htm>. Accessed 25 October 2021.
- Gabriel, R. (1996). *Patterns of software*. New York, Oxford: Oxford University Press.
- Goodyear, P. & Retalis, S. (2010). Learning, technology and design. In Goodyear, P. & Retalis, S. (Eds.). *Technology-enhanced learning: Design patterns and pattern languages*, 1-27. Rotterdam, Boston: Sense Publishers.
- Guo, P. (2018). Students, systems, and interactions: Synthesizing the first
four years of Learning@Scale and charting the future. L@S 2018, June 26–28, 2018, London, United Kingdom. DOI: https://doi.org/10.1145/3231644.3231662. <https://pg.ucsd.edu/pubs.htm>. Accessed 25 October 2021.
- Guo, P., Kim, J. & Rubin, R. (2014). How video production affects student engagement: An empirical study of MOOC videos. ACM Conference on Learning at Scale. <https://pg.ucsd.edu/pubs.htm>. Accessed 25 October 2021.
- Illich, I. (1973). *Tools of conviviality*. New York: Harper & Row.
- Kim, J., Guo, P., Seaton, D., Mitros, P., Gajos, K. & Miller, R. (2014). Understanding in-video dropouts and interaction peaks in online lecture videos. ACM Conference on Learning at Scale. <https://pg.ucsd.edu/pubs.htm>. Accessed 25 October 2021.
- Markauskaite, L. & Goodyear, P. (2017). *Epistemic fluency and professional education: innovation, knowledgeable action and actionable knowledge*. Dordrecht: Springer.
- Markel, J. & Guo, P. (2020). Designing the future of experiential learning environments for a post-COVID world: A preliminary case study. NFW ’20 (Symposium on the New Future of Work), August 3–5, 2020, Virtual Event. <https://pg.ucsd.edu/pubs.htm>. Accessed 25 October 2021.
- Morin, E. ([2004] 2008). *La Méthode - tome 6: Éthique*. Éditions du Seuil: Paris.
- Stallman, R. (2002). *Free software, free society*. GNU Press, Free Software Foundation.
- Stiegler, B. (2018). *The neganthropocene*. Open Humanities Press.
- Trocmé-Fabre, H. (1999). *Réinventer le métier d’apprendre*. Paris: Éditions d’organisation.
# Availability and preferred Q&A approach
Due to the pandemic situation, my teaching schedule fluctuates so I
will not know my availability until much closer to the
date. Therefore, I can only guarantee delayed answer response
(whatever you request), but if available, will join live.
May I please note that I will be pre-recording my video if this submission is accepted.
# Speaker release
By submitting this proposal, I agree that my presentation at
EmacsConf 2021 is subject to the following terms and conditions:
The EmacsConf organizers may capture audio and video (a "Recording")
of my presentation and any associated materials, which may include
slides, notes, transcripts, and prerecording(s) of my presentation
that I provide to the EmacsConf organizers.
I authorize the EmacsConf organizers to distribute, reproduce,
publicly display, and prepare derivative works of the Recording and
any derivative works of the Recording (the "Licensed Materials")
under the terms of the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) license.
I grant to the EmacsConf organizers permission to use my name,
likeness, and biographic information in association with their use
of the Licensed Materials under the above license.
I represent that I have the authority to grant the above license to
the EmacsConf organizers. If my presentation incorporates any
material owned by third parties, I represent that the material is
sublicensable to the EmacsConf organizers or that my use of them is
fair use.https://emacsconf.org/2021/talks/adventureGreta Goetz2021-11-27T14:56:00Z09:56enMainTalkemacsconf-2021-talk-unix0:07GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only AnswerTimes are approximate and will probably change.
# GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer
Daniel Rose
The talk targets users who are curious about computational philosophies,
or those who might not know how to best utilise Emacs conceptually. The
talk will cover what the UNIX philosophy is, the GNU Free Software
principles, a typical (Neo)Vi(m) user's approach, and then how one might
accomplish this in Emacs combining the aformentioned ideals. The
listeners will learn how they can approach Emacs ideologically, and how
blocking themselves into one philosophy or the other will limit their
efficiency. Although you may be a veteran GNU/Linux and Emacs user,
understanding how to use both philosophies together will still allow you
to be more performant than without.
# Outline
- How can one limit their usage of CLI tools while still maintaining
the ideals of both.
- How using CLI tools can still perfectly flow into Emacs.
- How having all programs in Emacs and unified keybindings is akin
to a terminal user.
- Why thinking about computational philosophies might itself be an
impediment.https://emacsconf.org/2021/talks/unixDaniel Rose2021-11-27T15:09:00Z10:09enMainTalkemacsconf-2021-talk-omegat0:10Emacs manuals translation and OmegaTTimes are approximate and will probably change.
# Emacs manuals translation and OmegaT
Jean-Christophe Helary
Even if it is generally agreed that software localization is a good thing, Emacs is lacking in that respect for a number of technical reasons. Nonetheless, the free software using public could greatly benefit from Emacs manuals translations, even if the interface were to remain in English.
OmegaT is a multiplatform GPL3+ "computer aided translation" (CAT) tool running on OpenJDK 8. CATs are roughly equivalent for translators to what IDEs are for code writers. Casual translators can benefit from their features but professionals or committed amateurs are the most likely to make the most use of such tools.
When OmegaT, free software based forges and Emacs meet, we have a free multi-user translation environment that can easily sustain the (close to) 2 million words load that comprise the manuals distributed with Emacs, along with powerful features like arbitrary string protection for easy typing and QA (quality assurance), automatic legacy translation handling, glossary management, history based or predictive autocompletion, etc.
The current trial project for French is hosted on 2 different forges:
1. sr.ht hosts the source files
<https://sr.ht/~brandelune/documentation_emacs/>
2. chapril hosts the OmegaT team project architecture
<https://forge.chapril.org/brandelune/documentation_emacs>
The sources are regularly updated with a po4a based shell script.
# Outline
- Duration: 10 minutes
- Software used during the presentation
- [po4a](https://po4a.org) a tool to convert documentation formats to and from the commonly used `gettext` **PO** format.
po4a supports the `texinfo` format along with many others.
- [OmegaT](https://omegat.org) a "computer aided translation" tool used by translators to efficiently combine translation resources (legacy translations, glossaries, etc.) so as to produce more consistent translations.
During this short presentation, I will address:
- The specificities of the Emacs manuals and the difficulties they present to the translator
- The reason why a professional tool is better than a collaborative web-based system
- How to convert the texi and org files to a format that translators can handle
- How to adapt OmegaT to the Emacs manual specificities
- How to use OmegaT features such as arbitrary string protection, legacy translation handling, glossaries, autocompletion, QA, etc.
- How to use OmegaT with a team of 2 (or more) translators working at the same time
I will *not* show:
- How to create an OmegaT project
- How to set up an OmegaT team project
- How to use OmegaT from the command line to work in localization pipelines
- How to use machine translation and MT "post-edit"
- How to convert back the translated files to texi format
- How to install translated texi files for use in Emacs
People who are interested in knowing more about OmegaT are invited to check the [online user manual](https://omegat.sourceforge.io/manual-latest/en/).
# Personal information
- Name pronunciation: [ʒɑ̃kRstɔf elaRi](https://doublet.jp/wp-content/uploads/2021/11/jch.ogg)
- Pronouns: he
- Homepage: [https://mac4translators.blogspot.com](https://mac4translators.blogspot.com)
- Preferred contact info: [jean.christophe.helary@traduction-libre.org](jean.christophe.helary@traduction-libre.org)
- Links for sponsoring/supporting (multilingual translations): [https://doublet.jp](https://doublet.jp)https://emacsconf.org/2021/talks/omegatJean-Christophe Helary2021-11-27T15:22:00Z10:22enMainTalkemacsconf-2021-talk-nongnu0:07NonGNU ELPA UpdateTimes are approximate and will probably change.
# NonGNU ELPA Update
Philip Kaludercic
NonGNU ELPA was announced last year, as a package repository
that will be enabled by default in Emacs, but doesn't require
any copyright assignment. This means that a lot of popular
packages can now be installed easier, without any additional
configuration.
In this talk I would like the give a reminder of what NonGNU
ELPA is and how it works, update the participants on what has
happened since last year and what maintainers have to do if they
want their packages to be added to the repository.https://emacsconf.org/2021/talks/nongnuPhilip Kaludercic2021-11-27T15:35:00Z10:35enMainTalkemacsconf-2021-talk-borg0:08Manual Package Management in The Era of Repositories - Why and HowTimes are approximate and will probably change.
# Manual Package Management in The Era of Repositories - Why and How
Dhavan (codingquark)
Emacs now has many package repositories - enought to have conflicts
and arguments about. The packages are becoming big, they depend on many
other packages and it is not easy to keep track of what all is being
installed in our Emacsen. An aggressive way out of this is to use Yet
Another Package and install all elisp code manually - with borg[1].
[1]: <https://github.com/emacscollective/borg>
# Outline
- 5-10 minutes: (brief description/outline)
1. What are we trying to solve?
2. What is borg?
3. How to use it?
4. Assimilate a package for demohttps://emacsconf.org/2021/talks/borgDhavan (codingquark)2021-11-27T15:48:00Z10:48enMainTalkemacsconf-2021-talk-telega0:08telega.el and the Emacs community on TelegramTimes are approximate and will probably change.
# telega.el and the Emacs community on Telegram
Gabriele Bozzola and Evgeny Zajcev
Telegram is a cross-platform instant messaging system. The large number of
features and the widespread adoption make it a good choice for both private
conversations with friends and for large online communities. In this talk, I
am going to present the Emacs community on Telegram and its initiatives. I
am also going to discuss telega.el, the Emacs client for Telegram. telega.el
is a high-quality package that perfectly integrates in Emacs. It supports
the vast majority of the features supported by the official clients, while
adding several unique ones. In the talk, I will present the package and
highlight some of the most important features.https://emacsconf.org/2021/talks/telegaGabriele Bozzola and Evgeny Zajcev2021-11-27T16:01:00Z11:01enMainTalkemacsconf-2021-talk-nangulator0:10Introducing N-AngulatorTimes are approximate and will probably change.
# Introducing N-Angulator
Kevin Haddock
The Unix file system is essentially an N-dimentional sparse array that
currently lacks a decent editor and browser which
can effectively leverage the logical tri-angulation (or, more properly
"n-angulation") of atoms/blobs within it.
N-Angulator is the genesis, to wit, the "Model-T," of such a program.
(see google drive link below for a very old uncirculated prototype
video demo. Be sure and turn the volume UP!)
na.intro.flv
<https://drive.google.com/file/d/1EZN0Xs8eGlEbSIYFml2lp3GCNnmLQa98/view?usp=drive_web>
# Outline
- 5-10 minutes: (brief description/outline)
The reconceptualization of the Unix file system as the N-Dimensional
sparse array will be discussed.
A simple pre-existing database will be queried.
If time, questions will be entertained by video/audio and/or IRC.https://emacsconf.org/2021/talks/nangulatorKevin Haddock2021-11-27T16:14:00Z11:14enMainTalkemacsconf-2021-talk-janitor0:20A day in the life of a janitorTimes are approximate and will probably change.
# A day in the life of a janitor
Stefan Monnier
Because of a reckless former Emacs maintainer that shall
better stay unnamed, ELisp has seen a fair bit of churn in the last 10
years, making it necessary to clean up "old" code [in order to open up
the road for yet more recklessness? ].
In this documentary we will follow a famous janitor in his every day job
dealing with the aftermath of the cl-lib / lexical-binding party.
- ~20 minutes
Here really, I'm not sure how much time this will take. I put 20
minutes because I think I might be able to fill that and I think more
than that could turn too boring. I intend to make it a "live coding"
kind of thing, without anything like an outline: it's basically "make"
followed by fixing the warnings.https://emacsconf.org/2021/talks/janitorStefan Monnier2021-11-27T16:39:00Z11:39enMainTalkemacsconf-2021-talk-maintainers0:10How to help Emacs maintainers?Times are approximate and will probably change.
# How to help Emacs maintainers?
Bastien Guerry
After 11 years of helping as the Org maintainer, I would
like to share a few lessons learned. My goal is help everyone take
care of Emacs maintainance by taking care of Emacs maintainers.
# Outline
- 5-10 minuteshttps://emacsconf.org/2021/talks/maintainersBastien Guerry2021-11-27T16:52:00Z11:52enMainTalkemacsconf-2021-talk-gregorian0:10Typesetting Gregorian Chant with EmacsTimes are approximate and will probably change.
# Typesetting Gregorian Chant with Emacs
Spencer King
There are a variety of methods for typesetting gregorian
chant scores and outputting high-quality sheet music. One of these is
a tool called Gregorio, which integrates with LaTeX allowing scores to
be cleanly inserted into other documents. All Gregorio files are plain
text, allowing them to easily be shared with other users and managed
with a version control system. In this talk, I will give a brief
overview of the Gregorio tool and then show how it can be used in
Emacs by typesetting a simple score. All code and examples will be
made available to help new users get started with typesetting their
own scores.
# Outline
- 5-10 minutes: (brief description/outline)
1. Introduction to chant music
2. Introduction to Gregorio
3. Example of typesetting a score in Emacs
4. Code and example availabilityhttps://emacsconf.org/2021/talks/gregorianSpencer King2021-11-27T17:30:00Z12:30enMainTalkemacsconf-2021-talk-montessori0:10Emacs and Montessori PhilosophyTimes are approximate and will probably change.
# Emacs and Montessori Philosophy
As a former Montessori guide and now parent, I often think about the
relationship of this particular educational philosophy and how it manifests
in my work with software, Emacs in particular. This talk introduces the
concept of Emacs as an educational environment and how it expresses elements of
Montessori psychology regarding "Human Tendencies". Human tendencies are innate
drives present in everybody that allow us to explore and make sense of our world.
# Outline
- 5-10 minutes: (brief description/outline)
Quick overview of a Montessori classroom environment:
- the adults or guides primarily observe and present material
- the children are free to explore materials as they choose (within limits)
- the environment itself is prepared specifically to foster engagement
Enumerate the "Human Tendencies":
- Abstraction
- Activity
- Communication
- Exactness
- Exploration
- Manipulation (of the environment)
- Order
- Orientation
- Repetition
- Self-Perfection
- Work (also described as "purposeful activity")
How does Emacs express these things?
- in the short version, pose the question, and perhaps give one example.
- Emacs is an environment that provides facilities for individuals to
find their way to proficiency through their Human Tendencies.
- We are all both learners and guides, Emacs is our classroomhttps://emacsconf.org/2021/talks/montessoriGrant Shangreaux2021-11-27T17:43:00Z12:43enMainTalkemacsconf-2021-talk-erg0:15Emacs Research Group, Season Zero: What we did together with Emacs in 2 hours a week for a yearTimes are approximate and will probably change.
# Emacs Research Group, Season Zero: What we did together with Emacs in 2 hours a week for a year
Noorah Alhasan, Joe Corneli, Raymond Puzio, Leo Vivier
The four of us met at EmacsConf 2020, and joined together around a
common interest in Emacs and research. Since then, we have convened as
the Emacs Research Group for weekly meetings. During these meetings, we
took notes collaboratively, using a ‘conflict-free replicated data type’
package (crdt.el); at the end of each session, we debriefed using a
template that we call a Project Action Review (PAR). As as a
meta-review of our sessions, every six weeks we prepared a Causal
Layered Analysis (CLA), which gave us a different perspective on what we
had done. We reflected further on our experiences and methods, linking
our CLA to plans and design patterns. As a formal research output, we
contributed a write-up of these matters to a joint paper which we
presented at the Pattern Languages of Programs Conference (PLoP 2021).
The paper included an interactive workshop, in which we explored roles
in real-time problem solving and collaboration.
In our short talk we share information about these methods, making a
case for other people getting together and creating their own small
research communities similar to ours.https://emacsconf.org/2021/talks/ergNoorah AlhasanJoe CorneliRaymond PuzioLeo Vivier2021-11-27T18:01:00Z13:01enMainTalkemacsconf-2021-talk-cs0:10One effective CS grad student workflowTimes are approximate and will probably change.
# One effective CS grad student workflow
Greg Coladonato
When I was an undergrad, I learned many things, most of
which I forgot. In the time since then, I've discovered Org Mode, Org
Roam, Org Noter, Org Ref. PDF Tools, and Anki. I would like to share
my approach for capturing all the information that comes my way as a
MS CS student at Georgia Tech, in the hopes that I can both get
feedback on ways to improve the system I use, as well as hopefully
inspire others to build workflows that make them more productive.
# Outline
- 5-10 minutes: Go through some typical workflows associated with being a grad student, using the packages mentioned in the abstract.https://emacsconf.org/2021/talks/csGreg Coladonato2021-11-27T18:14:00Z13:14enMainTalkemacsconf-2021-talk-professional0:11Using Org-Mode For Recording Continuous Professional DevelopmentTimes are approximate and will probably change.
# Using Org-Mode For Recording Continuous Professional Development
Philip Beadling
I recently had the pleasure of being audited for my CPD record with one
of the large engineering professional bodies. I decided to harness
org-mode's TODO lists to record CPD items and my progress against them
completely within Emacs. I also wanted the ability to export the data
in a well presented, compact format for auditing submission.
The project was a success (I passed the audit) and the resulting system
integrates really well into my wider daily Emacs workflow, making future
CPD recording seamless.
The talk will explain how I tweaked and extended org-mode to get it to
record the data I wanted, followed by a demo.
A basic demo org file with embedded elisp can be seen here:
<https://raw.githubusercontent.com/falloutphil/Misc/master/cpd.org>
A basic generated PDF from the basic demo is here:
![img](https://preview.redd.it/nvdpmityhuw51.png?width=1169&format=png&auto=webp&s=e0c5080560c877aa02933a40c224e52b8a1fed3b)
I have a much more involved example I could also use for the demo.
The template contains a few examples. Examples are Goals that are split
up into Activities. All Activities must have a Goal, and within a Goal
all activities must be complete for the Goal to be automatically set to
complete.
It's basically leveraging Org Capture Templates to create custom Goals
and Activities.
On save or update these are then rendered into a table using Column View.
Activities are sorted by date they were completed on.
The Column View is pre-configured to be exported to PDF in a condensed
but readable format for submission. It stays fairly readable even when
the pages get busy.
The elisp required is all under the "Config" bullet and Emacs will ask
to execute it on opening the Org file. The elisp concerns itself with
nice custom org capture functions and a few functions to ensure nice
formatting on export, etc.
# Outline
- 5-10 minutes:
A quick walkthrough of the setup and functions, followed by a demo of how
to add CPD items, and update them. Finally show generation of a PDF
containing all the items tabulated and ready for audit review. I
estimate this at approx 10 minutes.https://emacsconf.org/2021/talks/professionalPhilip Beadling2021-11-27T18:27:00Z13:27enMainTalkemacsconf-2021-talk-tech0:11Creating technical API documentation and presentations using org-babel, restclient, and org-treeslideTimes are approximate and will probably change.
# Creating technical API documentation and presentations using org-babel, restclient, and org-treeslide
Jan Ypma
The emacs org-babel package is often mentioned in conjunction with
literate programming. The ability to mix code segments with prose
indeed offers an intuitive way to augment semantic code pieces with
textual descriptions.
In recent projects, I've started to turn to org-mode as the primary
format to maintain technical documentation, as well as slides for a
technical language course. By using org-babel to pull in "live" code
for REST requests, language examples, and shell scripts, one can be
sure that the documentation and slides are never out of date.
The session will show how leverage org-babel, restclient and
org-treeslide to write and present technical documentation with style.
# Outline
- Introduction
- Demo: Developer guide
- Demo: REST API guide
- Demo: Presentations
- Used packages and configurationhttps://emacsconf.org/2021/talks/techJan Ypma2021-11-27T18:40:00Z13:40enMainTalkemacsconf-2021-talk-exec0:10Org as an executable formatTimes are approximate and will probably change.
# Org as an executable format
Tom Gillespie
Org mode is known for its flexibility, power, and staggeringly diverse
number of workflows, users, and use cases.
This talk explores just how far we can push the boundaries of the sane
and sensible with regard to Org workflows.
In particular it will discuss shebang blocks, and elvs: two parts of a
complete system for creating executable Org files.
Org syntax does not support shebang lines. However, it turns out that
Org syntax enables something even better — shebang blocks.
Org is also (supposedly) not an executable file format. However, by
combining a shebang block with a Org babel source block, and eval
local variables (elvs) Org becomes a multi-language executable format.
In this talk we introduce shebang blocks and elvs as a two part system
that transforms Org files into executable documents that can run on any
recent version of Emacs.
These ideas are implemented in
<https://github.com/tgbugs/orgstrap/blob/master/README.org> and
<https://github.com/tgbugs/orgstrap/blob/master/shebang.org>, and
orgstrap.el is available as a package on MELPA and can be installed
via M-x install-package orgstrap.
The talk will open with a demo of how to create an executable Org file
using the orgstrap machinery.
We then discuss security considerations, and show example use cases.
Finally the talk will cover the details and development of the
portable shebang block for Org mode that works on a wide variety of
systems and shells, and on the development of a formal specification
and a reference implementation for using Org source blocks to
transform Org files from plain text documents with a bit of markup
into self describing computational documents, or interactive
applications.
# Outline
- 5-10 minutes:
A demo of adding the orgstrap block and elvs,
adding a shebang block, and then running an org file.https://emacsconf.org/2021/talks/execTom Gillespie2021-11-27T18:53:00Z13:53enMainTalkemacsconf-2021-talk-org-outside0:12The use of Org mode syntax outside of GNU/EmacsTimes are approximate and will probably change.
# The use of Org mode syntax outside of GNU/Emacs
Karl Voit
With the rising interest in Org mode, the GNU/Emacs community gained
much momentum in the last decade. Being a nicely designed lightweight
markup language, Org mode does not only benefit users of GNU/Emacs.
There are many tools and services supporting Org mode syntax documents
that do have no direct connection to GNU/Emacs. I would like to
elaborate on the advantages on using Org mode syntax for arbitrary
text outside of GNU/Emacs for better typing usability and
collaboration tasks.
# Outline
- 5-10 minutes: (brief description/outline)
This can only be a short teaser for the use of Org mode syntax without
much comparison to other lightweight markup languages. For this
audience, I do think that this would be too short because most
attendees might already have heard the rumors that Org mode is great
or they have adapted Org mode in their workflows already.https://emacsconf.org/2021/talks/org-outsideKarl Voit2021-11-27T19:06:00Z14:06enMainTalkemacsconf-2021-talk-teach0:20Using Org-mode to teach programmingTimes are approximate and will probably change.
# Using Org-mode to teach programming
Daniel German
In this presentation I will explain how to use org-mode effectively to
prepare teaching materials, and how to present them.
For the last 5 years I have been using org-mode to teach programming
in different languages: C++, SQL, Ruby, Python, SML
and Scheme. Org-mode has three key advantages:
1. it supports most programming languages with a common interface,
2. it is an interactive medium for delivering teaching materials; and
3. it is an always-up-to-date format that does not need to be exported in order to be published.
I explain how I use org-mode in my courses and how I combine org-mode
notes other tools such as github org-mode to get
always up-to-date teaching materials that one can use for both
teaching and studying (see
<https://github.com/dmgerman/csc116ModernCplusplus/blob/master/lectures/l-01-1-intro/01_1_intro.org>
for an example).
Finally, I will discuss some important aspects to consider when using
org-mode for this purpose.
# Outline
20 minutes:
- Introduction
- Quick demonstration
- Workflow
- Emacs configuration
- Important considerations
- How to get started
Oh, I made a small mistake. I meant to propose a 40 minutes presentation.
But I can give a quicker 20 minutes too.https://emacsconf.org/2021/talks/teachDaniel German2021-11-27T19:31:00Z14:31enMainTalkemacsconf-2021-talk-research0:05Managing a research workflow (bibliographies, note-taking, and arXiv)Times are approximate and will probably change.
# Managing a research workflow (bibliographies, note-taking, and arXiv)
Ahmed Khaled
Researchers and knowledge workers have to read and discover new papers,
ask questions about what they read, write notes and scratchwork, and store
much of this information for use in writing papers and/or code. Emacs allows
us to do all of this (and more) using simple text interfaces that integrate
well together. In this talk I will talk about the following:
a. Using elfeed and elfeed-score to read new papers from arXiv.
b. Using org-ref to import arXiv papers of interest into a local
bibliography.
c. Using Emacs hooks with biber and rebiber in order to keep the local
bibliography clean and up-to-date with conference versions of papers.
d. Using org-roam and org-roam-bibtex to take linked, searchable notes in
org on research papers.
This text-based workflow allows for keeping everything accessible under
version
control and avoids the platform lock-in of binary formats (e.g. Mendeley). I
will share my Doom Emacs configuration for this workflow, but it is not
limited
to Doom.
# Outline
- 5-10 minutes: I will demo the packages I use in 5 minutes.https://emacsconf.org/2021/talks/researchAhmed Khaled2021-11-27T19:40:00Z14:40enMainTalkemacsconf-2021-talk-babel0:10Babel for academicsTimes are approximate and will probably change.
# Babel for academics
Asilata Bapat
Plain org-mode is already an extremely powerful and
customisable tool for task and time management, note-taking, calendar
and agenda management, and much more. Babel takes org a step further
by letting you write, evaluate, and export code in different languages
from within a single file. In this talk, I will highlight some
features of babel that I find exciting and extremely useful,
particularly for an academic workflow.
Getting started with babel can be intimidating, but it's hard to stop
using it once you start. As an academic, I typically don't manage
large coding projects. My primary purpose is writing lecture notes,
assignments, and papers, and managing related admin. Typically, I want
to try and automate the boring portions of my workflow without extra
overhead. I also tend to find various tasks easier in some programming
languages and harder in others, and prefer to mix and match languages
as the task dictates. Babel makes this process seamless.
A basic use case is writing a document in org-mode and exporting it to
LaTeX or HTML. Org-mode even lets you write multiple documents in a
single org file, which can be convenient. Babel lets you add all sorts
of enhancements to the same file. For example, suppose we have a
single org document with all the problem sets for a course. Within
this single file, we could now:
- draw pictures in ditaa, graphviz, or python instead of LaTeX,
- use python to do complex calculations and then output the result as LaTeX,
- define skeletons to quickly draw up assignment templates,
- toggle exporting of assignments with or without solutions based on tags,
- locally change export settings or run a post-export hook,
- automatically export to LaTeX after saving,
- tangle code blocks from some or all of the languages to external files.
I will try to showcase features of babel that academics could find
helpful, by presenting some ways in which I have tried to use babel. I
would also like to be inspired by other people's babel workflows!
# Outline
- 5-10 minutes: (brief description/outline)
For a 5-10 minute presentation I will give a brief intro and present one or two example files that heavily use babel. I will use these
examples to highlight some of the features mentioned in the abstract.https://emacsconf.org/2021/talks/babelAsilata Bapat2021-11-27T19:52:00Z14:52enMainTalkemacsconf-2021-talk-molecular0:10Reproducible molecular graphics with Org-modeTimes are approximate and will probably change.
# Reproducible molecular graphics with Org-mode
Blaine Mooers
Research papers in structural biology should include the code used to make
the images of molecules in the article in the supplemental materials.
Some structural bioinformaticists have started to include
their computer code in the supplemental materials to allow readers
to reproduce their analyses. However, authors of papers reporting new
molecular structures often overlook the inclusion of the code that makes
the images of the molecules reported in their articles. Nonetheless,
this aspect of reproducible research needs to become the standard practice
to improve the rigor of the science.
In a literate programming document, the author interleaves blocks
of explanatory prose between code blocks that make the images of molecules.
The document allows the reader to reproduce the images in the manuscript by running the code.
The reader can also explore the effect of altering the parameters in the
code. Org files are one alternative for making such literate programming
documents.
We developed a **yasnippet** snippet library called **orgpymolpysnips** for
structural biologists (<https://github.com/MooersLab/orgpymolpysnips>).
This library facilitates the assembly of literate programming documents
with molecular images made by PyMOL. PyMOL is the most popular
molecular graphics program for creating images for publication; it has
over 100,000 users, which is a lot of users in molecular biology. PyMOL
has been used to make many of the images of biological molecules found
on the covers of many Cell, Nature, and Science issues.
We used the **jupyter** language in **org-babel** to send commands from
code blocks in Org files to PyMOL's Python API. PyMOL returns the
molecular image to the output block below the code block. An Emacs
user can convert the Org file into a PDF, `tangle' the code blocks
into a script file, and submit these for non-Emacs users. We describe
the content of the library and provide examples of the running PyMOL
from Org-mode documents.
# Outline
- 5-10 minutes: (brief description/outline)
- Title slide
- Structural Biolog Workflow in the Mooers Lab
- Cover images made with PyMOL
- Why develop a snippet library for your field?
- PyMOL in Org: kernel specification
- Creating a conda env and installing PyMOL
- Example code block in Org to make DSSR block model of tRNA
- Resulting image
- Summary
- Acknowledgementshttps://emacsconf.org/2021/talks/molecularBlaine Mooers2021-11-27T20:05:00Z15:05enMainTalkemacsconf-2021-talk-project0:10Budgeting, Project Monitoring and Invoicing with Org ModeTimes are approximate and will probably change.
# Budgeting, Project Monitoring and Invoicing with Org Mode
Adolfo Villafiorita
In this talk I will present how we use Org Mode at Shair.Tech for
budgeting, project monitoring, and invoicing.
We are a small company and we are still tuning and improving the
process, but with a bit of Emacs Lisp, the functions Org Mode
provides, and reading here and there what other users do, we
implemented an effective workflow we have been using for nearly a
year, now, and with which we are very happy. Talk duration:
–> 20 minutes seems to be right (15 talk + questions)
–> I can also make in 10 minutes, by focusing the talk on
budgeting (or monitoring)https://emacsconf.org/2021/talks/projectAdolfo Villafiorita2021-11-27T20:18:00Z15:18enMainTalkemacsconf-2021-talk-invoice0:10Finding Your (In)voice: Emacs for InvoicingTimes are approximate and will probably change.
# Find Your (In)voice: Emacs for Invoicing
Bala Ramadurai
Ye Freelance warriors, please lend me your I/O devices for 5 minutes.
Your time is your money! Do you find it a pain to generate an invoice,
record the details into your accounting software and keep track of
taxes and payments? You are not alone, I found the whole invoice
thingy to be extremely painful.
But worry not, Emacs comes to our rescue.
My talk will give you a basic intro on how to use org mode, some embedded python code and file jugglery to generate stylistic and professional invoices.
What you will learn during the session:
- How to track your freelance time using orgmode
- How to create the basic infrastructure for invoice generation
- How to generate the invoice
- How to manage multiple clients
- How to enter the finance details into your accounting software
- How to track invoice payments
We will use the following packages:
- Emacs+orgmode (duh?)
- yasnippet
- python layer (I use spacemacs, so whatever is the equivalent in your config)
- Some unnecessary Shakespearean referenceshttps://emacsconf.org/2021/talks/invoiceBala Ramadurai2021-11-27T20:31:00Z15:31enMainTalkemacsconf-2021-talk-dashboard0:10Productivity Dashboards with Emacs and KindleTimes are approximate and will probably change.
# Productivity Dashboards with Emacs and Kindle
Mehmet Tekman
Since 2008, Amazon have released a new Kindle device every year,
supplanting each generation with a newer model that boasts highly
promoted incremental features which greatly devalues the price of
their older models. These forgotten models are sold on Ebay and
other secondhand websites at highly discount prices by owners who
do not see the true potential of these devices: Kindles are
excellent high contrast low-refresh display rate E-Ink devices,
with Wifi capability, that run embedded Linux in the
background. Depending on the model, an idle Kindle can last weeks
before needing a recharge. This makes them ideal as passive image
devices that can be configured easily using a few shell
scripts. Indeed, efforts have been made in dedicated hacker forums
to expose the Linux filesystem and to enable features such as
custom screensavers, SSH networking, and more. By exploiting these
features, and by carefully disabling the software/bloatware that
comes with the device, these Kindles have found new life as online
dashboard devices which can fetch and display information from the
internet at timely intervals.
Here we describe a tool to control multiple Kindle devices with a
single org-mode/shell-based tool, built initially to periodically
serve updated Emacs Org-Agenda views, but later expanded to produce
online local weather reports and work calendar, Emacs calendars
(calfw, org-gcal), daily dietary information (org-calories),
Org-Mode sparse TODO trees, miscellaneous image and text content
(via imagemagick), small messages, and much more.
In this talk, we show how to configure multiple Kindles with any
desired custom content, following any daily/weekly schedule, all
easily managed from Emacs within a single Org-Mode file.
# Outline
- 5-10 minutes:
1-3 mins
Talk about repurposing Kindles:
- Cheap second-hand wifi device, hackable
- Low-powered, long battery life, low refresh rate – perfect
for a dashboard
- Timely updated Org-Mode Agendas anyone?
- Reference to inspired projects (kindle-dashboard)
2-3 mins
Generate content
- A static text+picture image easily generated with imagemagick
wrapper
- An image of a sparse tree of org-mode TODO file
- An image of another emacs view (e.g. Calfw, or org-calories)
- Show post-processing for optimizing image for Kindles
1-2 mins
Configuration in a single org-mode file
- Defining Machines
- Defining Commands to generate content
- Defining Schedules to run Commands on multiple Machines at
specific points in the day
1-2 mins
Export and Run:
- Show exported shell configs and generated cronjobs
- Witness multiple Kindles producing desired content with wakeup
timershttps://emacsconf.org/2021/talks/dashboardMehmet Tekman2021-11-27T20:44:00Z15:44enMainTalkemacsconf-2021-talk-nyxt0:10Emacs with Nyxt: extend your editor with the power of a Lisp browserTimes are approximate and will probably change.
# Emacs with Nyxt: extend your editor with the power of a Lisp browser
Andrea
In 2021 browsers are essential if you use a computer. Even if Emacs
users love text as a format, they may need to shop and video call from
time to time (even more so in a pandemic!). Some of us modified their
browsers to at least have the same keybindings as our editor of
choice. What if I told you there is an Emacsy browser in the making?
What if you could "ace-jump" within a web page? What if you could run
a REPL to extend your browser while browsing? What if you could record
macros?! The browser exists: its name is Nyxt!
In this talk I will share why it has great potential, how you can
integrate it with Emacs, and how you can migrate your Emacs mastery to
the web!
If you were wishing for a Lispy and Emacsy browser, you should not
miss this talk!
You can learn more about this at: <https://github.com/ag91/emacs-with-nyxt>
# Outline
- 5-10 minutes: quick demo of running Nyxt from Emacs and a little explanation of the code necessary for integrationhttps://emacsconf.org/2021/talks/nyxtAndrea2021-11-27T20:57:00Z15:57enMainTalkemacsconf-2021-talk-design0:10On the design of text editorsTimes are approximate and will probably change.
# On the design of text editors
Nicolas P. Rougier
Text editors are written by and for developers. They come
with a large set of default and implicit choices in terms of layout,
typography, colorization and interaction that hardly change from one
editor to the other. It is not clear if these implicit choices derive
from the ignorance of alternatives or if they derive from developers'
habits, reproducing what they are used to. Durint this talk, I will
characterize these implicit choices and illustrate what are some
alternatives using GNU Emacs.
# Outline
1. Review of a "modern" code editor (5mn)
2. Introduction of an alternative using Emacs (5mn)
## Links from the slides:
* [Elegant Emacs](https://github.com/rougier/elegant-emacs) (https://github.com/rougier/elegant-emacs)
* [On the Design of Text Editors](https://arxiv.org/abs/2008.06030) (https://arxiv.org/abs/2008.06030)
* [N Λ N O Emacs](https://github.com/rougier/nano-emacs) (https://github.com/rougier/nano-emacs)
* [svg-lib (ELPA)](https://elpa.gnu.org/packages/svg-lib.html) (https://elpa.gnu.org/packages/svg-lib.html)
* [nano-theme (ELPA)](https://elpa.gnu.org/packages/nano-theme.html) (https://elpa.gnu.org/packages/nano-theme.html)
* [nano-modeline (ELPA)](https://elpa.gnu.org/packages/nano-modeline.html) (https://elpa.gnu.org/packages/nano-modeline.html)
* [nano-agenda (ELPA)](https://elpa.gnu.org/packages/nano-agenda.html) (https://elpa.gnu.org/packages/nano-agenda.html)
## Contact information
* Contact [nicolas.rougier@inria.fr](mailto:nicolas.rougier@inria.fr)
* Follow my work at [github.com/rougier](https://github.com/rougier)
* Support my work at [github.com/sponsors/rougier](https://github.com/sponsors/rougier) or [en.liberapay.com/rougier/](https://en.liberapay.com/rougier/)https://emacsconf.org/2021/talks/designNicolas P. Rougier2021-11-27T21:11:00Z16:11enMainTalkemacsconf-2021-talk-dev-update0:08Emacs development updatesTimes are approximate and will probably change.
# Emacs development updates
John Wiegleyhttps://emacsconf.org/2021/talks/dev-updateJohn Wiegley2021-11-27T21:22:00Z16:22enMainTalkemacsconf-2021-talk-freedom0:38How Emacs made me appreciate software freedomTimes are approximate and will probably change.
# How Emacs made me appreciate software freedom
Protesilaos Stavrou
The theme will be "how Emacs empowered my software freedom".
I will outline the key moments in my transition to a GNU/Linux operating
system and mark those which eventually contributed towards me becoming
an Emacs user, maintainer of a—dare I say—popular package, and
contributor to upstream Emacs (among others). By alluding to personal
experiences, I will draw generalisable insights and connect them to what
I believe are irreducible qualities of Emacs qua software and Emacs as a
community of like-minded people. The talk will be theoretical in
nature: there won't be any code-related demonstration nor technical
references that only people with a background in computer science would
likely recognise. Personal anecdotes shall be tangential to the point
and considered as ancillary to the thesis of what Emacs represents from
the standpoint of software freedom and user empowerment. The
presentation is intended for a general audience that is interested in
GNU software in general and Emacs in particular. My formal educational
background as a social scientist (i.e. not a programmer) and later as a
philosopher informs my approach to this topic.
The presentation shall be 40 minutes long. Its text will be in essay
form and shall be supplied as complementary material to the video. The
notation will be in Org mode. I cannot provide an outline in advance,
as it will most likely not be consistent with the actual presentation.
If, however, this is absolutely required for administrative purposes I
shall furnish one regardless with the proviso that I am in no way bound
by it and thus reserve the right to modify it ahead of the main event.https://emacsconf.org/2021/talks/freedomProtesilaos Stavrou2021-11-27T22:02:00Z17:02enMainTalkemacsconf-2021-talk-day1-close0:05Closing remarks day 1Times are approximate and will probably change.
# Closing remarks day 1https://emacsconf.org/2021/talks/day1-closeEmacsConf2021-11-28T14:00:00Z09:00enMainTalkemacsconf-2021-talk-day2-open0:05Opening remarks day 2Times are approximate and will probably change.
# Opening remarks day 2https://emacsconf.org/2021/talks/day2-openEmacsConf2021-11-28T14:05:00Z09:05enMainTalkemacsconf-2021-talk-faster0:20How to write faster Emacs LispTimes are approximate and will probably change.
# How to write faster Emacs Lisp
Dmitry Gutov
- Before optimizing, benchmark first.
- Different benchmarking approaches.
- Live evaluation, step-debugging, measuring from a debugger breakpoint.
- How to determine if a function is expensive. How to pick one from
competing alternatives (cl-lib, seq, dash, lean core).
- Print-benchmarking.
- Byte-compiled code can give a very different picture, changing where
the bottleneck is. How to quickly load a byte-compiled version.
- Steps taken to speed up the Xref package recently.https://emacsconf.org/2021/talks/fasterDmitry Gutov2021-11-28T14:30:00Z09:30enMainTalkemacsconf-2021-talk-structural0:10Tree-edit: Structural editing for Java, Python, C, and beyond!Times are approximate and will probably change.
# Tree-edit: Structural editing for Java, Python, C, and beyond!
Ethan Leba
In this talk, I'll discuss a vision for how writing code could be, where the
editing operations map directly to the primitives of the language itself -- and
my humble attempt of implementing this vision. _tree-edit_ seeks to provides a
structural editing plugin supporting conceivably any language with a tree-sitter
parser.
**Structural editing does not have to be relegated to lisps or niche DSLs.**
I liken the state of code editing today to writing assembly. The reason why
people like Python more than assembly is that for most purposes, the building
blocks of the language are mismatched with our thought process. We don't think
in terms of registers and addresses, we think in terms of variables, functions,
etc. So when we write and edit code, why do we edit in terms of deleting,
inserting, replacing characters – not wrapping, inserting, raising,
deleting expressions and statements?
I'll also discuss the implementation of tree-edit, which uses a novel
combination of the fantastic
[tree-sitter](https://github.com/emacs-tree-sitter/elisp-tree-sitter) parser
with an embedded logic programming DSL ([miniKanren](http://minikanren.org/),
using elisp port [reazon](https://github.com/nickdrozd/reazon)) to power it's
syntax tree generation.
Check out the GitHub repo [here](https://github.com/ethan-leba/tree-edit)!
# Outline
- Discuss motivation (Why should I care?)
- Demonstrate tree-edit (Live-coding with tree-edit)
- Demonstrate tree-edit syntax tree generator (Elevator pitch on miniKanren)https://emacsconf.org/2021/talks/structuralEthan Leba2021-11-28T14:43:00Z09:43enMainTalkemacsconf-2021-talk-dsl0:20Self-Describing Smart DSL's: The Next MagitsTimes are approximate and will probably change.
# Self-Describing Smart DSL's: The Next Magits
Psionic
When we begin programming, the promise is to automate away repetitive
tasks in life. As those program's capability grows, we begin to need
configuration UI's. We can start with a CLI, but as any CLI grows, we
run into the following issues:
- As options pile up, the intuition of simplicity is lost in helps and
manpages
- Stateless operation has no idea what to do next and loses terseness
- Frequent dispatch of commands to interrogate state required for the
operator to decide what action to perform
- Composition compounds with all of these issues
Magit has the UI trifecta of being terse, intuitive, and intelligent.
Magit's UI input library, Transient, is a standalone package for
developing more killer UI's, and not just for CLI applications, but
also for server applications, Emacs applications, and Emacs itself.
While Transient's potential is to create the most highly productive
UI's short of thought control, going beyond simple command dispatchers
requires a deeper dive. When we think like constructing a DSL for the
task and using transient to input that DSL, we get an intelligent,
self-describing modal programming system.
# Outline
- Updates to Transient documentation and demos of API examples
- Wrapping a custom CLI tool in Transienthttps://emacsconf.org/2021/talks/dslPsionic2021-11-28T15:06:00Z10:06enMainTalkemacsconf-2021-talk-ui0:10"Yak-shaving to a UI framework" (/"Help! I accidentally yak-shaved my way to writing a UI framework because overlays were slow")Times are approximate and will probably change.
# "Yak-shaving to a UI framework" (/"Help! I accidentally yak-shaved my way to writing a UI framework because overlays were slow")
Erik Anderson
Tui.el is a textual User Interface (UI) framework for Emacs Lisp
modeled after the popular JavaScript 'React' framework. This package
implements React Component API's with the goal of simplifying
development of interactive UI's for all Emacs users- regardless of
their prior experience with React or web programming. Components
provide a useful functional unit for constructing complex interfaces
declaratively and also eliminate much of the burden associated with
updating textual content as application state changes. This talk will
cover use of the tui.el API and its operation in a textual environment
by implementing some basic UI's.
# Outline
- 5-10 minutes:
- Problem space: UI implementation complexity.
- API introduction: Displaying content, Components.
- Visual taste of dashboards and applications built with tui.https://emacsconf.org/2021/talks/uiErik Anderson2021-11-28T15:19:00Z10:19enMainTalkemacsconf-2021-talk-rust0:20Extending Emacs in Rust with Dynamic ModulesTimes are approximate and will probably change.
# Extending Emacs in Rust with Dynamic Modules
Tuấn-Anh Nguyễn
Dynamic module support has been available since Emacs 25. It can be
used to extend Emacs with native libraries, for performance,
OS-specific features, or other functionalities that would take a lot
of time to re-implement in Lisp. The officially supported language is
C, which is tedious and error-prone to use. This talk discusses a
**safe** alternative that is also a lot **more convenient**: writing these
dynamic modules in Rust.
# Outline
- Walking through creating **a simple dynamic module** in
Rust, including setting up CI.
- Going through and explaining the **available APIs**.https://emacsconf.org/2021/talks/rustTuấn-Anh Nguyễn2021-11-28T15:44:00Z10:44enMainTalkemacsconf-2021-talk-eaf0:10Emacs Application Framework: A 2021 UpdateTimes are approximate and will probably change.
# Emacs Application Framework: A 2021 Update
Matthew Zeng
Emacs Application Framework (EAF) is a customizable and extensible GUI
application framework that extends Emacs graphical capabilities using
PyQt5. There are many new but important updates since EmacsConf2020
last year, this talk will briefly go over them.
# Outline
- 5-10 minutes: (brief description/outline)https://emacsconf.org/2021/talks/eafMatthew Zeng2021-11-28T15:58:00Z10:58enMainTalkemacsconf-2021-talk-model0:10Extending the "model" of Emacs to other applicationsTimes are approximate and will probably change.
# Extending the "model" of Emacs to other applications
Laszlo Krajnikovszkij
Emacs is a great operating environment in a sense that it provides consistency
across different tools and applications within the Emacs ecosystem, as well as
external apps that can be integrated into it. It is also the most truly
malleable environment, each element of which can be adjusted or extended,
therefore providing the user with more power and freedom in personal computing.
Emacs definitely can be considered one of greatest software products in
existence.
As a non-programmer, having had the chance to stumble upon Emacs a couple of
years ago, the only regret to have is that it didn't happen earlier. The definite
killer feature of Emacs - Org-mode, is what draws many of the less technical
folks to join the party and gradually start to use Emacs for writing documents,
whether personal or work related, manage tasks, emails and potentially everything
else. The learning curve and difference in approach, however, leaves some
potential users too scared of the arcane interface even with all it's quirks and
features because it requires at least some technical skills to understand and
use properly, and does not have an easy way to connect with external tools that
most people are forced to use for work.
This talk proposes some ideas about how the model of Emacs, it's focus on
consistency, extensibility, as well as it's powerful interaction model can be
carried over to make modern interfaces, whether desktop or web applications,
that would be designed with a goal of reflecting the spirit of Emacs in terms of
the aforementioned features it possesses, and therefore enhance the capabilities
of the Emacs, while at the same time utilizing it as a backend for
text-processing and editing to a large extent. It would be really great to have
a personal web-interface for using modern task management tools, chats, emails
and such, but from a UI defined by the user. The goal is to use it on a desktop
or mobile, locally or self-hosted on a server, with support for touch and
gesture-based workflows, while preserving the Emacs philosophy and allowing to
seamlessly switch between Emacs and its web extension
The proposed solution is to integrate more of the modern tools with Emacs,
utilize Org-mode as a way to define application-specific parameters for these
tools through Org properties, and then utilize these parameters for making a
modern local frontend that would enhance Emacs UI while allowing to use external
tools in a more personal and freedom respecting way (making the originals
obsolete over time). The talk serves the purpose of inviting community members to
a discussion about how Emacs can become more modern, more approachable by people
who don't possess the neccessarry technical skills to adjust it themselves, but
are keen to learn it, and potentially how to attract more users to greater
productivity, computer literacy and the ideas of free software.
# Outline
- 5-10 minutes
- Introduction
- Issues with most modern tools for work
- Issues with Emacs as a tool for work
- In search for a hybrid approach
- User controlled web-apps
- Opinions encouraged
- Contactshttps://emacsconf.org/2021/talks/modelLaszlo Krajnikovszkij2021-11-28T16:11:00Z11:11enMainTalkemacsconf-2021-talk-devel0:20Don't write that package! or: How I learned to stop worrying and love emacs-develTimes are approximate and will probably change.
# Don't write that package! or: How I learned to stop worrying and love emacs-devel
Stefan Kangas
We need a successful Emacs on this planet. This means that we need an
excellent out-of-the-box experience -- one that just works, but that you
can still hack and customize. There is so much great experimentation
and work going on out there in the wider Emacs community, but we would
be even better off if more of that could go into Emacs itself.
Emacs' greatest strength is unfortunately sometimes also its greatest
weakness: it is *too* hackable.
On occasion, people out there add stuff to their Init file to fix this
or that annoyance, or even bug. The more ambitious might go on to
package up such fixes: "Hey, 'foo-mode' doesn't have support for
'bookmark-set', let's write a package!" I am here to suggest that you
should not do that.
You should submit a patch to Emacs! Maybe more people have that same
problem or annoyance, and would benefit from your solution?
It is sometimes perceived as hard to contribute to Emacs core. I want
to encourage more people to get involved, and show that the barrier to
entry is really not that high. If I can do it, you can do it too!
So should you really write that package, or should you stop worrying and
learn to love emacs-devel? Listen to my talk to find out more!https://emacsconf.org/2021/talks/develStefan Kangas2021-11-28T16:36:00Z11:36enMainTalkemacsconf-2021-talk-bindat0:30Turbo BindatTimes are approximate and will probably change.
# Turbo Bindat
Stefan Monnier
# Table of Contents
Bindat is an ELisp library to help manipulate binary data. This is a
niche library that is used by packages such as Websocket, EMMS, and
cpio-mode. Its implementation was repeatedly caught harassing hapless
kitten while at the same time providing poor service slowly. For
Emacs-28, Bindat was rewritten so as to make it more efficient and
flexible while respecting the kitten. In this presentation I intent to
show how we saved those. Not recommended for birds.
- ~20 minutes:
5 min: Intro and presentation of Bindat
5 min: Showcase some of its problems
5 min: Present the new design
5 min: Examples of what can be done with ithttps://emacsconf.org/2021/talks/bindatStefan Monnier2021-11-28T17:40:00Z12:40enMainTalkemacsconf-2021-talk-native0:40Emacs Lisp native compiler, current status and future developmentsTimes are approximate and will probably change.
# Emacs Lisp native compiler, current status and future developments
Andrea Corallo
Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor
family. GNU Emacs is traditionally capable of executing Elisp code
either interpreted or byte-interpreted after it has been compiled to
byte-code.
In this talk I'll discuss the Emacs Lisp native compiler. This feature
recently merged into the main Emacs development line allow for
automatically compiling and executing Elisp as native code.
During the presentation I'll touch on:
- design goals
- compiler and runtime design and implementation
- performance implications
- upstream process
- area of improvements and future developments
Format: 40 minuteshttps://emacsconf.org/2021/talks/nativeAndrea Corallo2021-11-28T18:27:00Z13:27enMainTalkemacsconf-2021-talk-form0:10Old McCarthy Had a FormTimes are approximate and will probably change.
# Old McCarthy Had a Form
Ian Eure
Most practical languages are multi-paradigm, offering several
abstractions for the programmer. But did you know that Emacs Lisp
comes with a powerful system for object-oriented programming? Join me
for a discussion of EIEIO, and learn how it can help you write more
modular, flexible Emacs Lisp.
# Outline
- 5-10 minutes: (brief description/outline)
- What is CLOS/EIEIO?
- Why would I want OOP in Emacs Lisp?
- How is the CLOS object model different from C++/Java/.NET?
- Further readinghttps://emacsconf.org/2021/talks/formIan Eure2021-11-28T18:41:00Z13:41enMainTalkemacsconf-2021-talk-test0:05Test blocksTimes are approximate and will probably change.
# Test blocks
Eduardo Ochs
In this presentation I will show an idea that feels completely obvious
once we see it, but that only occured to me after after using Emacs
and eev as my main interface to the computer for more than 20 years.
Take any interpreted language that supports multi-line comments, and
whose interpreter can be run in an Emacs buffer - for example Lua,
Haskell, Python, or Julia; let's say just "Lua" from here on for
simplicity. So: suppose that we have a Lua script that we wrote, that
is called "foo.lua" and that defines lots of functions and defines the
classes Bar and Bletch. We can put after the definition of the class
Bar a multi-line comment that contains an eepitch block that when
executed starts a Lua interpreter, loads the script foo.lua (by
running 'dofile "foo.lua"'), and then has several tests for that class
and its methods; and we can put another block with tests like that
after the class Bletch, and other blocks after some functions. Eepitch
allows sending these tests line by line to the Lua interpreter by
typing <f8\> on each line that we want to send, and this lets us create
tests that are very easy to understand even without writing comments;
this gives us a very quick way to document code by executable tests,
that is super-great for experimental code that is still going to
change a lot before running the risk of being read by other people.
These multi-line comments with eepitch blocks that run an interpreter
and make it load the current file are called "test blocks". The
command \`M-x eeit' inserts a test block at point, using the major mode
to decide the right syntax to use for the multi-line comments and for
the "dofile". We can configure the syntax of the test blocks for the
current major mode by running \`M-x find-eeit-links'; this can also be
used to add support for test blocks to more languages (or, more
precisely: to more major modes).
Eduardo Ochs <http://angg.twu.net/emacsconf2021.html>https://emacsconf.org/2021/talks/testEduardo Ochs2021-11-28T18:49:00Z13:49enMainTalkemacsconf-2021-talk-bug0:20Let's talk about bug trackersTimes are approximate and will probably change.
# Let's talk about bug trackers
Bastien Guerry
For 17 years, the Org developers didn't use a bug tracker,
shamelessly failing the Joel Spolsky test. Why was it "good enough"?
Why was it wrong? Why did we move to Woof!? Why Woof! is not a bug
tracker?
- 20 minuteshttps://emacsconf.org/2021/talks/bugBastien Guerry2021-11-28T19:16:00Z14:16enMainTalkemacsconf-2021-talk-bidi0:20Perso-Arabic Input Methods And Making More Emacs Apps BIDI AwareTimes are approximate and will probably change.
# Perso-Arabic Input Methods And BIDI Aware Apps
Mohsen BANAN -- محسن بنان
Emacs is a multilingual user environment. A true multilingual editor must
support bidirectionality and shaping of characters. Perso-Arabic scripts require
both of these features.
Starting with Emacs 24, full native bidi
(bidirectional) support became available. For
many years prior to that Unicode support was
available and by around year 2000, reasonable
open-source shaping libraries were also available.
With these in place at around 2012, I developed
two Persian input methods for emacs. These input
methods or variations of them can also be used for
Arabic and other Perso-Arabic scripts.
With all of these in place, Emacs has now become
the ne plus ultra Libre-Halaal and Convivial usage
environment for Perso-Arabic users.
Since emacs comes loaded with everything (Gnus
for email, Bbdb for address books, XeLaTeX modes
for typesetting, org-mode for organization, spell
checkers, completion systems, calendar, etc.), all basic
computing and communication needs of Perso-Arabic
users can be addressed in one place and
cohesively.
In this talk I will demonstrate what a wonderful
environment that can be.
My talk will be in two parts.
In Part 1, I cover Persian input methods. With an emphasis on "Banan
Multi-Character (Reverse) Transliteration Persian Input Method". The
software is part of base emacs distribution. Full documentation is available
at:
Persian Input Methods
For Emacs And More Broadly Speaking
شیوههایِ درج به فارسی
<http://mohsen.1.banan.byname.net/PLPC/120036>
In Part 2, I'll demonstrate that Emacs is far more than an editor. Emacs can be
a complete Perso-Arabic usage environment. I will also cover the ramifications
of bidi on existing emacs applications, including:
- Spell Checking, Dictionaries And Completion Frameworks:
- Existing emacs facilities can be extended to cover Perso-Arabic.
- Gnus:
- Perso-Arabic rich email sending in HTML.
- Ramifications of bidi on from:, to: and subject: lines.
- Bbdb: Ramifications of bidi on display and completion.
- Calendar:
- Ramifications of bidi on display.
- Use of Persian text for Persian (solar) calendar.
- Use of Arabic text for Muslem (lunar) calendar.
- AUCTeX: Persian typesetting with XeLaTeX
- Option of having right-to-left Perso-Arabic aliases for all latex commands.
References:
- Persian Input Methods:
<http://mohsen.1.banan.byname.net/PLPC/120036>
<http://www.persoarabic.org/PLPC/120036> -- Persian Input Methods Access Page
<http://www.persoarabic.org> -- Various Perso-Arabic resources
<http://www.freeprotocols.org/Repub/fpf-isiri-6219> -- Re-Publication Of
Persian Information Interchange and Display Mechanism, using Unicode
<https://github.com/bx-blee/persian-input-method> -- Git repo for
persian.el -- Quail package for inputting Persian/Farsi keyboards
- BIDI:
<http://www.unicode.org/reports/tr9/> -- Annex #9 of the Unicode standard
<https://www.gnu.org/software/emacs/manual/html_node/elisp/Bidirectional-Display.html>
Emacs Bidirectional Display
- Blee and Persian-Blee:
<https://github.com/bx-blee/env2> -- Very messy work-in-progress git repo for:
Blee: By* Libre-Halaal Emacs Environment
<http://www.by-star.net> -- A Moral Alternative To The Proprietary American Digital Ecosystem
<http://mohsen.1.banan.byname.net/PLPC/120033> --
Nature of Polyexistentials:
Basis for Abolishment of The Western Intellectual Property Rights Regime
<http://mohsen.1.banan.byname.net/PLPC/120039> -- Defining The Libre-Halaal Label
- Mohsen BANAN -- محسن بنان:
<http://mohsen.1.banan.byname.net/> -- Globish
<http://mohsen.1.banan.byname.net/persian> -- Farsi
<http://mohsen.1.banan.byname.net/french> -- Frenchhttps://emacsconf.org/2021/talks/bidiMohsen BANAN2021-11-28T19:41:00Z14:41enMainTalkemacsconf-2021-talk-mold0:10Moldable Emacs, a step towards sustainable softwareTimes are approximate and will probably change.
# Moldable Emacs, a step towards sustainable software
Andrea
We could learn about things better. Mountains of knowledge hide in
places we cannot access or use. The more we write down, the more it
takes to find and understand things we find useful.
Knowledge (web, software, books) keeps growing faster and faster! This
is not sustainable: we cannot keep up with it! What if we repeat the
error of somebody else, only because it would take too much reading to
know? What if that knowledge is in some code we work with everyday?
Moldable development is a paradigm shift that attempts to solve this
problem. In a gist, the tool you use should let you create special tools
to learn smartly from what you have already.
Since we use Emacs, let's make our great editor moldable!
This talk shows my progress in making Emacs closer to such a tool. We
are going to see how we can mold structured (and maybe even natural)
text to learn better, how we can inject notes in our projects and how
self documenting this tool is!
I aim to inspire you to find a quicker way to learn from our digital
world!
You can learn more about this at: <https://github.com/ag91/moldable-emacs>
# Outline
- 5-10 minutes: quick demo of moldable-emacshttps://emacsconf.org/2021/talks/moldAndrea2021-11-28T19:55:00Z14:55enMainTalkemacsconf-2021-talk-clede0:20CLEDE the Common Lisp Emacs Development Environment.Times are approximate and will probably change.
# CLEDE the Common Lisp Emacs Development Environment.
Fermin MF
I've been developing a package that helps with the development of
Common Lisp's software,
it's uses the internal semantic framework, it has a custom reader
and integration for
common Emacs packages (like Sly and the internal inferior-lisp-mode).
The idea is to supply features that other language with and static
analyzer have,
like refactoring and code generation.
For more details: <https://gitlab.com/sasanidas/clede>
- 20 minutes:
It seems like not too much people knows about semantic, so I can
summarize some of it in 10 minutes
and then An explanation on how to use the package, how to extend it
and the future of it.https://emacsconf.org/2021/talks/cledeFermin MF2021-11-28T20:22:00Z15:22enMainTalkemacsconf-2021-talk-imaginary0:11Imaginary ProgrammingTimes are approximate and will probably change.
# Imaginary Programming
Shane Mulligan
Imaginary Programming (IP) is both methodology and paradigm. It is an
extension of literate programming and a way of creating software without
the use of imperative, functional or even declarative code. Yet IP employs
all disciplines to achieve the miraculous. The only contingency is on one
or more language models, known as foundation models. The real value of IP
is not found by abandoning sound logic altogether, but in weaving the real
with the imaginary. The future of imaginary programming is one in which
almost all of computing is inferred. I have built a suite of tools based on
emacs for interfacing real programming languages with imaginary ones; all
of this in order to demonstrate what I mean; a ‘complex’ terminal that lets
you imagine what happens no matter how nested you are within interpreters,
an example-oriented language, a file format that encodes the provenance of
text and a library for imaginary functional programming primitives called
iLambda. It is important to recognise IP because, for lack of a better
term, it has far-reaching implications for intellectual property and the
GPL. Please keep an open mind.
# Outline
- 5-10 minutes:
- a 5 minute introduction to imaginary programming, followed by
- a demonstration of iLambda.
- iλ, a family of imaginary programming libraries
<https://mullikine.github.io/posts/designing-an-imaginary-programming-ip-library-for-emacs/>
IRC libertyprime at #emacs on libera
Shane Mulliganhttps://emacsconf.org/2021/talks/imaginaryShane Mulligan2021-11-28T20:36:00Z15:36enMainTalkemacsconf-2021-talk-build0:20How to build an EmacsTimes are approximate and will probably change.
# How to build an Emacs
Fermin MF
This is a deep dive in the Emacs philosophical and technical
aspect on what makes our beloved GNU Emacs
what it it. It's also a talk about the early LISP machines and
fascinating were those days of experimentation and engineering.
It will continue with the Emacs benefits/trade-offs from an
user/developer stand points, what things can be improved and
what can be an hypothetical path on how to build a software that
can also be called Emacs.
As a last part, I'll talk about CEDAR, an Emacs that I've been
developing in Common Lisp, the project goals
and the challenges.
For more details about CEDAR: <https://gitlab.com/sasanidas/cedar>
- 40 minutes:
A dive into the Emacs/Lisp machines history, what makes GNU Emacs
an Emacs and how you can build an Emacs.https://emacsconf.org/2021/talks/buildFermin MF2021-11-28T21:03:00Z16:03enMainTalkemacsconf-2021-talk-forever0:40M-x Forever: Why Emacs will outlast text editor trendsTimes are approximate and will probably change.
# M-x Forever: Why Emacs will outlast text editor trends
David Wilson
The computer software industry has seen many "popular" text editors come
and go, often due to the mercurial fashions of software development. In
this talk, we'll take a look at why popular editors fade and the
specific aspects of Emacs that will ensure it remains relevant
regardless of mainstream popularity.
# Outline
- Discuss the core thesis, the features that make Emacs
desirable for long-term use (extensibility, day-to-day 'life' features)
- Include more background on the text editor landscape and
how the scope of various editors is more narrow and doesn't compare to Emacs.
- Talk about specific instances where editors were popular, fell out
of popularity, and why (due to changing fashions, not usually
better features).https://emacsconf.org/2021/talks/foreverDavid Wilson (System Crafters)2021-11-28T21:50:00Z16:50enMainTalkemacsconf-2021-talk-day2-close0:10Closing remarks day 2Times are approximate and will probably change.
# Closing remarks day 2https://emacsconf.org/2021/talks/day2-closeEmacsConf