Sacha Chua

How I use Emacs


I used to use PlannerMode a lot. Then I switched my blog to Wordpress ( and started using Emacs Org + Toodledo for my task management. Now I use org2blog to post some entries from my Giant Org File of Awesomeness.


I used to use Gnus, the built-in mail/newsreader that slices, dices and juliennes - not as easy to integrate into a Windows-based workflow, though. When I used it, I had basic splitting set up to file my mail into separate groups neatly organized in a hierarchical tree that allows me to see at a glance how much mailing list messages I’ve received. I used “c” to catch-up groups or even whole subtrees, mark threads as read or even uninteresting. Adaptive scoring meant that I don’t have to manually specify my reading preferences - gnus learned what I don’t like to read, so that I don’t have to read related messages next time unless I really want to. I’d set it to score down all messages from hotmail or aol unless I like the author. ;) I elided mailing list identifiers so I don’t see those [….] things, banners like the ads at the end of yahoogroups, really long signatures or To: headers. Gnus is definitely a mail/newsreader for the netiquette-sensitive. :-)

BbdbMode integrated well with Gnus, so I could easily bring up or create contact records for the people I receive mail from. I had Gnus automatically add notes for the people I know, and it’s interesting to see what mailing lists people are subscribed to. I could add notes, check phone numbers, and even see when someone wrote me last. (Time to write a “Haven’t heard from you in a while!” note…)

Mail is a somewhat dangerous thing to experiment with, of course. :-) I had lost some outgoing mail due to masqmail silently failing if you specify the -f flag (evil!), but some debugging later turned up a message-sendmail-f-is-evil variable I could set to t. I have since then moved to postfix so that I could use + as an address separator, so I haven’t needed that.

(outdated - I no longer send text messages from my computer. I’m in Canada now, and text messages are expensive!)

Ah, yes, text messaging. SMS is pretty big here in the Philippines. I am a lazy computer geek who would rather type than fish out my cellphone and start texting. Besides, I kinda like having all of my text messages stored on my laptop - search, store, reply, and even see threaded displays. :-) I used to use gnokii, alamin, postfix, bbdb and gnus in order to have practically seamless SMS sending. :-) Here’s how it works. I’ve set up alamin (a GSM-SMS gateway that can talk to a gnokii-supported phone) to poll my cellphone for incoming text messages and convert any such to e-mail messages from alamin+<SOMENUMBER>@localhost to sacha@localhost. I receive those messages in Gnus in my mail.text group, and BBDB steps in to fill in the name from my contact database thanks to (gnus-summary-line-format “%U%-40,40uB %S\n”), (bbdb/gnus-summary-prefer-bbdb-data t) and (bbdb/gnus-summary-prefer-real-names ‘bbdb) in the group parameters. My reply is processed by postfix and piped through email2sms, a short Perl script I wrote that just invokes alamin’s client program. Alamin queues the message and tries to resend it at regular intervals until it is finally sent. No more dealing with “Message failed.” or lack of signal, and I get a full record of all of my text messages, and I can text while in class.. ;) Unfortunately, I don’t have a serial port any more, and my phone is not Linux-friendly. Can’t pull off this neat hack these days.

Taking notes

I keep my notes in plain text files. I find that typing on my laptop encourages me to keep more complete notes because I can type faster than I handwrite (and it’s much less tiring!). OrgMode makes it easy to keep my notes in outline mode.

Internet relay chat

