Now you can use emacs.news to get to Emacs News.
That should save some clicking/typing.
It redirects to my blog category at the moment, so the URL doesn't show emacs.news after you get there, but I've added it to the note at the top of that category page to help people find out about the shortcut.
linkarzu wins the clip-off thanks to his fancy AI-powered clipping process!
Here's a snippet from our conversation today.
He'll be posting more clips, and I'm also going to edit the transcript of the conversation.
Fun fun fun!
Additional notes:
Substitution: I use (add-hook 'substitute-post-replace-functions #'sacha-substitute-save-common-edits) to save the changes. sacha-substitute-save-common-editsEdit text has functions like sacha-subed-fix-common-errors-in-text that apply those changes to my speech recognition results and sacha-subed-fix-common-errors-from-start that apply them to already-prepared transcripts. I really like how I can mark a region and use that to define the substitution, like changing "tug a" to "toggle".
I've been using phony to define more voice commands using a parser.
Apparently I cannot spell when thinking out loud. It is Orgzly Revived, not ogrzly.
This actually doesn't use generative AI in the sense of Gemini or Claude, except for the conversational French demo. I use a local speech recognition model (currently Orukeet) and local speech synthesis (Kokoro FastAPI), So depending on your feelings about large language models, the models might be small enough to be fine with you. Alternatively, there are classical approaches to both speech recognition and speech synthesis like kaldi and espeak-ng.
Transcript and screenshots
0:00Voice commands that mishear
Sacha: It turns out I cannotsay start streaming reliably. SometimesI say start screaming.Linkarzu: Or like if I say Neovim,it doesn't get it. Itsays "New of him".I want to take alook at what you weresharing a moment ago.The speech to text,and it happens in real time, right?Sacha: Oh yeah, yeah.
0:20How the live transcript works
Linkarzu: But I don't do stuffreal-time the way thatyou're doing right now.The transcription happenswhen we're done with the calland the process starts automatically.And a few hours after,I have the clips inmy dashboard that I canupload if I want, right?But it's not real-time andI'm like, oh, and I sawhow you did it onyour side and it's prettyaccurate. Like,what's the magic?What are you doing there?You're sending itsomewhere, right?Sacha: No, this is an entirely localmodel and I'm runningit in a computer withhardly any GPU. So I'mactually just making it useCPU onlyfor the speech recognition becauseI have a Lenovo P52 from2018, I think.So it doesn'tdo this GPU thing very well.I think you're usuallyOn a Mac, so you'respoiled for choices there.But speech recognition has gottenreally good over the lastfew years.I'm using Orukeet atthe moment.It's a multilingual model,so it can handle mypoor French pronunciationsjust as fine as myEnglish ones.I can press mykeyboard shortcut.For example,I can say,this is a test duringa chat with linkarzu.And then, becauseI've modified my dictionary,your channel name actually showsup properly. Oh, okay. Okay,okay, okay. We are talkingabout speech-to-text, dictation,all sorts of other things like that.Oh, where's my phone?Linkarzu: Okay, yeah, so it justputs it in.It's pretty accurate.It's extremely accurate.What's the nameyou said? Because I useWispr Flow, a local model aswell. I do the transcriptlocally on my Mac. Wispr Flowis what the AI decidedto use and I'm like,oh, it gets it, but not...Sacha: Yeah, the model I'm currentlyusing is called Orukeet.I think it's based onParakeet, but it's been tweakedfor more performanceand less memory.But there are so manynew models coming out.It's really quite interestingbecause every day or every other day,there's like, oh, try thisnew model.I'm not good enough tokeep on top of allthose changes. If I canmanage to get the AIto generate mea server that has anOpenAI interface, Ican plop it right intomy Emacs setupand it will just work.So I'm happy with that.And this is fast enoughthat I can use it to thinkand then when I havethe text,I can rearrange it howeverI'd like.
2:52Playing with voice commands
Sacha: So for example,"prepare to fast forward."We're here.Linkarzu: I have a similar command.Let me see if itworks. Hold on.You see my terminal right now, right?Yes. I don't know ifyou can see my screen.Virgin mode off.Sacha: Mm hmm. Yeah, yeah, yeah.I saw that.Linkarzu: It didn't work.But it changes my wallpaper andit changes my...Sacha: I have one too.Laser.Look, I changedmy cursor to alaser so I can say,here's my mousecursor, right?Linkarzu: Okay. Pretty cool.Sacha: Yeah, so the nice thingabout it...Oh, it's still listening.Okay.Let me just turn offlaser mode here. Oh,ah!Laser. Laser. Laser.Linkarzu: It happens to me aswell.Sacha: Edit, retry. Laser.Yeah, okay, there you go.
3:51Speech commands enable more shortcuts
Sacha: The nice thing aboutspeech commands is that itopens up a whole lotof other ways to runcommands without necessarily having tomemorize keyboard shortcuts.And you can have morefun with it too.So for example, now Ihave this command.It turns out I cannotsay "start streaming" reliably. SometimesI say start screaming. Orat least that's... Well,I know sometimes I accidentallysay that and sometimes that'swhat the speech recognition hears.So instead, my command forstarting this stream,because of course Emacs controlsmy OBS through WebSockets,is "let's go live".And my commandfor stopping the stream is"over and out".And just because it's alittle more fun to say,it becomes easier for meme to remember what Ineed to say in orderto make this happen.
4:37Does it handle hard words?
Linkarzu: Yeah, yeah, yeah.Now,why is it accurate? Andyou have a dictionary oflike thedifficult words. Like if Isay Neovim,it doesn't get it. Itsays "New of him",or it just puts whateverit wants, whenever it wants.Sometimes it puts something randomout there.What do you do foryours?Sacha: "Neovim is okay, I guess."Let's see if it doesa thing. Yeah, it gotthat without my needing tocorrect things. Let's pick aharder word.Anti-disestablishmentarianism.Close enough. Okay, you know,that requires very littleediting. What's adifficult word? Oh, actually, let'spick a different name.Sometimes it gets Prot's name wrong."Prot does a lot ofvideos on Emacs."Oh, no, it got him too.If there was a thing thatis difficult to say...What was that? Okay."Heisenbug is making org.nvim."That one. Okay, here we go."Heisenbug is making org.nvim."I mean, it's getting him.
5:51Thanking sponsors and members
Linkarzu: Let me thank myYouTube members, the CEOs areshown on screen, web2three,web2trhee.com, TED,cpnllc.com, and alsoGallo,these are the three CEOs,and I just want tothank the rest of theYouTube members,which are the ones that areshown here, sojust appreciateeach one of the membersfor supporting the channel, okay?
6:14Fixing misrecognized words with a shortcut
Linkarzu: So, it's a local model, interesting.It is a local model.Do you feed it adictionary at some point?Sacha: If I do need to changethings... Okay, so if Ineed to change things, let'ssay for example, OrgzlyRevived, you probably can't getthat one."I use Orgzly Revived onmy phone tocheck my tasks."Oh yeah, so here, right?Sacha: It says Orgsley Revived. Whatis that even?But I can press Ctrl+; andit uses substitute.el.Sacha: Orgzly Revived here. Andwhat that does, in additionto the substitutions that happenthroughout the buffer, so forexample, if I'm adding atranscript,it will change that allthroughout thetranscript. I've also added somecode because this is Emacs,I can just do that.that saves this in commonerrors or commonly misrecognized words.And then when I recognize text,whether it's before a voicecommand orif I'm just doing thisor whatever, itwill apply all of thosecommon fixes.Common edits.Sacha: Here we go. So itautomatically adds itto this thing here, whichgets savedautomatically for me.And that's the changethat I've just added.Linkarzu: Interesting. Pretty cool.Sacha: So it's really nice tohave that kind of [dictionary] shortcutbuilt into the way thatI edit things. All Iknow is I just hit Ctrl+;and put in what it'ssupposed to be.And then it getsnot only fixed inmy current file, but inthe future as well.Linkarzu: Yeah, I need towork on my transcript game.
7:51How the live transcript began
Sacha: Like many things in Emacs,this came out of abunch of small, seemingly unrelatedhacks.One was, I was havingthis conversation with a Frenchtutor and I was like,man, I am having ahard time making sure... Like,he would switch into lecturemode and I was tryingto have more conversation modeso I could practice some more, right?So I think I've got this right.Anyway, so I hada large language model generatea Python server, because sometimesI'm like, I just wanta proof of concept for this.I don't necessarily know allthe details of how towork with the Silero voiceactivity detection thing.Anyway, so make me a server thatcan listen to my audiodevices in real time withoutmessing up myactual microphone use if I'mon stream.Okay, so I have thisPython server and then Iwanted to visualize it withinEmacs. I gotthat visualizing inside Emacs.Then I wanted to say,all right, you know,why don't I have speechrecognition listening on this thingso that if I saysomething, it can check it off,like playing bingo, you know,if I say it, then itgives me a note thatI've actually said that wordor phrase. And soit could show me alist of the words orphrases that I still wantto say in conversation.And then, aswe're preparing for this conversation,I was like, you knowwhat would be really coolis if I couldhave that speech recognition,which is running anyway,give me a transcript ofthe current conversation in away that I can use it.I could then clipif I wanted tobecause sometimes I'll bedoing a live stream andI'd be like,you know, that was areally cool demo and Ishould grab that. So thatI can just grab thescreenshot orput it intoa blog post or justget a text or extracta clip out of it,turn it into a video, right?And so now I havethis thing where,hang on a second,if I'm somewhere else, forexample,it's easy for me toget to.
9:53Prepare to fast forward
Sacha: I have avoice command for it."Prepare to fast forward",which is of course aSpaceballs reference.It'll show me thenthis thing.And if we are... Let me load thisreal quick.It will show methe video that we haveor at least the recordingthat I've got of it.That's on the right side.Here, this MPV is controlledby Emacs.If I go here...Let's say this one.So here's your waveform for it.If I play it back:"which is of coursea Spaceballs reference",it'll show me then this thing.And I can copy the text if Iwanted to, or I canextract thisinto its own video.
10:41Talking with Emacs
Linkarzu: What other tricks do youwant to show us there?What other things do youwant to share about,brag about your Emacs workflow?Sacha: It's really hard to say.I told you how M-x doctorwas the beginning of myexperience, right?Linkarzu: Your journey, yep.Sacha: Yes, yes. So this isthe doctor. You can saythings like,"I'm feeling happy today," asI said, right?And then it uses thatto generate its response.But I have this conversation mode."Yes, especially when I getto tinker with Emacs."And then, uh... "What happenedwhen you get to tinkerwith Emacs?"Did that...? Does the TTS comethrough? Yeah, it does.And the reason Idid this was because afterI showed off my vocalcommands to Emacs Paris, theywere like, oh, you know,what if you can havea conversation? SoI was like, OK, let'scome back full circle tothe thing that got mecurious about Emacs in thefirst place, andvoice enable that.And then, of course, thisis a very old AI.It's much more interesting ifyou apply it to thenew models.So if I want to, for example,practice French.This is one ofmy voice commands here.Then I can...Doctor: "What wouldhappen? I wouldappreciate it if you wouldcontinue."Sacha: Okay, here we are.Then I might say,"Je parle avec linkarzu."And then I think...There you go. Itwill eventually...Maybe? Thank you.Gemini: "Ah, c'est super de discuteravec lui ! C'est toujours enrichissantde partager (to share) ses passionsen direct. Quel sujetabordez-vous ensemble aujourd'hui?"Sacha: Alright, sothis now uses a largelanguage model. This one usesGemini because gptel makes itsuper easy to plug indifferent models.So if I wantedto practiceFrench, but I don't necessarilywant to bug peoplebecause I take a whileto think about my wordsand sometimes I'm looking stuff up,then at least I cansimulate that kind of conversation.And there are a gazillionapps that will sell youa subscription to do this.But because it's here andit's plain text and Ican control it, then Ican more easily go through itafterwards and analyze the vocabularyor correct the thingsthat it didn't get right,which I know is becauseof the speech recognition andnot because of me orwhatever, right?So it's so much funto be able to tinkerwith Emacs to do whatI wanted to do.
13:19Life in tiny time chunks
Linkarzu: How long do you spendsitting? Like do you spendsitting most of the day?Sacha: Most of the time, actually,I have to go helpout the kiddo, right?So that keeps me awayfrom the computer, which isone of the reasons whyI've had to learn howto deal with very fragmented time.Not much time sitting infront of the computer tofocus on something. Everything thatI want to dohas to be something thatI can do in 5,10, 15 minutes, maybe 30minutes.There might be...At the moment,she is fairly independent, but Ican still be interrupted bysomebody who needs breakfast orsomebody who needs a hugand whatever. So I need tobe able to capture athought, get it out ofthe way and work onthings in tiny chunks.Linkarzu: I've seenmy wife, how she handlesthings. And I'm like, man,it's a lot ofmental overhead, you know?That's a whole otherconversation to say, see,men are the ones thatmake progress, build their professionalcareers and wives, you know,usually take care of the kids.It's a huge sacrifice.What do you think?How do you feel aboutall that?Sacha: I signed up for ittotally knowing what I wasgetting into. I was like,okay, there's a lot involvedin being the default parent,right? The primaryperson who patches up.But I thinkpartly because of Org Modeand Emacs,it's been very, very helpfulto me to be ableto say,"Yeah, that's a great idea.I'm going to write thatdown in my phone oron my computer" - usually onmy phone back in the earlyparenting days.I'm away from my computer.I'm at the playground.So the fact that Ican capturea note into Org Modeand then know that Ican get back to itin several years when Ihave more free time,or that Org Mode cankeep track of the deadlinesthat might be a yearfrom now, like when Ineed torenew my passport,and just have that surfacethe reminder, at the righttime with the notes onexactly what I need to do,and the links to whereverI need to go, Ithink that has been very,very helpful for me.
15:23Capturing tasks on phone and computer
Linkarzu: Good point that you broughtup because I don't know,quite a few days agoI just came up, well,the clanker came up with amethod, we could say,of me just tapping it,saying something to it,and when I come tomy computer, the task isthere in Neovim,right? Yes. Because I forget,I'm outside, I'm like, okay,I have to remember this,I have to, I'm notgonna remember it, it's justgonna go away. So Ido it on the phone,shows up in Neovim.It's a huge benefit.How do you do itSacha: For my phone, I oftenjust put it intoOrgzly Revived, sometimes with dictation,sometimes just typing in afew keywords to help meremember. A lot of times,if I'm coming across...Linkarzu: Orgzly Revived, what is it?Sacha: (Hah, I clearly can't spell) ogrzly?Linkarzu: If you want to show it,I don't know.Sacha: It's on my phone.I'm gonna say, okay, becausethis is what, Orgzly.Linkarzu: Is it like an app?Sacha: Yeah, so I use anAndroid phone. And now thereare actually a gazillion appsthat talk Org Mode and cansynchronize with your files andwhatever.I'm currently still just usingOrgzly Revived as an appon my phone with Syncthing,With Syncthing being thefree synchronization that I canuse to just get myfiles back and forth.But there are lots ofother alternatives, so you canfind something that fits you well.I am very tempted to figure outfinally how to use Emacsnative, because there's an Emacsport for Android.Especially if I can getmy speech synthesis and speechrecognition working on it. Ithink that would be amazingto have thiskind of conversation withEmacs along the way.
17:05Capturing tasks by voice
Sacha: And then on the computer,if I need to capturesomething quickly, oh, I canshow you this one. Let's see. Okay."Remind me to put togethera quick description of myto-do workflow."And it will take that noteand it will stick itinto an inbox.Sacha: Here I'm in live modeso my public tasks don't get mixed inwith my private tasks.If I do an agenda,it should just be limited tothe public stuff.Anyway, so the remind mecreated the note for me.It includes the audioin case the speech recognitiondidn't get anything right.And it includes a screenshotso that in case I'mdoing this from a different applicationbecause my keyboard shortcut is global,I can still see thecontext andfind that sort of stuff.So yeah.
18:01Building workflows out of little bits of time
Linkarzu: Quite interesting.Quite advanced. Quite complex.It must have taken youmonths, years to set allof this up.Sacha: As I said, I canonly work in thirtyminutes or so. So thisone, I think was a10, 15 minute hack.Okay. Little bits of time.This link here to whateverI was looking at, yougot that free from OrgMode. This thing here witha recording,I got that because Ialready wanted to save myrecordings anyway, so it wasjust a matter of addinga link to the filename that I already hadsaved.This screenshot, you know, anotherfive minutes,because I already had Spectaclecapturing the screenshot of bothscreens.So it's fairly simple.It will even work forthings like,"remind me next month tofollow up with linkarzu tosee whether he's switched toEmacs."Sacha: So this one here, forexample, it says, remind menext month, et cetera, etcetera. And it has scheduledit for next month.Linkarzu: That's pretty cool.Sacha: I'm not actually going topressure you to switch theEmacs. You can keep usingNeovim and just borrow allthe interesting ideas.org.nvim is there,I can adapt it todo this, you know?
He hasn't released a clip of this one yet, but this exchange was one of my favourite parts of the main conversation:
[Linkarzu]: I don't know if like that's a particularity of Neovim users, we're all toxic and we just hate each other.
[Sacha]: Yeah, maybe you should just come over to the Emacs community. We have hot chocolate.
[Linkarzu]: If you go to the Emacs subreddit,
it's like rainbows and butterflies.
There's not a lot of hate.
I always wonder why does that happen?
It's not moderators, you know,
it's just people.
Is it just because it's old people?
Like the professor,
he doesn't want to fight any more.
He's old enough.
He retired already.
He's just ready to pass to the next life.
So what, what?
[Sacha]: Hypothesis number two,
maybe your editor makes you grumpy.
That's at about 01:30:06 in this unlisted embed of the full conversation:
I make lots of little EmacsConf schedule updates based on the speakers' feedback.
I needed a way to keep track of the schedule that I've just sent the speaker so that I could calculate the differences and notify them again the next time I change the schedule for their talk.
I like the way that keeping track of this lets me include a summary of the change in the subject and in the body of the message. For example, one of the emails I sent today had the subject:
This blog post is about updating the EMAILED_SCHEDULE entry property in my Org Mode file that keeps track of this year's conference talks so that I can save the schedule that I've emailed. I want to set it only after I've successfully sent the email, because I might change my mind or forget to send the e-mail, and I want to make sure the entry property is based on what I've e-mailed.
EmacsConf 2026: Schedule update as of 2026-10-28: svg: Sun ~2:20 PM EST (40 min earlier)
I send the messages within Emacs, of course. This lets me use emacsconf-mail.el to mail-merge using Emacs Lisp. I can then use message-sent-hook to run buffer-specific code once I've sent the message. This lets me set it up so that each message updates its own talk once I've used C-c C-c to send it.
First, I need a function that adds to a talk's logbook.
This is not specifically needed for the message-sent-hook, but it's useful for keeping track of the fact that I've sent this kind of email to that speaker on this date.
It's very helpful to be able to see who I've already sent the backstage information to or when was the last time I sent them a schedule update.
I can also filter the list of talks by the text in the logs so that if I partially send a mail merge and then cancel the rest because I want to tweak the code, I can send the new mail merge only to the remaining speakers.
This is in emacsconf.el.
emacsconf-add-to-talk-logbook: Add NOTE as a logbook entry for TALK.
(defunemacsconf-add-to-talk-logbook (talk note)
"Add NOTE as a logbook entry for TALK."
(interactive (list (emacsconf-complete-talk) (read-string "Note: ")))
(save-window-excursion
(save-excursion
(emacsconf-with-talk-heading talk
(emacsconf-add-to-logbook
(if (functionp note)
(funcall note)
note))
(bury-buffer (current-buffer))))))
This function is the one that gets added to the message sent hook. It's in emacsconf-mail.el:
emacsconf-mail-add-to-logbook: Add to logbook for all matching talks from this speaker.
(defunemacsconf-mail-add-to-logbook (email note)
"Add to logbook for all matching talks from this speaker."
(interactive
(let* ((email (mail-strip-quoted-names
(plist-get (plist-get (notmuch-show-get-message-properties) :headers)
:From)))
(talks (emacsconf-mail-talks email)))
(list
email
(read-string (format "Note for %s: "
(mapconcat (lambda (o) (plist-get o :slug))
talks", "))))))
(condition-case e
(save-window-excursion
(mapc
(lambda (talk)
(emacsconf-add-to-talk-logbook talk note))
(emacsconf-mail-talks email)))
(error (message "Error %s" e))))
And this function actually sets up the message-sent-hook:
This lets me run that code only when the mail gets sent.
Next automation idea: Someday I may even figure out how to attach an
iCalendar file (including updates to events) so that people can add it to their calendars.
If you find yourself wanting to run code when a message gets sent, then definitely take a look at message-sent-hook.
You can add a buffer-local hook with the fourth argument to add-hook (ex: (add-hook 'message-sent-hook (lambda () ...) nil t)) so that you can take actions specific to that message.
I'm preparing for a conversation with linkarzu.
It would be fun to quote snippets from some of the other videos he has.
I like the way he does a lot of reaction videos that build on what people have shared.
He tends to listen to things at 1.25 or 1.5x speed.
I'm not sure if I have the patience even for that,
so it'd be nice to be able to just quickly skim the text.
He also clips a lot of his own videos.
It might be interesting to play around with my workflows for listening to snippets and clipping them.
I've grabbed YouTube captions and reformatted them before:
This time around, I want to get the VTT format so that I can possibly use them with subed-record to clip audio or video.
From a YouTube link, I want to run a single command that gets me a VTT file with that as the media source and with the captions.
If there are any chapters in the description, it would be lovely to get them too. I can get them from the JSON, yay!
Now I can use M-x sacha-subed-youtube to open the VTT file, which is cached locally, and I can use M-x sacha-subed-youtube-region-as-quote after selecting a section. Well, actually, I have an Embark command s (for "subed") that I can run on a YouTube video link and a selected-mode shortcut for y that I can run when the region is selected. Results:
00:09:46: I think the value of Org is that it is in the context of Emacs, which can now do other things. It can be your email client. It can be your agenda. Of course, it can be your programming environment. All these sorts of things, like your RSS feed reader and so on. And in the context of all that, you also have Org. So for me, that's kind of the value. But otherwise, having Org elsewhere, it's great still, because the paradigm of Org, I think, is a portable paradigm.
While summarizing my history with Emacs, I was curious about just how many Emacs News posts I've written and how many links I've highlighted. 564 posts, > 34000 items, an average of 60 items per posts.
Analysis: It turned out that my emacs-news/index.org only went back to about 2016,
missing a few months of 2015.
To fill in the data, I needed to convert the old HTML files into Org format.
Then I inserted the old entries into my file.
insert-file-contents doesn't seem to move the point, but if I narrow to my Posts subtree (org-narrow-to-subtree), then I can go to the end of the narrowed part.
settitle"Number of links in Emacs News per week"set xdata time
set timefmt "%Y-%m-%d"set format x "%Y"set xlabel "Year"set ylabel "Count"set grid
plot data using 1:2 withlinestitle"Items"
This probably tracks my availability more than anything else. The dip in 2017 and 2018 corresponds pretty well to the time that the kiddo needed more of my attention. Babies sleep a lot; toddlers, not so much.
I generally feel that there are so many interesting rabbit holes to go down each week,
and the Emacs community is active enough that there's always one or two things I want to add to my to-do list to explore further.
Putting together Emacs News is one of the highlights of my week. It takes me about 1 - 2 hours,
and some of that is just because I get distracted trying out the cool stuff I come across.
Learning from similar newsletters: OCaml Weekly News has a single author as well and does a lot more summarization, but includes fewer links.
This Week in Rust is a similar link-dump weekly newsletter.
It's written by a larger team and it has more commentary.
I think that for the Emacs community, I'm still leaning towards this large list of categorized links for easy skimming.
As I get the hang of writing more, I'd like to write more blog posts myself that Emacs News can also link to.
If your community doesn't already have a weekly or monthly newsletter, I highly recommend it as a way to bring the community together.
: Added more notes based on topics in the description
: Ha, I accidentally left in some raw transcription output. Serves me right for not scrolling down.
Also, I've added a summary image.
I'm going to be chatting with linkarzu about Emacs and life.
He's more of a Vim person than an Emacs person, so I'll try to share things that are generally useful. He's called it: "Why Sacha Chua Still Lives in Emacs After 20+ Years."
I am not sure my eyebrows have ever done that, but linkarzu does like his AI-generated thumbnails, so we'll let that pass. =)
(America/Toronto, -0400) = Thu Oct 29 0800H EDT / 0700H CDT / 0600H MDT / 0500H PDT / 1200H UTC / 1300H CET / 1400H EET / 1730H IST / 2000H +08 / 2100H JST
His description:
Sacha Chua joins me to talk about Emacs. She has been living in it for
decades, and she shares the Emacs world with all of us through Emacs News,
Emacs Chat and EmacsConf.
I want to see how she runs her life in Org Mode and how she uses her speech and audio braindump workflows, and to ask her what she thinks of what Prot and I have been doing with Emacs.
We'll also be discussing Neovim and other usual tech related topics
As a backup and so that it shows up on my YouTube feed, it's also going to be streamed at:
(but watch it on his channel instead for the stats boost!)
Note: Both videos will become unlisted afterwards. I think that means you'll still be able to reach it from my blog post or from a direct link, but you won't see it on his channel or mine, at least until he posts the edited video publicly. Also, to encourage people to sign up for his memberships (and to keep things more focused during the conversation), Linkarzu limits chat during the livestream to members of his channel. That's totally fine, he's allowed to experiment with ways to make a living, so please don't give him any grief about it. =) If you have any questions about what we talk about, or would like to continue the conversation, feel free to leave a comment or email me at sacha@sachachua.com and I will check it afterwards.
I like making things available and searchable long-term.
I plan to post the transcript of either the full conversation or excerpts of it on my blog, and I'll probably also post screenshots or clips of the video or audio where it makes sense.
It might be something like the transcript I posted in Chatted with John Wiegley and Karthik Chikmagalur about personal information management.
I am looking forward to learning more about the NeoVim community.
I think the NeoVim community does the YouTube thing really well, and
I'm hoping that the new org.nvim stuff might encourage people to do
more literate programming and blogging.
I put together some notes on my Emacs history, building on from the
title that Linkarzu put on his event ("Why Sacha Chua Still Lives in
Emacs After 20+ Years").
I'll probably add a little bit more over the next two days.
I am more curious about where the conversation can take us rather than
switching into presentation mode, since I can write blog posts and
make videos whenever I want. =)
I put together some sketches to help me organize my thoughts.
His channel uses dark mode, so let's experiment with dark mode in my sketches too.
I want to think about things so that the relevant resources are readily available and so that I can express myself more concisely.
I can put together a presentation or write a blog post by myself, so I'm more curious about the kinds of things he wants to explore in the conversation.
I'll probably need to do a brief introduction to set the context
so that people know where I'm coming from.
Let's disclaim my professional irrelevance up front.
Capture into an inbox on my computer or on my phone (Orgzly Revived + Syncthing),
Agenda on either Orgzly or my computer.
Several large files that I add a lot of ideas to and slowly chip away at when I have time. I'm still the primary parent for our ten-year-old. Although I have a little bit more focus time now that she (usually) attends virtual school, I still find myself capturing ideas and knowing that I will get to them maybe sometime over the next few years.
It's a lot of fun to be able to make tiny improvements that add up.
Speech and audio brain dump workflow
On my computer
I use dictation to quickly grab some snippets.
I can put each sentence on its own line and then use Org Mode to move things around.
could demo: fill paragraph cycling, one sentence per line, paragraph mode,
For more complicated things, then I'll use Org Mode outlines or maybe start with some kind of sketch.
I also type too. It's nice to have that option, especially when there's code.
Let's start with a summary so that we don't worry about running out of time and so that people don't have to listen to two hours before getting to the good stuff.
I want people to be able to get something out of this, whether they're a Vim diehard or experimenting with Helix, or even if they're passionate about things other than text editors.
Here are some of the things I'm learning about that I think are important.
Fortunately, we have a strong culture of sharing, starting with the GNU General Public License and continuing through things like literate programming. We have mailing lists, blog posts, videos, meetups, and conferences. One of the best ways to learn Emacs is to learn out loud. Another way is to look over someone's shoulder. It doesn't take a lot of time or money to do the kinds of things that I enjoy doing to connect the Emacs community, and I'd love to see other tech communities experiment with things like that too.
Adaptability: You can customize Emacs to really fit the way you want to work. The more people do this, the easier it gets to adapt Emacs to even more workflows.
Incremental improvements: Even small changes add up, and code turns out to be surprisingly reusable. It often pays off beyond the recommendations of xkcd: Is It Worth the Time?.
Imagination and play: Tweaking Emacs can be lots of fun. Fun is important.
Quick notes on the stuff he mentioned in the description:
How I run my life in Org Mode
Capture into an inbox on my computer or on my phone (Orgzly Revived + Syncthing),
Agenda on either Orgzly or my computer.
Several large files that I add a lot of ideas to and slowly chip away at when I have time. I'm still the primary parent for our ten-year-old. Although I have a little bit more focus time now that she (usually) attends virtual school, I still find myself capturing ideas and knowing that I will get to them maybe sometime over the next few years.
It's a lot of fun to be able to make tiny improvements that add up.
Speech and audio brain dump workflow
On my computer
I use dictation to quickly grab some snippets.
I can put each sentence on its own line and then use Org Mode to move things around.
For more complicated things, then I'll use Org Mode outlines or maybe start with some kind of sketch.
I also type too. It's nice to have that option, especially when there's code.
The details are a little bit fuzzy, but fortunately I've written about some things in previous blog posts. I'd like to flesh this out with an outline and maybe even some sentences or paragraphs later on.
I love the way that different themes recur. I find myself building on things that I started exploring years ago.
For example, my current interest in hybrid speech interfaces echoes all the way back to M-x doctor and Emacspeak from the beginning.
M-x doctor:
From "Unix Power Tools":
If you have time to waste (and I mean really waste), Emacs has things to keep you occupied. … If you think you might be in need of a psychotherapist, save your money and try ESC-x doctor RETURN.
I was not actually looking for a psychotherapist.
I think I was seventeen or eighteen, and I was trying to go through all the interesting computer science books in my university's library in the Philippines. I thought it was funny that someone put in that kind of Easter egg. The more I dug around in the source code, the more I was amazed by the things that people had added to Emacs. Anyway, it's interesting how the fun, inconsequential stuff turned out to be the thing that caught my attention.
I loved seeing how people customized Emacs in so many different ways to fit the way that their particular brain worked, and getting it to fit my brain too.
One time, when I was the maintainer of Planner Mode, I got an email from someone who said something like: "Thank you for maintaining this. By the way, one of your recent changes lost my data and I didn't have any backups, but that's okay, just please fix it, here are some ideas." That kindness mattered a lot to me.
Emacspeak:
In my third or fourth year of university, my laptop screen started glitching. Sometimes it got really low in brightness and contrast, and you could only read it if you tilted it at an extreme angle and looked very carefully. But the Emacspeak folks had figured out how to make it perfectly usable just with speech synthesis, because they needed that as blind or visually impaired users. This turned out to be pretty handy. I not only used that for a fair chunk of my regular writing and coding, but also for my experiments with wearable computing, and for the occasional alert when I was paying attention to something else. Speech synthesis was a lot more discreet than the head-mounted display that I experimented with in 2003.
flashcard.el:
The fun part about this was rigging up my flashcard.el so that it would show me funny cat pictures from ICanHasCheezburger when I answered enough questions correctly. Fun matters.
I started using Org Mode as part of research for a book on Emacs. I didn't finish the book, but I stuck with Org Mode. I like the way it fits the way I think and what I want to do.
Work: Drupal, Rails, blogging, data analysis, literate programming
I helped organize the first one in 2013 in London.
I watched the 2015 one remotely.
Amin Bandali reached out to me in 2019 to get EmacsConf going again, and we've been organizing it yearly since.
The kiddo wanted to play Minecraft, but she wasn't comfortable enough with typing yet, so I made her some command books so that she could just click on things in order to teleport back to us or give herself equipment. Now she can type very quickly, but it was helpful back then.
linkarzu mentioned wanting to talk about artificial intelligence.
I don't know nearly as much as lots of other people do.
Maybe I can just share the things that I've been experimenting with, and also what I care about from a community perspective.
I would like to help figure out how to deal with this turbulence and come out the other side happier.