From 67f0f1c500091db27a69cb3a05fffd20c137d6e4 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Fri, 30 Sep 2022 15:59:56 -0400 Subject: Add 2022 talks --- 2022/talks/asmblox.md | 39 +++++++++++++++++++++ 2022/talks/async.md | 56 ++++++++++++++++++++++++++++++ 2022/talks/buddy.md | 40 ++++++++++++++++++++++ 2022/talks/buttons.md | 34 ++++++++++++++++++ 2022/talks/community.md | 57 +++++++++++++++++++++++++++++++ 2022/talks/dbus.md | 23 +++++++++++++ 2022/talks/detached.md | 44 ++++++++++++++++++++++++ 2022/talks/eev.md | 57 +++++++++++++++++++++++++++++++ 2022/talks/eshell.md | 30 ++++++++++++++++ 2022/talks/handwritten.md | 32 +++++++++++++++++ 2022/talks/haskell.md | 24 +++++++++++++ 2022/talks/health.md | 36 ++++++++++++++++++++ 2022/talks/hyperorg.md | 38 +++++++++++++++++++++ 2022/talks/journalism.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 2022/talks/jupyter.md | 42 +++++++++++++++++++++++ 2022/talks/justl.md | 29 ++++++++++++++++ 2022/talks/links.md | 34 ++++++++++++++++++ 2022/talks/localizing.md | 30 ++++++++++++++++ 2022/talks/lspbridge.md | 30 ++++++++++++++++ 2022/talks/mail.md | 82 ++++++++++++++++++++++++++++++++++++++++++++ 2022/talks/meetups.md | 42 +++++++++++++++++++++++ 2022/talks/news.md | 22 ++++++++++++ 2022/talks/orgvm.md | 25 ++++++++++++++ 2022/talks/orgyear.md | 26 ++++++++++++++ 2022/talks/python.md | 69 +++++++++++++++++++++++++++++++++++++ 2022/talks/rde.md | 34 ++++++++++++++++++ 2022/talks/realestate.md | 35 +++++++++++++++++++ 2022/talks/rolodex.md | 76 +++++++++++++++++++++++++++++++++++++++++ 2022/talks/school.md | 39 +++++++++++++++++++++ 2022/talks/science.md | 58 +++++++++++++++++++++++++++++++ 2022/talks/sqlite.md | 39 +++++++++++++++++++++ 2022/talks/survey.md | 29 ++++++++++++++++ 2022/talks/tramp.md | 27 +++++++++++++++ 2022/talks/treesitter.md | 41 ++++++++++++++++++++++ 2022/talks/wayland.md | 30 ++++++++++++++++ 35 files changed, 1436 insertions(+) create mode 100644 2022/talks/asmblox.md create mode 100644 2022/talks/async.md create mode 100644 2022/talks/buddy.md create mode 100644 2022/talks/buttons.md create mode 100644 2022/talks/community.md create mode 100644 2022/talks/dbus.md create mode 100644 2022/talks/detached.md create mode 100644 2022/talks/eev.md create mode 100644 2022/talks/eshell.md create mode 100644 2022/talks/handwritten.md create mode 100644 2022/talks/haskell.md create mode 100644 2022/talks/health.md create mode 100644 2022/talks/hyperorg.md create mode 100644 2022/talks/journalism.md create mode 100644 2022/talks/jupyter.md create mode 100644 2022/talks/justl.md create mode 100644 2022/talks/links.md create mode 100644 2022/talks/localizing.md create mode 100644 2022/talks/lspbridge.md create mode 100644 2022/talks/mail.md create mode 100644 2022/talks/meetups.md create mode 100644 2022/talks/news.md create mode 100644 2022/talks/orgvm.md create mode 100644 2022/talks/orgyear.md create mode 100644 2022/talks/python.md create mode 100644 2022/talks/rde.md create mode 100644 2022/talks/realestate.md create mode 100644 2022/talks/rolodex.md create mode 100644 2022/talks/school.md create mode 100644 2022/talks/science.md create mode 100644 2022/talks/sqlite.md create mode 100644 2022/talks/survey.md create mode 100644 2022/talks/tramp.md create mode 100644 2022/talks/treesitter.md create mode 100644 2022/talks/wayland.md (limited to '2022/talks') diff --git a/2022/talks/asmblox.md b/2022/talks/asmblox.md new file mode 100644 index 00000000..6c1e34eb --- /dev/null +++ b/2022/talks/asmblox.md @@ -0,0 +1,39 @@ +[[!meta title="asm-blox: a game based on WebAssembly that no one asked for"]] +[[!meta copyright="Copyright © 2022 Zachary Romero"]] +[[!inline pages="internal(2022/info/asmblox-nav)" raw="yes"]] + + + + + +# asm-blox: a game based on WebAssembly that no one asked for +Zachary Romero + +[[!inline pages="internal(2022/info/asmblox-before)" raw="yes"]] + +Over the past decade, programming games have risen in popularity and +become a genre unto themselves. They are loved for their open-endedness +and have helped people get into programming as well as help programmers +hone their problem-solving skills. As a fan of the genre, I decided I +wanted to recreate such an experience in Emacs. Looking at the already +existing collection of games, TIS-100 by Zachtronics stood out as an +especially good candidate for the base of a game, where the user is +entering assembly code into a terminal to solve puzzles. The game +asm-blox switches things around and instead of programming register +machines, you program mini stack machines in a language similar to the +WebAssembly text format. + +I'm still wondering if the game is actually any fun or not but either +way it was an interesting project to make. In this talk, I'll demo the +game as well as go over some of the Emacs Lisp tricks I used to make it +work. + +The source code can be found at + + + +[[!inline pages="internal(2022/info/asmblox-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/asmblox-nav)" raw="yes"]] + +[[!taglink CategoryFun]] diff --git a/2022/talks/async.md b/2022/talks/async.md new file mode 100644 index 00000000..2e78a338 --- /dev/null +++ b/2022/talks/async.md @@ -0,0 +1,56 @@ +[[!meta title="Emacs was async before async was cool"]] +[[!meta copyright="Copyright © 2022 Michael Herstine"]] +[[!inline pages="internal(2022/info/async-nav)" raw="yes"]] + + + + + +# Emacs was async before async was cool +Michael Herstine (IRC: sp1ff) + +[[!inline pages="internal(2022/info/async-before)" raw="yes"]] + +While async is all the rage in the JavaScript, Go and Rust +communities, Emacs has had the ability to (certain) asynchronous +processing all along. I learned this while writing an Emacs package to +program to my music server's API. + +Music Player Daemon is a project that does what it says: hangs out in +the background & plays your music. It has an API that I wanted to call +from Emacs. I had just learned async Rust, so I decided to see if I +could do something similar here. It turns out I could: I wound-up +writing a little async runtime that allows callers to "send" commands +to the daemon by queueing them up and returning immediately. In the +background, as output from previous commands comes in, new commands +are dequeued and sent. + +This required callers to provide callbacks in order to receive the +results of their commands, which led to a situation all too familiar +to Javascript programmers: callback hell. The coda to my story was +(finally) coming to understand Lisp macros in order to extend Emacs +Lisp with a more convenient construct for sending multiple commands. + +This talk will dive into the details of the Emacs Lisp process API, +specifically the Low-Level Network Access API, with illustrations as +to how it can be used to build an asynchronous queue. It will also +introduce Lisp macros and how powerful they can be. + +Outline: + +- introduce myself & the problem + - go into more depth on the problem +- overview of the solution: + - sketch out the Emacs API available to me + - sketch out the purpose-built async runtime I came up with in Emacs Lisp +- coda: this worked but led to ugly code on the part of callers + - insight: in Lisp, the code is just data! +- non-trivial demo + + + +[[!inline pages="internal(2022/info/async-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/async-nav)" raw="yes"]] + + diff --git a/2022/talks/buddy.md b/2022/talks/buddy.md new file mode 100644 index 00000000..22e8f139 --- /dev/null +++ b/2022/talks/buddy.md @@ -0,0 +1,40 @@ +[[!meta title="The Emacs Buddy initiative"]] +[[!meta copyright="Copyright © 2022 Andrea"]] +[[!inline pages="internal(2022/info/buddy-nav)" raw="yes"]] + + + + + +# The Emacs Buddy initiative +Andrea + +[[!inline pages="internal(2022/info/buddy-before)" raw="yes"]] + +Emacs is a cryptic marvel of usefulness: who else can help you solve +its riddles if not a buddy? + +The Emacs Buddy initiative [0] aims to help you find somebody that can +support you in your Emacs exploration. + +No matter if this is the first (or second?) time you start Emacs or if +it is decades you use it: everyone hits a wall behind which there is +progress. More often than not somebody else (sometimes a younger +sometimes an older one but always with a different context) can help +us move past those walls towards new discovery. + +So come and listen about how to stand on the shoulders of your Emacs + buddies! + +In this short talk I will give an idea of how to request a buddy, how +to become a buddy yourself and how the initiative worked out so far! + +[0] + + + +[[!inline pages="internal(2022/info/buddy-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/buddy-nav)" raw="yes"]] + +[[!taglink CategoryCommunity]] diff --git a/2022/talks/buttons.md b/2022/talks/buttons.md new file mode 100644 index 00000000..8d97814d --- /dev/null +++ b/2022/talks/buttons.md @@ -0,0 +1,34 @@ +[[!meta title="Linking personal info with Hyperbole implicit buttons"]] +[[!meta copyright="Copyright © 2022 Mats Lidell"]] +[[!inline pages="internal(2022/info/buttons-nav)" raw="yes"]] + + + + + +# Linking personal info with Hyperbole implicit buttons +Mats Lidell (He,Him,His) + +[[!inline pages="internal(2022/info/buttons-before)" raw="yes"]] + +GNU Hyperbole, The Everyday Hypertextual Information Manager, supports +hypertext links. Linking is done though buttons that can be either of +two types, implicit buttons and explicit buttons. + +In this talk I will show how the Hyperbole support of implicit buttons +can be used to create links to personal data. + +Outline: + +1. Short introduction to Hyperbole +2. Description of what an implicit button is +3. Description of how Hyperbole supports creating new implicit buttons using the Hyperbole defil macro +4. Examples of applying the defil macro together with different personal data structures + + + +[[!inline pages="internal(2022/info/buttons-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/buttons-nav)" raw="yes"]] + + diff --git a/2022/talks/community.md b/2022/talks/community.md new file mode 100644 index 00000000..994466c8 --- /dev/null +++ b/2022/talks/community.md @@ -0,0 +1,57 @@ +[[!meta title="The ship that builds itself: How we used Emacs to develop a workshop for communities"]] +[[!meta copyright="Copyright © 2022 Noorah Alhasan, Joseph Corneli, Leo Vivier"]] +[[!inline pages="internal(2022/info/community-nav)" raw="yes"]] + + + + + +# The ship that builds itself: How we used Emacs to develop a workshop for communities +Noorah Alhasan, Joseph Corneli, Leo Vivier (Noorah: she/her, Joseph: he/him, Leo: he/him) + +[[!inline pages="internal(2022/info/community-before)" raw="yes"]] + +After meeting at EmacsConf 2020, and since then, convening weekly as +the Emacs Research Group, we gained a lot of experience working across +disciplines. Building on our long-running small-group experience, we +developed a strategy for engaging others in the kind of light creative +work that we value because we want to share our patterns for building +effective joyful action. + +Our new day-long workshop brings people together around a topic of +shared interest. We use a scenario-development and exploration +process to help participants understand their common ground and +discover new ways to work together. In this talk, we will give an +overview of recent workshops we’ve run on themes linked to public +space and future studies and how we utilize Emacs for our research. + +Looking back at our recent pilots as a source of evidence, we’ll look +at whether and how the methods we used helped people quickly identify +core themes that they want to keep working on together. While we +don’t expect everyone to meet weekly as we did, we do expect that +some participants will leave energised. Underlying the workshop is +the claim that the right combination of methods should help people +find topics of priority that they want to get traction on, for +example, breaking down a topic like "public space" into doable actions +like cleaning up an abandoned lot. Does the evidence so far support +this claim? + +We also reflect on how technology — including the further evolution of +Emacs — could help people be even more effective at identifying and +addressing challenging problems. As a small example, note-taking in +real-time with CRDT helps us practice ‘active listening’ in our +meetings and gives us a detailed record of what happened so that we can +return to for further reflection and analysis. As we think about the +other affordances of Emacs, we get excited about how more advanced +data analysis and more structured interaction patterns could aid in +going back over our old thoughts and getting more out of the time we +spend together. One potential application would be forming bridges +between the different community groups, we work with. + + + +[[!inline pages="internal(2022/info/community-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/community-nav)" raw="yes"]] + +[[!taglink CategoryCommunity]] diff --git a/2022/talks/dbus.md b/2022/talks/dbus.md new file mode 100644 index 00000000..7b015bd3 --- /dev/null +++ b/2022/talks/dbus.md @@ -0,0 +1,23 @@ +[[!meta title="The Wheels on D-Bus"]] +[[!meta copyright="Copyright © 2022 Ian Eure"]] +[[!inline pages="internal(2022/info/dbus-nav)" raw="yes"]] + + + + + +# The Wheels on D-Bus +Ian Eure (ee-uhn you-er, he/him/his, IRC: ieure) + +[[!inline pages="internal(2022/info/dbus-before)" raw="yes"]] + +In this talk, I’ll explore uses of D-Bus that supercharge your +Emacs Operating System. + + + +[[!inline pages="internal(2022/info/dbus-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/dbus-nav)" raw="yes"]] + + diff --git a/2022/talks/detached.md b/2022/talks/detached.md new file mode 100644 index 00000000..4707a9fb --- /dev/null +++ b/2022/talks/detached.md @@ -0,0 +1,44 @@ +[[!meta title="Getting detached from Emacs"]] +[[!meta copyright="Copyright © 2022 Niklas Eklund"]] +[[!inline pages="internal(2022/info/detached-nav)" raw="yes"]] + + + + + +# Getting detached from Emacs +Niklas Eklund (he/him) + +[[!inline pages="internal(2022/info/detached-before)" raw="yes"]] + +As an enthusiastic Emacs user I would find myself replacing the usage +of an external terminal emulator with the Emacs alternative +interfaces. This included using packages such as dired for file +management, magit for git and proced for processes. However I always +kept a terminal around for running shell commands. These were +commands that I knew would either, take a long time to run, produce a +lot of rapid text output or that I would run on a remote machine. In +the remote case I would rely on tmux to be able to detach and let the +command run even when I wasn't connected. + +To rid me of the need for the terminal emulator in these situations I +developed the detached.el package. It is a package that builds on top +of the dtach program, which provides the ability to detach and +re-attach to processes, to offload Emacs from these processes. The +package seamlessly integrates the ability to detach and attach into +Emacs, and offers integration with many built in features such as +shell, eshell, compile, org and dired. + +In this talk I will demonstrate the features of this alternative way +to run detached processes and how the package can leverage built in +Emacs functionality to provide a great experience. The user interface +will be showcased and how the processes essentially becomes text, +which fits very well into Emacs. + + + +[[!inline pages="internal(2022/info/detached-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/detached-nav)" raw="yes"]] + + diff --git a/2022/talks/eev.md b/2022/talks/eev.md new file mode 100644 index 00000000..b11e7b2c --- /dev/null +++ b/2022/talks/eev.md @@ -0,0 +1,57 @@ +[[!meta title="Bidirectional links with eev"]] +[[!meta copyright="Copyright © 2022 Eduardo Ochs"]] +[[!inline pages="internal(2022/info/eev-nav)" raw="yes"]] + + + + + +# Bidirectional links with eev +Eduardo Ochs + +[[!inline pages="internal(2022/info/eev-before)" raw="yes"]] + +Consider the two sexps below: + + (code-c-d "foobar" "/tmp/foo/bar/" :anchor) + (code-c-d "fb" "/tmp/foo/bar/" :anchor) + +Each one of them defines several "short hyperlink" functions. After +running them the three sexps below are roughly equivalent: + + (find-file "/tmp/foo/bar/plic.txt") + (find-foobarfile "plic.txt") + (find-fbfile "plic.txt") + +The "`code-c-d`"s above also define functions with even shorter names +– `find-foobar` and `find-fb` - that point to "anchors" in files in +the directory `/tmp/foo/bar/`. The three sexps below are roughly +equivalent - + + (find-fline "/tmp/foo/bar/plic.txt" "«bletch»") + (find-foobar "plic.txt" "bletch") + (find-fb "plic.txt" "bletch") + +Until feb/2022 the only way that I had to produce these hyperlinks to +anchors quickly required a LOT of muscle memory… I had to type this, + + M-1 M-h M-w M-h M-h 9* M-h M-2 M-h M-y M-h M-- M-h M-w M-k + +where the number of "``"s depended on whether I preferred +`find-foobar` of `find-fb` - i.e., of on what is my preferred "code" +for the "directory" `/tmp/foo/bar/`; either "`foobar`" or "`fb`". + +In this presentation I will show a much better way to generate short +hyperlinks to anchors and push these short hyperlinks to the kill +ring, and how I use that to create bidirectional hyperlinks between my +notes on a language $LANGUAGE and programs written in that language. + +For more info see [this page](http://angg.twu.net/emacsconf2022-kla.html). + + + +[[!inline pages="internal(2022/info/eev-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/eev-nav)" raw="yes"]] + +[[!taglink CategoryEEV]] diff --git a/2022/talks/eshell.md b/2022/talks/eshell.md new file mode 100644 index 00000000..cd94b2ec --- /dev/null +++ b/2022/talks/eshell.md @@ -0,0 +1,30 @@ +[[!meta title="Top 10 reasons why you should be using Eshell"]] +[[!meta copyright="Copyright © 2022 Howard Abrams"]] +[[!inline pages="internal(2022/info/eshell-nav)" raw="yes"]] + + + + + +# Top 10 reasons why you should be using Eshell +Howard Abrams (he/him) + +[[!inline pages="internal(2022/info/eshell-before)" raw="yes"]] + +While Eshell is this quick and dirty way to run external commands, its +*dirtiness* plays into the Lisp’s *malleable* big ball of mud metaphor, +and I have a number of quick hacks that will make you want to play in +this puddle. + +This will be a lightning talk that I will pre-record to show off some +features in eshell I found while diving into the source code … stuff +you can’t do in another terminals. Did you know that \`$$\` is a special +variable that contains the output from the last command? + + + +[[!inline pages="internal(2022/info/eshell-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/eshell-nav)" raw="yes"]] + + diff --git a/2022/talks/handwritten.md b/2022/talks/handwritten.md new file mode 100644 index 00000000..90044ee3 --- /dev/null +++ b/2022/talks/handwritten.md @@ -0,0 +1,32 @@ +[[!meta title="How to incorporate handwritten notes into Emacs Orgmode"]] +[[!meta copyright="Copyright © 2022 Bala Ramadurai"]] +[[!inline pages="internal(2022/info/handwritten-nav)" raw="yes"]] + + + + + +# How to incorporate handwritten notes into Emacs Orgmode +Bala Ramadurai (his/him) + +[[!inline pages="internal(2022/info/handwritten-before)" raw="yes"]] + +Research suggests that note taking is most effective when done by hand. Yes, handwritten notes. Certainly, typewritten or typed out notes are more efficient, however notes written by hand are retained by the human brain much longer. + +Integrating handwritten notes into a computer leaned productivity workflow is tricky. Also, in terms of hardware, if all you have is a smartphone, then we need to deal with the situation a bit differently. + +This talk will introduce to you a simple system to integrate handwritten notes into your org-mode (Emacs) based productivity workflow. + +- Gist of the problem of dealing with handwritten notes +- Advantages of handwritten notes +- Emacs org mode workflow + - Option 1: Hardware for handwriting not available + - Option 2: Hardware for handwriting available + + + +[[!inline pages="internal(2022/info/handwritten-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/handwritten-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] diff --git a/2022/talks/haskell.md b/2022/talks/haskell.md new file mode 100644 index 00000000..167ba211 --- /dev/null +++ b/2022/talks/haskell.md @@ -0,0 +1,24 @@ +[[!meta title="Haskell code exploration with Emacs"]] +[[!meta copyright="Copyright © 2022 Yuchen Pei"]] +[[!inline pages="internal(2022/info/haskell-nav)" raw="yes"]] + + + + + +# Haskell code exploration with Emacs +Yuchen Pei (he/him/himself/his/his) + +[[!inline pages="internal(2022/info/haskell-before)" raw="yes"]] + +In this talk I will share my experience with Haskell development using +Emacs. More specifically I will focus on code exploration and org +documentation generation using haddorg. + + + +[[!inline pages="internal(2022/info/haskell-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/haskell-nav)" raw="yes"]] + +[[!taglink CategoryCoding]] diff --git a/2022/talks/health.md b/2022/talks/health.md new file mode 100644 index 00000000..062e1476 --- /dev/null +++ b/2022/talks/health.md @@ -0,0 +1,36 @@ +[[!meta title="Health data journaling and visualization with Org Mode and GNUplot"]] +[[!meta copyright="Copyright © 2022 David O'Toole"]] +[[!inline pages="internal(2022/info/health-nav)" raw="yes"]] + + + + + +# Health data journaling and visualization with Org Mode and GNUplot +David O'Toole (he/him) + +[[!inline pages="internal(2022/info/health-before)" raw="yes"]] + +I intend for this to be a 20-minute talk. + +"GNU Emacs with Org Mode and GNUplot offer a complete Free Software +solution for tracking health information based on a daily data +journal. With org capture templates and data tables, you can easily +enter facts for each day such as hours of sleep, minutes of exercise, +doses of medication, weight, or even add freeform notes. Through the +use of subjective numeric scores you can track symptoms like stress, +anxiety, or pain. Org Mode's GNUplot support enables you to visualize +the data in order to spot correlations and evaluate trends. The use of +detailed record-keeping and graphing can help you communicate with +health care providers." + +A reusable org template will be provided at: + + + + +[[!inline pages="internal(2022/info/health-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/health-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] diff --git a/2022/talks/hyperorg.md b/2022/talks/hyperorg.md new file mode 100644 index 00000000..d21d8523 --- /dev/null +++ b/2022/talks/hyperorg.md @@ -0,0 +1,38 @@ +[[!meta title="Powerful productivity with Hyperbole and Org Mode"]] +[[!meta copyright="Copyright © 2022 Robert Weiner"]] +[[!inline pages="internal(2022/info/hyperorg-nav)" raw="yes"]] + + + + + +# Powerful productivity with Hyperbole and Org Mode +Robert Weiner (wine-er) + +[[!inline pages="internal(2022/info/hyperorg-before)" raw="yes"]] + +GNU Hyperbole and Org Mode are both parts of Emacs; +both offer outlining and hypertext support but Org uses its own +native format while Hyperbole can work across all major modes and +data formats, including Org's. The two systems are compatible. +This talk will show ways to use them together and the resultant +productivity benefits that can be achieved. + +Outline: + +a. Context-sensitive Action Key on Org Constructs +b. Automate Actions in Org Mode with Hyperbole Key Series +c. Rapidly Link to or from Org Headers, e.g. in Source Code +d. Search over Org Notes with Hyperbole's HyRolo +e. Dynamically Expand/Contract Org outlines exported to web pages +f. Embed Org Tables in Hyperbole Koutlines +g. Create Your Own Hyperbole Implicit Buttons from Org +h. Hyperbole Expands Org Mode to an Emacs-wide Persistant Hyperbutton-Action Capability on Any Textual Format + + + +[[!inline pages="internal(2022/info/hyperorg-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/hyperorg-nav)" raw="yes"]] + +[[!taglink CategoryHyperbole]] diff --git a/2022/talks/journalism.md b/2022/talks/journalism.md new file mode 100644 index 00000000..220a8e1c --- /dev/null +++ b/2022/talks/journalism.md @@ -0,0 +1,87 @@ +[[!meta title="Emacs journalism (or everything's a nail if you hit it with Emacs)"]] +[[!meta copyright="Copyright © 2022 Alfred Zanini"]] +[[!inline pages="internal(2022/info/journalism-nav)" raw="yes"]] + + + + + +# Emacs journalism (or everything's a nail if you hit it with Emacs) +Alfred Zanini (he/they) + +[[!inline pages="internal(2022/info/journalism-before)" raw="yes"]] + + +# PART I - Where I started + + +## Figuring out what you want out of your workflow + +For me, that is: + +- note-taking and todos for admin and work tasks +- project management - setting up deadlines for each task and reminders to check in with people +- a writing environment when I need to focus on script work +- a way to experiment with coding and integrating that into my work +- storyboarding different scenes +- scheduling interviews and reachouts for interviews + + +## Presentation of my previous workflow + +Using google drive, word, storyboarder, wechat, notion + + +# Part II - Where I ended up + + +## Why Emacs ? + + +## Org-Contacts + +Setting up Org-Contacts to track documentary leads and keep up with them - +also in use for personal contacts + + +## ORG Roam + +Using Org-Roam to link project ideas and leads, and add summaries of interviews +/ transcripts to contact files. Org-Mode and Org-Contacts to schedule interviews, +reaching out, check-ins. All the while writing the script for the project on the +Org-Roam page, with global project questions and specific interview questions +for each scheduled shoot. + + +## PANDOC and working with colleagues + +Once my first draft of the script is ready, I need to be able to share it for review. +This is where the "Everything's a nail when you hit it with emacs" part comes +in. Using Org-Mode for comments and for coloring with HTML tags and source +blocks Not the easiest nor the most fun way to collaborate, but it is where I +have ended up on. + + +## Other packages I use regularly for a documentary workflow + +Mu4e Fountain.el hledger-mode bibtex for research papers present + + +# Conclusions + + +## Forever Work In Progress + +A lot of features to be added and kinks +to be worked out but getting to a state where you can use software +that you love every day is the most important point to me + +So let's keep modding our configs! + + + +[[!inline pages="internal(2022/info/journalism-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/journalism-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] [[!taglink CategoryOrgRoam]] diff --git a/2022/talks/jupyter.md b/2022/talks/jupyter.md new file mode 100644 index 00000000..0d70d5f5 --- /dev/null +++ b/2022/talks/jupyter.md @@ -0,0 +1,42 @@ +[[!meta title="Edit live Jupyter notebook cells with Emacs"]] +[[!meta copyright="Copyright © 2022 Blaine Mooers"]] +[[!inline pages="internal(2022/info/jupyter-nav)" raw="yes"]] + + + + + +# Edit live Jupyter notebook cells with Emacs +Blaine Mooers (Blane Moors, he/him) + +[[!inline pages="internal(2022/info/jupyter-before)" raw="yes"]] + +My talk will address a dilemma faced daily by many technical writers and programmers. +Like many academics, I use several web-based platforms for writing prose (e.g., 750words, Overleaf) and interactive computing (Jupyter Notebook, Google Colab Notebooks). +The first group lacks support for snippets. +The second group has support for snippets, but this support does not include tab triggers and tab stops. +The absence of tab stops can increase the number of bugs by overlooking parameter values in the snippet that need to be changed to adapt the snippet to the current problem. +One solution to the absence of full-powered snippets is to apply Emacs with yasnippets to these web-based platforms. + +One route to doing so is to use the atomic-chrome package for Emacs and the GhostText Extension for web browsers. +These two software packages enable two-way communication via a web socket between an Emacs buffer and the text area of the web page. +Edits made on the web side of the socket are immediately sent to the Emacs buffer and vice versa. +The Emacs's snippets and other editing tools only work in the Emacs buffer. +The connection can be closed from either side. +This route has enabled me to apply snippets of LaTeX code to my daily writing in 750words. +I have been able to convert 750words into a platform for writing in LaTeX; by default, it uses markdown. +I have also been able to apply code snippets for Julia, Python, R, and so on in Jupyter notebook cells. +In other words, I get to extend my time writing in Emacs. + +In my ten-minute talk, I will describe my problems with web-based platforms and their solution with Emacs. +I will describe where to find the required software and how I configured Emacs. +I will present several precautions for using GhostText and describe the limitations of its application. +I will provide links to collections of snippets I found handy daily usage of 750words and Jupyter. + + + +[[!inline pages="internal(2022/info/jupyter-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/jupyter-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] diff --git a/2022/talks/justl.md b/2022/talks/justl.md new file mode 100644 index 00000000..99f529a4 --- /dev/null +++ b/2022/talks/justl.md @@ -0,0 +1,29 @@ +[[!meta title="justl: Driving recipes within Emacs"]] +[[!meta copyright="Copyright © 2022 Sibi Prabakaran"]] +[[!inline pages="internal(2022/info/justl-nav)" raw="yes"]] + + + + + +# justl: Driving recipes within Emacs +Sibi Prabakaran (He/Him) + +[[!inline pages="internal(2022/info/justl-before)" raw="yes"]] + +justl.el is a major mode for driving justfiles. + +Justfiles are a way to save and run project specific commands. Think +of it like Makefile, but purely focused as a command runner. + +The purpose of the talk is to give a brief introduction about +justfile and then followed by how to use the justl.el extension to +drive justfiles from within Emacs. + + + +[[!inline pages="internal(2022/info/justl-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/justl-nav)" raw="yes"]] + +[[!taglink CategoryCoding]] diff --git a/2022/talks/links.md b/2022/talks/links.md new file mode 100644 index 00000000..f7012201 --- /dev/null +++ b/2022/talks/links.md @@ -0,0 +1,34 @@ +[[!meta title="Linking headings with org-super-links (poor-man's Zettelkasten)"]] +[[!meta copyright="Copyright © 2022 Karl Voit"]] +[[!inline pages="internal(2022/info/links-nav)" raw="yes"]] + + + + + +# Linking headings with org-super-links (poor-man's Zettelkasten) +Karl Voit (he/him) + +[[!inline pages="internal(2022/info/links-before)" raw="yes"]] + +As written on + Karl thinks +that a full-blown Zettelkasten workflow is not always a perfect match +for a given set of requirements. + +To him, the most important aspects of the Zettelkasten method are the +bi-directional links between arbitrary headings. If you want to use +such links without the additional burden and benefit of a +Zettelkasten implementation, you might want to learn how +org-super-links is able to help you here. + +In this talk, you will see how org-super-links are being used in +the author's setup for linking headings. + + + +[[!inline pages="internal(2022/info/links-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/links-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] [[!taglink CategoryZettelkasten]] diff --git a/2022/talks/localizing.md b/2022/talks/localizing.md new file mode 100644 index 00000000..6acbf7b7 --- /dev/null +++ b/2022/talks/localizing.md @@ -0,0 +1,30 @@ +[[!meta title="Pre-localizing Emacs"]] +[[!meta copyright="Copyright © 2022 Jean-Christophe Helary"]] +[[!inline pages="internal(2022/info/localizing-nav)" raw="yes"]] + + + + + +# Pre-localizing Emacs +Jean-Christophe Helary (he/him) + +[[!inline pages="internal(2022/info/localizing-before)" raw="yes"]] + +Before Emacs user-facing strings are localized to users’ languages (will that ever happen?), there are things developers must remember when including such strings in the code, and there are things that emacs-lisp beginners (like me, forever) can do to help when they face such issues. + +It is not easy to write naturally flowing language when the language depends on program variables, but even if we stick to English for the time being, it is important to separate natural language from computer language as much as possible. + +I will be presenting an old patch to packages.el accepted in June 2018 that took me about a year to write. The origin of the patch is a plural mistake in the packages install messages. As you can see pre-patch, the code was filled with English substrings embedded into the code to produce pasts, plurals and all sorts of English grammatical constructs. + + + +Even if it is a beginner’s patch (thoroughly reviewed by dev-experts), it shows what can be done by emacs-lisp beginners to help with “straightening” the strings to reduce the number of potential English bugs and then to make Emacs strings easier to be handled by real localization processes, one day. + + + +[[!inline pages="internal(2022/info/localizing-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/localizing-nav)" raw="yes"]] + + diff --git a/2022/talks/lspbridge.md b/2022/talks/lspbridge.md new file mode 100644 index 00000000..f1efb495 --- /dev/null +++ b/2022/talks/lspbridge.md @@ -0,0 +1,30 @@ +[[!meta title="lsp-bridge: complete asynchronous LSP client"]] +[[!meta copyright="Copyright © 2022 Andy Stewart"]] +[[!inline pages="internal(2022/info/lspbridge-nav)" raw="yes"]] + + + + + +# lsp-bridge: complete asynchronous LSP client +Andy Stewart + +[[!inline pages="internal(2022/info/lspbridge-before)" raw="yes"]] + +Emacs built-in single-threaded mechanism and GC design will cause Emacs to freeze when receiving oversized LSP data. + +Lsp-bridge uses python's threading technology to build caches that bridge Emacs and LSP server. Lsp-bridge will provide a smooth completion experience without compromise to slow down emacs' performance. + +lsp-bridge is completely asynchronous, to the point that even the completion popup is controlled by lsp-bridge. It offloads all the computation to an external python process, and hence the emacs session itself stays always responsive, as it has very few things to do. + +lsp-bridge has now supported 39 LSP servers and all kinds completion backend: include LSP、 TabNine、 Citre、 Elisp、 Search Words、 Path、 Yasnippet、 Tempel、 Telegra、 English etc, it just works pretty well out of the box. + +Related design, please check and (sorry, I'm Chinese Emacser) + + + +[[!inline pages="internal(2022/info/lspbridge-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/lspbridge-nav)" raw="yes"]] + +[[!taglink CategoryCoding]] diff --git a/2022/talks/mail.md b/2022/talks/mail.md new file mode 100644 index 00000000..6d3f54d7 --- /dev/null +++ b/2022/talks/mail.md @@ -0,0 +1,82 @@ +[[!meta title="Revisiting the anatomy of Emacs mail user agents"]] +[[!meta copyright="Copyright © 2022 Mohsen BANAN"]] +[[!inline pages="internal(2022/info/mail-nav)" raw="yes"]] + + + + + +# Revisiting the anatomy of Emacs mail user agents +Mohsen BANAN (MO-HH-SS-EN, he/him) + +[[!inline pages="internal(2022/info/mail-before)" raw="yes"]] + +Actually, it makes very good sense to use Emacs as your Mail User Agent (MUA). A dominant and fundamental aspect of +mail composition and mail processing is editing. And, if you live inside of Emacs, of course you expect to have the +ultimate messaging environment. + +Over the years many Emacs MUAs have appeared. As of 2022, the following Emacs MUAs are available to choose from: +Rmail, Gnus, VM, WanderLust, Mew, mu4e and notmuch.el. + +Emacs MUAs can be used as Monolithic-MUAs (with elisp smtp and imap protocol implementations) or as Split-MUAs (with external +smtp and imap protocol implementations). We make a case for superiority of the Split-MUA model. +Recent evolutions of Gmail and Outlook towards requiring OAuth and our agility to better address that +requirement based on the Split-MUA anatomy is one of our justifications for converging +towards the Split-MUA anatomy. + +While what we are presenting here applies to all Emacs MUAs, our focus is Gnus. +Gnus is distributed with Emacs proper and is the richest and most potent MUA, anywhere! + +We have wrapped all that is needed to use Gnus as a complete Split-MUA for Unix-like environments in a package +called MARMEE (Multi-Account Resident Message Exchange Environment). + +MARMEE consists of a set of packages that span: + +Deb GNU/Linux Packages +MyPi Python Packages +Emacs Elisp Packages +plus everything that is needed to properly install these on Debian-like GNU/Linux systems and +integrate them with Gnus. By choice, we have limited our integration languages to elisp, python and bash. + +MARMEE component packages include: + +EoQmail (deb+MyPi) – Edge oriented Qmail, as a Resident Mail Submission UA. +qmail-remote is replaced by a python implementation which includes OAuth awareness. +qmail-inject is replaced by a python implementation which is X822-Bus aware (for DSN requests) +offlineimap (MyPi) – as a Resident Mail Retrieval UA. +offlineimap includes OAuth awareness. +notmuch (deb) – for searching +gpg (deb) – for privacy and integrity +flufl.bounce (MyPi) – for bounces and DSN (Delivery Status Notification) processing. +bisos.cs (MyPi) – BISOS CommandServices for configuration and secrets management and integration. +gmailOauth2.cs (MyPi) – For SMTP and IMAP authentication/authorization through gmail.com +Used by qmail-remote for out-going and by offlineimap for in-coming OAuth based mail. +org-msg (EmacsPkg) – For HTML-composition in org-mode and for htmlized citations. +mcdt (EmacsPkg) – Mail Composition, Templating, Distribution and Tracking. +The integration framework for MARMEE is BISOS (ByStar Internet Services OS). +Full integration of Emacs, MARMEE and BISOS is called Blee (ByStar Libre-Halaal Emacs Environment). +The easiest way to use MARMEE is to install BISOS – which includes Blee. + +In this talk I will demonstrate what a wonderful environment the Split-MUA model of Gnus+MARMEE can be. + +After walking through the concepts and the integration framework, I'll walk through transparent access to +multiple mail servers conveniently and show org-mode composition of BIDI emails going out as html. + +My primary goal is to show that these packages can be integrated, but that integration is not simple. +furthermore, various improvements can be made to the packages to improve the complete integrated environment. +I'll be enumerating my requests from relevant package managers. +If we were to collectively buy into something like this, we can greatly simplify use of Emacs MUAs +with all mail systems – including the commonly used gmail and outlook. + +Of course, we should not be using gmail and outlook. Instead we should extend Libre Software into Libre Services +and provide for edge-oriented autonomy and privacy in the services domain. There is a services side to +what we have presented here. It is called "The Libre-Halaal By\* (ByStar) Digital Ecosystem" – +Perhaps that could be a topic for the next EmacsConf. + + + +[[!inline pages="internal(2022/info/mail-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/mail-nav)" raw="yes"]] + +[[!taglink CategoryMail]] diff --git a/2022/talks/meetups.md b/2022/talks/meetups.md new file mode 100644 index 00000000..6bc0c0ca --- /dev/null +++ b/2022/talks/meetups.md @@ -0,0 +1,42 @@ +[[!meta title="Attending and organizing Emacs meetups"]] +[[!meta copyright="Copyright © 2022 Bhavin Gandhi"]] +[[!inline pages="internal(2022/info/meetups-nav)" raw="yes"]] + + + + + +# Attending and organizing Emacs meetups +Bhavin Gandhi (he/him, IRC: bhavin192) + +[[!inline pages="internal(2022/info/meetups-before)" raw="yes"]] + +Events like EmacsConf are a great place to meet Emacs users around the +world. You get to learn about new ideas, workflows, packages, and make +new friends as well :) What if I tell you that you can meet fellow Emacs +users more frequently, that too in your region/time zone? Yes, meetup +groups! + +In this talk, I will help you explore Emacs meetup groups of your +interest. And cover how to attend meetups, how to stay updated with all +the Emacs related events, and more. + +Organizing a meetup and setting up a platform for others is even more +fun! I will cover how to easily get started with organizing meetup +events as well. + +Outline: + +- Why meetups? +- How to find nearby groups? +- Staying updated with events +- Organizing meetups +- My learnings from organizing meetup events + + + +[[!inline pages="internal(2022/info/meetups-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/meetups-nav)" raw="yes"]] + +[[!taglink CategoryCommunity]] diff --git a/2022/talks/news.md b/2022/talks/news.md new file mode 100644 index 00000000..ecb22b83 --- /dev/null +++ b/2022/talks/news.md @@ -0,0 +1,22 @@ +[[!meta title="Emacs News highlights"]] +[[!meta copyright="Copyright © 2022 Sacha Chua"]] +[[!inline pages="internal(2022/info/news-nav)" raw="yes"]] + + + + + +# Emacs News highlights +Sacha Chua (SA-sha CHEW-ah, she/her, IRC: sachac, ) + +[[!inline pages="internal(2022/info/news-before)" raw="yes"]] + +Quick overview of Emacs community highlights since the last conference + + + +[[!inline pages="internal(2022/info/news-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/news-nav)" raw="yes"]] + +[[!taglink CategoryEmacsNews]] diff --git a/2022/talks/orgvm.md b/2022/talks/orgvm.md new file mode 100644 index 00000000..ef37387d --- /dev/null +++ b/2022/talks/orgvm.md @@ -0,0 +1,25 @@ +[[!meta title="orgvm: a simple HTTP server for org"]] +[[!meta copyright="Copyright © 2022 Corwin Brust"]] +[[!inline pages="internal(2022/info/orgvm-nav)" raw="yes"]] + + + + + +# orgvm: a simple HTTP server for org +Corwin Brust (he/him/any, IRC: corwin) + +[[!inline pages="internal(2022/info/orgvm-before)" raw="yes"]] + +OrgVM is, so far, a very simple nodejs wrapper, invoking Emacs in +batch mode. I'll talk about how I use it to make project notes +available on demand to my colleagues and how it works, especially the +generation of elisp from javascript/JSON. + + + +[[!inline pages="internal(2022/info/orgvm-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/orgvm-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] diff --git a/2022/talks/orgyear.md b/2022/talks/orgyear.md new file mode 100644 index 00000000..cf74ebe6 --- /dev/null +++ b/2022/talks/orgyear.md @@ -0,0 +1,26 @@ +[[!meta title="This Year in Org"]] +[[!meta copyright="Copyright © 2022 Timothy"]] +[[!inline pages="internal(2022/info/orgyear-nav)" raw="yes"]] + + + + + +# This Year in Org +Timothy (he/him, IRC: tecosaur) + +[[!inline pages="internal(2022/info/orgyear-before)" raw="yes"]] + +You've all been avid readers of the (somewhat irregular) "This Month in +Org", now you can be an avid listener of a special edition exclusive to +EmacsConf: "This Year in Org", a quick rundown of major developments in +Org over the past year, and perhaps a hint of some things lying around +the corner. + + + +[[!inline pages="internal(2022/info/orgyear-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/orgyear-nav)" raw="yes"]] + + diff --git a/2022/talks/python.md b/2022/talks/python.md new file mode 100644 index 00000000..410b1368 --- /dev/null +++ b/2022/talks/python.md @@ -0,0 +1,69 @@ +[[!meta title="Short hyperlinks to Python docs"]] +[[!meta copyright="Copyright © 2022 Eduardo Ochs"]] +[[!inline pages="internal(2022/info/python-nav)" raw="yes"]] + + + + + +# Short hyperlinks to Python docs +Eduardo Ochs + +[[!inline pages="internal(2022/info/python-before)" raw="yes"]] + +If we have a local copy of the Python docs installed then it is easy +to define the three hyperlink functions in the Python program below, + + # (find-pydoc "tutorial/classes") + # (find-pydocw "tutorial/classes") + # (find-pydocr "tutorial/classes") + class MyVector: + def __init__(v, x, y): + v.x = x + v.y = y + +such that each one expands its argument in the right way, and the +first one opens the local URL + in +the browser, the +second one opens , and +the third one opens the RST source of those HTML pages in Emacs: the +file `//tutorial/classes.rst.txt`. + +The docs for Python are designed to be navigated in a browser. Suppose +that we start on the page +[classes.html](https://docs.python.org/3/tutorial/classes.html) +above, follow a couple of +hyperlinks, and then we find this other page that, ahem, is very +interesting and important and we *need* to have hyperlinks to: + + + +The most obvious way to create elisp hyperlinks to that page is to +copy its URL to Emacs, edit it by hand to produce a `(find-pydoc ...)` +hyperlink, duplicate that hyperlink twice, and add a "`w`" and a "`r`" +into the right places… but this is not very practical. + +In this presentation I will show a practical way to handle that. It is +a new module of eev – +[eev-rstdoc.el](http://angg.twu.net/eev-current/eev-rstdoc.el.html) +– that performs both the +expansions needed by `find-pydoc{,w,r}` and the "shrinkings" that +convert URLs and filenames to short hyperlinks. Eev-rstdoc.el comes +with three "families" of hyperlinks, expansions, and shrinkings: one +for Python docs, one for SymPy, and one for MatPlotLib. It is easy to +add new families, and the parameters for expansion and shrinking in +each family are easy to configure. + +For more info see [this +page](http://angg.twu.net/emacsconf2022-py.html). For a translation of the Python tutorial +to a format that has only executable examples and elisp hyperlinks, +see [this](http://angg.twu.net/e/python.e.html#tut-numbers). + + + +[[!inline pages="internal(2022/info/python-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/python-nav)" raw="yes"]] + +[[!taglink CategoryPython]] diff --git a/2022/talks/rde.md b/2022/talks/rde.md new file mode 100644 index 00000000..17129307 --- /dev/null +++ b/2022/talks/rde.md @@ -0,0 +1,34 @@ +[[!meta title="rde Emacs introduction"]] +[[!meta copyright="Copyright © 2022 Andrew Tropin"]] +[[!inline pages="internal(2022/info/rde-nav)" raw="yes"]] + + + + + +# rde Emacs introduction +Andrew Tropin (he/him) + +[[!inline pages="internal(2022/info/rde-before)" raw="yes"]] + +rde Emacs is a vanilla-flavored distribution of Emacs, which intergates +well with your OS, WM and rest of the environment. It's built on top of +Guix Home project and allows to manage not only elisp packages and +configurations, but other dependencies like operating system packages, +user program configurations in a declarative and reproducible manner. + +You don't need to follow complicated installation instructions, apply +workarounds and be afraid of updates: just do it, update rde, throw some +custom elisp code, declare and customize features you need or want to +try in a simple lisp (Scheme) file and you will get it. Don't like the +result? Just rollback to previous generation and EVERYTHING will work +as before. Once you make it to your liking, it will work forever\*, even +if you move to a new laptop/workstation. + + + +[[!inline pages="internal(2022/info/rde-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/rde-nav)" raw="yes"]] + +[[!taglink CategoryConfiguration]] diff --git a/2022/talks/realestate.md b/2022/talks/realestate.md new file mode 100644 index 00000000..b1861c62 --- /dev/null +++ b/2022/talks/realestate.md @@ -0,0 +1,35 @@ +[[!meta title="Real estate and Org table formulas"]] +[[!meta copyright="Copyright © 2022 Daniel Gopar"]] +[[!inline pages="internal(2022/info/realestate-nav)" raw="yes"]] + + + + + +# Real estate and Org table formulas +Daniel Gopar (He/Him, IRC: gopar) + +[[!inline pages="internal(2022/info/realestate-before)" raw="yes"]] + +This will be a 20 minute presentation on how I use org mode tables (specifically formulas) on how I can quickly see if a deal is feasible or not. + +Topics will include: + +- Creating Table Formulas +- Special Buffer Editing Formulas +- Formatting output +- Special Debugging just for formulas +- Creating Custom Formulas +- Automatically re-calculating rows/table +- Finally Putting it all together to tell at a glance if a property is ideal or not + +Essentially bits and pieces from this section of the manual: + + + + +[[!inline pages="internal(2022/info/realestate-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/realestate-nav)" raw="yes"]] + +[[!taglink CategoryOrgMode]] diff --git a/2022/talks/rolodex.md b/2022/talks/rolodex.md new file mode 100644 index 00000000..e9b7cad9 --- /dev/null +++ b/2022/talks/rolodex.md @@ -0,0 +1,76 @@ +[[!meta title="Build a Zettelkasten with the Hyperbole Rolodex"]] +[[!meta copyright="Copyright © 2022 Ramin Honary"]] +[[!inline pages="internal(2022/info/rolodex-nav)" raw="yes"]] + + + + + +# Build a Zettelkasten with the Hyperbole Rolodex +Ramin Honary ("Rah-mean" (hard-H) "Ho-na-ree", he/him) + +[[!inline pages="internal(2022/info/rolodex-before)" raw="yes"]] + +"Zettelkasten" is a methodology for marshalling your knowledge, +ideas, creativity, into a database of hyperlinked notes, each note +representing a single quantity of knowledge. The method was first +devised by a well-published social scientist named Niklas Luhmann. +Though he constructed his database with actual slips of paper in a +box with a notebook for indexing, naturally, modern software removes +the manual labor from the process. In the world of Emacs packages, +Org Mode is the most well-known package that provides the tools +necessary for building a Zettelkasten, but it is not the only Emacs +package to provide such tools. But there is an alternative: an +oft-overlooked Emacs package called Hyperbole, and in particular the +"Rolodex" feature, called "HyRolo." It was originally designed for +tracking your personal relations, but it can be used to build a +Zettelkasten with almost no additional configuration or 3rd-party +packages. HyRolo is a purely textual database, and does not require +an external database software to index the notes. It also provides a +very rich set of "actions" so that notes not only link to each +other, but can also trigger Emacs to execute code as well. + +Outline: (about 1 minute per outline item) + +1. Quick overview of the Zettelkasten methodology + - 1.1. What is a single quantity of knowledge + - 1.2. Linking between pieces of knowledge + - 1.3. Composing pieces of knoweldge into hierarchies +2. Tools provided by the Hyperbole Rolodex (HyRolo) + + 2.1. The plain text database format + + 2.1.1. Possible brief digression to explain Hyperbole menu + system + + 2.2. Demo how to add a new entry + + 2.3. Demo how to searching entries + + 2.4. Demo how to hyperlink entries + + 2.5. Overview of the many various types of hyperlink actions + + 2.6. How to compose a hierarchy of notes. +3. Practical examples + - 3.1. Managing daily tasks + - 3.1.1. Integration with Org Agenda to manage TODO lists + - 3.1.2. Keeping track of people, conversations, mail + - 3.1.3. Keeping track of work, projects + - 3.2. Doing research, writing blogs or papers + - 3.2.1. Note hierarchies become your table of contents + - 3.2.2. Following chains of ideas to fill in each section, trimming excess prose + - 3.2.3. Keeping track of sources, references + - 3.3. Writing fiction + - 3.3.1. Heirarchy is less rigid, should follow the story telling model: intro -> conflict -> climax -> resolution + - 3.3.2. Rolodex of fictional characters, chain ideas such that they construct a personal history for each character + - 3.3.3. Chains of events are not as important as establishing tone and mood. Order of exposition need not be linear +4. Conclusions + + + +[[!inline pages="internal(2022/info/rolodex-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/rolodex-nav)" raw="yes"]] + +[[!taglink CategoryHyperbole]] [[!taglink CategoryZettelkasten]] diff --git a/2022/talks/school.md b/2022/talks/school.md new file mode 100644 index 00000000..c5d1e239 --- /dev/null +++ b/2022/talks/school.md @@ -0,0 +1,39 @@ +[[!meta title="Back to school with Emacs"]] +[[!meta copyright="Copyright © 2022 Daniel Rösel"]] +[[!inline pages="internal(2022/info/school-nav)" raw="yes"]] + + + + + +# Back to school with Emacs +Daniel Rösel (ˈrøːzl̩) + +[[!inline pages="internal(2022/info/school-before)" raw="yes"]] + +This talk is aimed at those who would be interested in using Emacs for +school purposes. What it will present the listeners with is a +collection of tips and trick on how to be more efficient when taking +notes and organizing student life. Methods should apply to a target +audience studying at a university or high school. + +Outline: + +- **Part 1:** 5 - 10 min + - Present benefits of using Emacs over other software/hand-writing + - Present packages which support the mentioned benefits + - Packages used + - Usage and application of each package + - The ecosystem as a whole +- **Part 2:** ~5 min + - Demonstrate the work-flow + - Show applications in various regions of academics + - External input from other users + + + +[[!inline pages="internal(2022/info/school-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/school-nav)" raw="yes"]] + + diff --git a/2022/talks/science.md b/2022/talks/science.md new file mode 100644 index 00000000..52e24eb7 --- /dev/null +++ b/2022/talks/science.md @@ -0,0 +1,58 @@ +[[!meta title="Writing and organizing literature notes for scientific writing"]] +[[!meta copyright="Copyright © 2022 Vidianos"]] +[[!inline pages="internal(2022/info/science-nav)" raw="yes"]] + + + + + +# Writing and organizing literature notes for scientific writing +Vidianos + +[[!inline pages="internal(2022/info/science-before)" raw="yes"]] + +This talk is heavily inspired by an excerpt from the book "How to Take +Smart Notes" by Sonke Ahrens where he talks about writing a paper step +by step. My note taking process was heavily inspired by this book and +its arguably the part of my config I have written the most code for as +I wanted to personalize a lot of it. One of the most interesting parts +of it is how I write and organize my literature notes after reading +scientific articles. I am a 4th year university student in Chemical +Engineering so I have some relation to scientific writing for various +projects I have worked on for uni. I don't believe my workflow is +perfect for this, but since I have worked a lot on it, I think it will +be something useful to showcase and others interested in the topic +will gain something from it. + +This talk will focus on how Emacs has aided me in scientific writing +and will cover how I use various packages for this. Featured will be: +Org-noter, one of my favourite emacs packages which I use to annotate +articles using org-mode while reading them. I will focus primarily on +its integration with my org-roam-capture-templates and how it, +org-roam-bibtex and ivy-bibtex work together to very easily create and +flesh out literature notes for the articles I find, but I will also +briefly mention how I annotate articles. Then, how I use org-roam to +then take what I learned from this literature and create permanent +notes on it which I can then add easily to my Zettelkasten. And +finally, how I organize both literature and permanent notes on a +subject using my own project, the zetteldesk package, and how I can +very easily create a first draft of my work using this. With the draft +created organically through my notes, it is then almost effortless to +write the final work, as it consists simply of reading the draft, +making small changes and fixes and perfecting it so it is a ready +product. + +My ideal talk duration would be 20 minutes so I can explain my +workflow with this set of packages without skimming over too many +details. I will have time to touch on how I use all the packages that +participate in this workflow, and will also be able to show some of +the elisp that does all the work behind the scenes, which I personally +consider very useful. + + + +[[!inline pages="internal(2022/info/science-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/science-nav)" raw="yes"]] + +[[!taglink CategoryZettelkasten]] [[!taglink CategoryOrgMode]] [[!taglink CategoryOrgRoam]] diff --git a/2022/talks/sqlite.md b/2022/talks/sqlite.md new file mode 100644 index 00000000..b84db6c5 --- /dev/null +++ b/2022/talks/sqlite.md @@ -0,0 +1,39 @@ +[[!meta title="Using SQLite as a data source: a framework and an example"]] +[[!meta copyright="Copyright © 2022 Andrew Hyatt"]] +[[!inline pages="internal(2022/info/sqlite-nav)" raw="yes"]] + + + + + +# Using SQLite as a data source: a framework and an example +Andrew Hyatt (he/him) + +[[!inline pages="internal(2022/info/sqlite-before)" raw="yes"]] + +Emacs can now be built with SQLite, giving native support for reading +and writing to a database. With this, we can start seriously +considering a SQLite-first approach: instead of storing data on the +filesystem, and using various ad-hoc solutions for metadata, we can +use SQLite to store and search our data. This is essentially a +tradeoff between the power and speed of SQLite and the universality of +the filesystem. If we accept that this approach is useful, then a +standard way to store information in database, may be useful and +promote package interoperability, just as our single filesystem does. +The triples packages is a RDF-like database for supplying such a +flexible system for storing and retrieving data from SQLite. A sample +application, ekg, a replacement for org-roam, is shown using this, and +the advantages of the triple design are explained. + +Note to conference organizers: As of writing this abstract, I +haven't put either package on yet, I plan +on doing that before the end of September. If you'd like to be +notified, let me know. + + + +[[!inline pages="internal(2022/info/sqlite-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/sqlite-nav)" raw="yes"]] + +[[!taglink CategoryEmacsLisp]] diff --git a/2022/talks/survey.md b/2022/talks/survey.md new file mode 100644 index 00000000..852e06b5 --- /dev/null +++ b/2022/talks/survey.md @@ -0,0 +1,29 @@ +[[!meta title="Results of the 2022 Emacs Survey"]] +[[!meta copyright="Copyright © 2022 Timothy"]] +[[!inline pages="internal(2022/info/survey-nav)" raw="yes"]] + + + + + +# Results of the 2022 Emacs Survey +Timothy (he/him, IRC: tecosaur) + +[[!inline pages="internal(2022/info/survey-before)" raw="yes"]] + +If I am giving this talk, then a month ago the 2022 Emacs Survey will +have occurred! I will go through the motivations, implementation, +results, and plans of the Emacs Survey. + +Outline: + +- A quick overview of the main results of the 2022 Emacs Survey +- Discussion of motivation, implementation, and future plans + + + +[[!inline pages="internal(2022/info/survey-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/survey-nav)" raw="yes"]] + + diff --git a/2022/talks/tramp.md b/2022/talks/tramp.md new file mode 100644 index 00000000..4040d2bd --- /dev/null +++ b/2022/talks/tramp.md @@ -0,0 +1,27 @@ +[[!meta title="Elisp and the TRAMP: How to NOT write code you don't have to"]] +[[!meta copyright="Copyright © 2022 Grant Shangreaux"]] +[[!inline pages="internal(2022/info/tramp-nav)" raw="yes"]] + + + + + +# Elisp and the TRAMP: How to NOT write code you don't have to +Grant Shangreaux (Shang-groo or Shang-grow are fine, he/him, IRC: shoshin[m]) + +[[!inline pages="internal(2022/info/tramp-before)" raw="yes"]] + +When you have a hammer, everything looks like a nail. When you have +Emacs, everything looks like… what? This is a story of understanding +a particular feature of Tramp and realizing it could be used in all +sorts of places in Emacs-land. Some of them are truly useful, but I +ended up in a place where applying it was going to create a non-trivial +amount of work writing Emacs Lisp to extend EMMS. + + + +[[!inline pages="internal(2022/info/tramp-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/tramp-nav)" raw="yes"]] + + diff --git a/2022/talks/treesitter.md b/2022/talks/treesitter.md new file mode 100644 index 00000000..f62cadda --- /dev/null +++ b/2022/talks/treesitter.md @@ -0,0 +1,41 @@ +[[!meta title="Tree-sitter beyond syntax highlighting"]] +[[!meta copyright="Copyright © 2022 Abin Simon"]] +[[!inline pages="internal(2022/info/treesitter-nav)" raw="yes"]] + + + + + +# Tree-sitter beyond syntax highlighting +Abin Simon + +[[!inline pages="internal(2022/info/treesitter-before)" raw="yes"]] + +Tree sitter has seen a lot of development recently, but more often +than not folks are only aware of its use for syntax highliting. The +idea of this talk is to introduce some other usecases where they could +benefit from tree-sitter. + +This talk will be an overview of the kind of things that they will be +able to do with tree-sitter with demos but won't go in depth into how +they would all of them. The presentation will link to the resources +mentioned during the talk where folks can learn more about each of +them. + +This session will introduce them to things like (not final list): + +- textobjects using tree-sitter: +- Folding using tree-sitter: +- Navigating config headings: +- Using tree-sitter for narrowing: +- Intelligent snippets using tree-sitter: +- Using tree-sitter to get which-func like functionality: +- Some useful tree-sitter functions: tree-sitter-save-excursion + + + +[[!inline pages="internal(2022/info/treesitter-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/treesitter-nav)" raw="yes"]] + +[[!taglink CategoryTreeSitter]] diff --git a/2022/talks/wayland.md b/2022/talks/wayland.md new file mode 100644 index 00000000..750511c9 --- /dev/null +++ b/2022/talks/wayland.md @@ -0,0 +1,30 @@ +[[!meta title="Emacs should become a Wayland compositor"]] +[[!meta copyright="Copyright © 2022 Michael Bauer"]] +[[!inline pages="internal(2022/info/wayland-nav)" raw="yes"]] + + + + + +# Emacs should become a Wayland compositor +Michael Bauer + +[[!inline pages="internal(2022/info/wayland-before)" raw="yes"]] + +Since Emacs learned wayland last year, it can now become a wayland compositor. +Emacs is already a great window manager. Let us embrace this in the wayland +future, where managers become compositors. + +In this short talk I would like to convince you that this is a good idea and get +you exciting about the possibilities. I then outline how to go about +implementing this idea. + +Afterwards I would very much like to get a discussion started together. + + + +[[!inline pages="internal(2022/info/wayland-after)" raw="yes"]] + +[[!inline pages="internal(2022/info/wayland-nav)" raw="yes"]] + + -- cgit v1.2.3