ERC! EmacsIRCClient forever. Well, not really forever, but I’ve tried quite a few Internet relay chat clients and I must say that ERC is really cool. erc-track lets me keep track of channels that have changed even though I’ve got my notes maximized, and since it’s part of my editor I can easily cut/paste/navigate/tweak/do-funky-stuff. I hang out on Freenode #emacs, and it’s tons of fun.



  • 05:20 UTC Monthly review: February 2021Streaming: I experimented with streaming to Twitch. I added a hydra for switching OBS scenes. I added a marginalia function for hiding password-ish variables. I got captions to flow from my phone to Node to Emacs to OBS to Twitch. There’s some delay, but it’s a good starting point that might come in handy for […]


  • 14:24 UTC 2021-03-01 Emacs newsUpcoming events: EmacsNYC: Mail Month Mon Mar 1 1600 Vancouver / 1800 Chicago / 1900 Toronto // Tue Mar 2 0000 GMT / 0100 Berlin / 0530 Kolkata / 0800 Singapore M-x Research (virtual) – Avoiding Emacs Pinky Thu Mar 4 0700 Vancouver / 0900 Chicago / 1000 Toronto / 1500 GMT / […]


  • 03:40 UTC Weekly review: Week ending February 26, 2021I worked on improving my streaming setup: I used pulseaudio to mix my microphone and audio output into a combined source, and I tested that it worked with speech recognition. I used gstreamer to make a video stream that was delayed by four seconds. The audio was a little tricky because the snap’s gstreamer doesn’t […]


  • 04:47 UTC 2021-02-22 Emacs newsUpcoming events: Emacs Berlin (virtual, in English) Wed Feb 24 0930 Vancouver / 1130 Chicago / 1230 Toronto / 1730 GMT / 1830 Berlin / 2300 Kolkata // Thu Feb 25 0130 Singapore Emacs APAC (virtual, in English) Sat Feb 27 0030 Vancouver / 0230 Chicago / 0330 Toronto / 0830 GMT / […]


  • 02:48 UTC Weekly review: Week ending February 19, 2021I got captions to flow from my phone to Node to Emacs to OBS to Twitch. There’s some delay, but it’s a good starting point that might come in handy for live captioning my own stuff. I added autocategorization to Emacs News. I tried out pretty-hydra. I wrote some commands to remotely control Geeqie from […]


  • 05:29 UTC 2021-02-15 Emacs newsUpcoming events: EmacsFFM: Creating our own major mode (virtual) Wed Feb 17 1100 Vancouver / 1300 Chicago / 1400 Toronto / 1900 GMT / 2000 Berlin // Thu Feb 18 0030 Kolkata / 0300 Singapore Emacs Berlin (virtual, in English) Wed Feb 24 0930 Vancouver / 1130 Chicago / 1230 Toronto / 1730 […]


  • 03:32 UTC Weekly review: Week ending February 12, 2021I think it might help to go to bed by midnight. It takes energy to be calm or enthusiastic, and the things I want to geek out about can wait. It means I have to prioritize more ruthlessly and not get carried away. Things I did I couldn’t figure out how to send OBS captions […]


  • 05:34 UTC 2021-02-08 Emacs newsUpcoming events: EmacsSF: Discussion of emacs in general and completion frameworks in particular Fri Feb 12 1000 Vancouver / 1200 Chicago / 1300 Toronto / 1800 GMT / 1900 Berlin / 2330 Kolkata // Sat Feb 13 0200 Singapore EmacsFFM: Creating our own major mode (virtual) Wed Feb 17 1100 Vancouver / 1300 […]


  • 23:00 UTC Guest post: Bookmarking PDFs in Emacs with pdf-tools and registersSomeone wanted to share this post, so here it is! -— I read a lot of PDF documents on Emacs. I use the Emacs package pdf-tools for this. I also write a lot of LaTeX on Emacs (both in org-mode notes and .tex files). Frequently I find myself in the following situation: I need to […]
  • 05:06 UTC Controlling my stream audio from Emacs: background music, typing sounds, and push to talkUpdate: 2021-02-11: Parsed pacmd list-sources so that I can mute/unmute devices by regular expression. Update: 2021-02-07: Made it work with my USB microphone. I was experimenting with streaming Emacs geeking around on Someone asked me to have soft background music and typing sounds. Since I’m a little clueless about music and don’t want to […]
  • 03:30 UTC Monthly review: January 2021Emacs: Made an HTML and Org calendar thing for Emacs meetups which summarizes Emacs meetups in different timezones. Hacked up a quick obs-websocket client for Emacs using websocket.el and I sent it to mplsCorwin. Wrote some Emacs Lisp to summarize an Org entry in different timezones. Tweaked subed.el to make it easier for me to […]
  • 03:06 UTC Weekly review: Week ending February 5, 2021Emacs: I compiled gccemacs. I also played around with a hydra for editing subtitles. I added a hydra for switching OBS scenes and I added a marginalia function for hiding password-ish variables. I figured out how to make it easier to post to my journal from Emacs. I fixed my code for doing weekly reviews. […]


  • 06:15 UTC Marginalia and hiding the value of password-ish variablesI like the way Marginalia adds annotations to minibuffer completion. I’m experimenting with streaming, so I’m trying to not leak passwords while playing around with marginalia. (I’ll probably mess up at some point. Please be nice! =) ) This is the annotator function: (defun my/marginalia-annotate-variable (cand) "Annotate variable CAND with its documentation string." (when-let (sym […]


  • 21:20 UTC 2021-02-01 Emacs newsUpcoming events: EmacsNYC: Lightning Talks – Mon Feb 1 1600H PST / 1900H EST / Tue Feb 2 0000H UTC / 0100H CET / 0530H IST / 0800H +08 – Atelier Emacs Paris en visio-conférence (virtual, in French) – Tue Feb 2 1130H EST / 1630H UTC / 1730H CET / 2200H IST / […]


  • 04:40 UTC Weekly review: Week ending January 29, 2021I cut the Ultrasuede sofa wrap and turned it into a slipcover. It’s a little crooked, but I think it worked out pretty well. I still have a couple of seams and a hem to do. It looks like a sofa! It acts like a sofa! Whee! I experimented with interception-tools so that my caps […]