Tags: emacs-chat

RSS - Atom - Subscribe via email

Emacs Chat: Sacha Chua (with Bastien Guerry)

Posted: - Modified: | emacs, Emacs Chat, podcast

UPDATE 2013/07/08: Now with very long transcript! (Read the full blog post to find it.)

After I chatted with Bastien Guerry about Emacs, he asked me if he could interview me for the same series. =) So here it is!

http://www.youtube.com/watch?v=_Ro7VpzQNO4

Just want the audio? http://archive.org/details/EmacsChatSachaChuawithBastienGuerry

Find the rest of the Emacs chats at https://sachachua.com/emacs-chat

TRANSCRIPTION: Emacs Chat Sacha Chua with Bastien Guerry

DURATION: 00:44:27

 

Sacha:                   This is an Emacs chat. I’m Sacha Chua being interviewed by Bastien Guerry. Thanks again Bastien, for doing that chat with me last time. People really liked it and they were surprised to find that you weren’t actually a computer science geek, you’re humanities. Wow. [Laughter]

Bastien:               Not sure there is something as a computer science geek. Maybe it’s overrated, somehow. So let’s begin the discussion. How did you meet Emacs first?

Sacha:                   Well I was in high school and I was trying to read as many interesting books from the computer section of the library as I could – small library, maybe four shelves or something like that – and one of the books there was UNIX Power Tools. UNIX Power Tools has a chapter on Emacs that includes–was that mentions of Doctor and other weird things. One chapter in Emacs and you’ve got to put in things like Yow and Zippy or whatever. So I thought it was very, very strange and interesting. So I tried out Emacs and I actually flipped between Emacs and Vi for a while, but once I started learning Emacs Lisp and playing around with configuring it–that’s how I fell in love with Emacs.

Bastien:               And did you have friends learning Emacs with you or were you alone?

Sacha:                   Not really. Mostly the other people who were interested in computers were using Vi or they were using something like Notepad++ or whatever it was back then. Then in university, a lot of people used Eclipse, because we started off with Java development … So Emacs has always been one of those things that it’s hard to find people face to face to talk about Emacs with. Most people just look at you like, “What? How old is that?” [Laughter]

Bastien:               So there’s this bit of dandyism kind of… I’ve found that many people using Emacs are kind of proud of using something different and I myself was not with all the developers so I was not proud of using something different. This was just something like that. Do you feel it was something that made you go deeper into Emacs and Emacs Lisp?

Sacha:                   Well…

Bastien:               You have some exotic tool.

Sacha:                   Early on–I think it was in 2002 or 2001–I’d gotten to know – actually 2001 or so – I’d gotten to know the open source community, especially in Emacs with Planner Mode and things like that, so the early experience for me—sure, I didn’t see a lot of people in real life who used Emacs, but I was in touch with this community which was amazing and they used Emacs (of course, because this was an Emacs user community)… So I felt, within that, “Actually, this is pretty normal.” And so it never was really a, “oh, I’m going to use something just to be different from other people.” It’s more of like, “Hey, look at all this cool stuff that so many other people have built, have added to,” and I really like the community part of it.

Bastien:               And do you still have – because it looks like you are testing many different softwares, very open minded about what you can use and what you can try – do you still spend a lot of time testing softwares at all, editors especially, or are you stuck?

Sacha:                   Editors, not so much. It’s really difficult to compete with the things that I’ve already got set up. Occasionally –for example, I’ve been trying out Scrivener as a way to organize blog posts, because people really like this ability to have all these index cards with stuff on them and you can link them together and compile stuff. But then as I use it, I think, “Oh, wouldn’t it be nice if I could just hack Emacs into this thing instead,” and then I go off and I write Emacs Lisp code, and then I’m back in Emacs. So even when I experiment with new things, it’s often with an eye to stealing ideas and then putting them into my Emacs configuration.

Bastien:               So I will come back to this question about this writing, especially because you are really into drawings, too, right? So I’m curious about how a visual person can be happy within the text editor. But my first question would be about Planner. So when did it start and what was the relationship between the Planner and the blogging activity that you have?

Sacha:                   [Laughter] Now there’s a funny story there. Okay. So I came across Planner in my search of interesting things that are Emacs-related and I started using it to keep track of my tasks and my notes. I was a university student back then so I had a lot of notes from class, from projects, from things that I was learning about. Because Planner had export capabilities, I figured, okay, why not? Let’s export my plans, my personal text files and make those static HTML pages on the internet and so I put that up there as one of those things. It was my first website. Actually, no, it was my second website. My first website was something on Geocities, so it didn’t really count. Anyway, so I have this Planner site. Back then I was starting to read about RSS and this idea of like a weblog. I had become the maintainer of Planner after I emailed John Wiegley and said, “Hey, this is super awesome. If you ever need any help tracking down bugs, I volunteer to do the first pass and then turn it over to you for fixing things.” And then he was like, “That’s all right. You are now the maintainer.” So then I was the maintainer of Planner  and I was looking for interesting things to add to it. Since RSS was coming out, I figured, let’s take the remember feature in Planner and change it so that you could not only upload it as a webpage but you could also publish it as a RSS feed. So very technical people could then subscribe to this website, but hey, it was there.

Bastien:               Yeah. So I hope somehow… Because I hack together an exporter for Org Mode about RSS feed, so somehow maybe I’m going to start blogging once this is ready for production mode. Then you had this activity – was it a general blog or was it especially about Emacs, and then the diversity came later on?

Sacha:                   In the beginning, it was just really a raw brain dump of my notes from class, from life, from the time that we rescued a kitten from our bathroom walls – anything that I wanted to capture in Planner. It was just actually a side effect that I was using it to also test Planner RSS and publishing. So my blog was really just my personal planner. It had my to-do list, it had all these other notes in it and then as I… One of those years I shifted to using WordPress because I got really annoyed with having to hack in commenting support and all these other little things in Planner. So I shifted to WordPress and I just wrote some code that went and extracted all of my posts from Planner and put them into WordPress. So that’s how my blog evolved out of it. It’s always been… Because it’s always been this collection of text files and notes for whatever I wanted to remember, that’s what it ended up being.

Bastien:               Okay. So now, what are the main tools that you’re using for Emacs and what are the ones that you want and still don’t have?

Sacha:                   Org is the main thing that I spend a lot of time in, because it runs my life, so I’ve got it set up for my agenda and many of my notes. I use Evernote for a lot of the web clippings and other things I want to capture, but in Emacs, Org still helps me see what my week is going to look like and remember different things. So there’s Org, I do a lot of Rails development. So I’ve been playing around with Ruby Mode, but also Rinari and a couple of tools for quickly jumping from files to another, and of course, magit – however you pronounce that. I use Emacs Lisp a lot so I just open up a scratch buffer. I haven’t quite gotten the hang of either Smart Parens or Paredit, so that’s still in my to-do list.

                                I guess in terms of what else I would like in Emacs, I’d like to get the hang of Org attachments so that I can manage more of my images within it and I’d like… I probably should look into getting the hang of Paredit or Smart Parens or all these little tools to make Emacs development better. [Laughter]

Bastien:               Yeah. I don’t use Paredit yet. I know I should train myself, but there’s a small learning curve and then it’s very efficient and powerful, but I don’t know. My first impression, my feeling was that it’s a bit rigid. I don’t like anything rigid when I need to start writing and so my question – I remember Carson talked about the fun, about writing Emacs Lisp, somehow I… It’s even relaxing. Do you feel like that?

Sacha:                   Yes. Oh absolutely. It’s very tempting to just keep on hacking away at something, because it is really interesting to say, “All right. Hey, I’ve got this idea. How do I get closer to it? How do I play around with it?” For example, when you’re researching functions to use for this or you’re looking at other people’s code to see if you can build on their ideas, because there’s so much code out there, you can get really distracted looking at all the cool things that are possible.

                                I find it to be pretty relaxing. I’m comfortable with Edebug and stepping through the code and all of that. I find it relaxing because it’s a way of getting what I want done. And then because my Emacs configuration file is public and I also occasionally write blog posts related to the Emacs functionality that I’m customizing, I get lots of value out of it, too, because I get blog posts and I get more conversations and ideas.

Bastien:               Yeah. And somehow I feel like the Emacs is a nice tool for doing small, cheap prototyping. Are you using it for that? If you have something in Ruby that you know is big, do you start prototyping with Emacs with small functions or even for web development with bigger constraints?

Sacha:                   For personal use, definitely. I have a lot of these scripts that start off as Emacs Lisp functions, because I like being able to use buffers and regular expressions, search forward, and all these other little things. Sometimes I never end up turning them into a shell script or something else. I’ll use keyboard macros or write small Emacs functions just to do something. Sometimes if I’ve got a good idea and it works out, then I’ll go and write it up as an actual script that other people can use.

Bastien:               All right. Cool. And so now the big question – can you show us your Emacs screen? I mean, it’s going to be a big revelation.

Sacha:                   It’s not that scary. Hang on a second. Let me switch to sharing my screen here and then I can conf–ooh, funny effect there—can you see my screen?

Bastien:               Yeah.

Sacha:                   Yeah. So it’s basically an Org agenda. “Talk to Bastien Guerry about Emacs” is in progress.  I think it’ll take an hour. And that’s basically life. As you can see, my Org habits say that I’ve actually not been very good at taking my vitamins or telling Org that I’ve taken my vitamins. I did that the other time, so that’s okay, too. But that’s basically my life. I also use Emacs on quite a few… in another environment as well. I’ve got a local virtual machine for my Rails development and that one’s got a different Emacs configuration just for my Rails work. Since my base system is Windows, there are a lot of all these little conveniences that I got used to in Linux and that aren’t really available because Cygwin isn’t quite there or whatever else and that’s why I have… sure, my main Org setup, but I also have development environments and virtual machines.

Bastien:               All right. I think many people will feel quite relieved to see your habits, because when I started using habits, I was so bad because I stopped because it was painful to see all those red colors. Maybe we should just switch red and green. [Laughter] It’d be better.

Sacha:                   I use Org, because I use the variable scheduling a fair bit, so for example… go to [inaudible] weekly. There are a couple things like strength workouts that I wanted to do every two or three days so I really like the fact that Org will keep track of that for you. So Org Habits comes along as a nice bonus, but I don’t really obsess about the red so much.

Bastien:               So the word “library” makes me wonder – you seem to be reading a lot, so reading blog posts, books, or whatever – do you feel like Emacs is changing the way you read–and of course, it’s changing the way you take notes, but do you read the web on Emacs? Do you read the blog posts on NNTP or Gwene or something like that?

Sacha:                   I used to. I used to read a lot of NNTP and also NNTPRSS and Gmane of course will give you an interface for that. Mostly, because I’ve come to really like the way that Evernote clips things and searches through stuff, I use that instead for most of my notetaking, but I do use Org a lot for taking notes on books because I like its outline form. I like being able to quickly search through things and organize things and say I want to schedule this book for review three months from now. So that’s very nice, in terms of using Org to support my reading and my learning.

In addition, I also keep – if I can remember where it is. I also keep these–every so often I make this list of things that I would like to learn. Again, Org is excellent for that, because I can outline things, I can turn… I can use the list’s indentation to break things down further and so on.

Bastien:               Yeah. And my feeling… I’m taking a lot of notes about books as well with the hope of turning this into a blog entry at some point or just some web page. I’m doing these from time to time. What I discovered was that it lowers the barriers that you can have before publishing. If I use something else, I feel like publishing is a big step, and when I use Org, it’s just a small step so it’s easier to publish stuff I write. Even if I know it’s not well-written, I have less barriers about this. Do you feel like this?

Sacha:                   I deal with that by not being too worried about posting things. So my barriers for publishing are pretty low, but I do post a lot from Emacs as well. Org2blog is super helpful for that. For example, when I came back from the Emacs trip in – sorry – Emacs conference in London, I basically just started writing this – let me turn off truncate-lines  again – I started writing this long blog post about what worked well, what didn’t work well. It made sense to keep it in Emacs, because it was there and had all my links and whatever. But then to publish it, all I had to do was org2blog/wp-post-sub-tree and it’s off to WordPress.

Bastien:               All right. Cool. And about the visual stuff – because you’re doing nice drawing and you fiddled—when you mentioned Evernote and the way you can clip IDs and so on. Do you miss that in Emacs, which is very linear and which is very textual? Or is it something that you’ve…?

Sacha:                   Well, you can actually inline images in Emacs, and I did install the library so I could actually – hang on a second, let me break out one of these sketchnotes… I think I can actually pull out some of these… There’s my “How to learn Emacs”. So you can open images in Emacs, they’re just not very good. I wish Emacs would let me keep track of more of that stuff, and in particular, I really like Evernote’s ability to search within images. I don’t think that’s going to make it into Emacs anytime soon, but if it does, that would be fantastic.

                                In the meantime, I find that the combination of using Evernote from my multimedia notetaking and then using Org for all those quick capture or outline more structured talks or blog posts works really well for me. It means I have two places to look for things– several places actually, because lots of places inside Emacs as well–but it works.

Bastien:               Okay. And so I don’t know if you read the Emacs blog mailing list, but Lars from Gnus fame started a new browser for Emacs. It’s called – I don’t know how to pronounce it – but it’s spelled eww.

Sacha:                   Oh yes. I’ve heard about that.

Bastien:               Yeah? Thanks to this new way to browse web pages on Emacs, I guess there is a lot of work about rendering images and changing the size on the fly, which you can already do, right? In Org Mode, you can decide about the size of the pictures, in-line pictures, by giving some attributes to the images or globally to the file, but I guess that there is room for lots of improvement there, and I hope this new browser will boost this development about images being able to – I don’t know – even have floating pictures on the top right of the screen or… I don’t know.

Sacha:                   Yeah. Well, because actually a lot of my work and a lot of the things I focus on is still in text, there’s so much to learn and do in terms of getting Emacs to be even better for that. And then in terms of the images, well, I’m looking forward to playing around with maybe using Emacs to help organize a visual vocabulary. I’m using Evernote for most of it at the moment, but it would be fascinating to see if I can use Dired perhaps to start putting that together.

Bastien:               Yeah. So the missing tool that would be something about this, but searching through pictures and stuff like that.

Sacha:                   Yeah. I think that might look more like a command line tool that someone else is going to write, that does handwriting recognition (which is tough!), but hey, you know, if I could dream, that would be an interesting utility to have. In the meantime, however, I like the fact that text works pretty well. I’m starting to get the hang of using org-jump to – or whatever is C-c C-j is – ah, org-goto is the command to go around my increasingly enormous Org file. There’s just so much that I have yet to learn about Org and Emacs and all these things.

Bastien:               So about this Emacs conference, can you tell us a bit more where it started, what was it, what did you learn, and what’s next for this real life meetings?

Sacha:                   Yeah. That was interesting and surprisingly quickly arranged – let me dig up my… So the Emacs conference was held in March in London and it was really… This one guy said, “Okay. We’ve been talking about having an Emacs conference for a while, let’s go ahead and do it.” He found a venue—Aleksander Simic, he found a venue. He got people to volunteer as speakers, everyone flew in or drove over if they were close by, and it was a completely free conference. So super thanks to the venue for making it possible. It was a lot of fun, because–80 to 100 Emacs geeks in one room! I’d never been in something like that. It was incredible just seeing everyone for the first time. I’d never seen John Wiegley – well, I’d talked to him on Skype, but I’d never seen him before despite all the years of correspondence. And so it was good to have everyone in one room. At the meeting, people were like, “All right. Maybe we should have a London Emacs users group meeting,” and I think someone went and organized one in – where is that as well? There’s another one started up somewhere in the U.S. People are really looking to connect. I would love to see more of these real life meetings, but also because I don’t travel so much, I’d like to see more virtual meet-ups as well.

Bastien:               Yeah. Yeah. You’re doing a great job at boosting this. I mean, it’s fantastic. The concrete outcome is more meet-ups between Emacs user groups and local groups and if there are any code produced out of the conference, or out of this group… or maybe it’s too hard to track?

Sacha:                   Yeah. No one’s quite… I haven’t heard of any hackathons yet, but that would be super cool. I love helping people with their Emacs stuff, so I’m always willing to hang out and help people with their configs or with Emacs Lisp. The main thing that came out of the conference is all these videos and I drew my notes for them as well. But really it was all about, “Hey, look at the cool things that people are working on. I had no idea Emacs could do that and hey, let’s… This is a nice community. People are wonderful.”

Bastien:               Yeah. What I like is it’s a very diverse community with all these crazy people having passions for something else, too. I remember there was a discussion about playing piano versus playing accordion, remember? And the comparison between playing accordion is better because it’s more like touch typing than piano where it’s heavy typing and stuff like that. So it was funny to have this various passions and discussion about that. It’s more easy to speak about this kind of activities when you’re meeting for lunch in an Emacs informal conference than online where it’s bit off-topic on the mailing list. So the next step, if I understand well, is to have some kind of Emacs hackathon on a virtual meet-up online somewhere. Would that work?

Sacha:                   I’d like that. I’d like that very much. In fact, I would be up for having regular Emacs webinars or whatever where we can just do a show and tell session, “Hey, look at this cool thing that I’m doing.” So Emacsrocks is fantastic and I’m delighted to see even more screencast series coming up, but there are all these people with fascinating things in their configuration or ideas who might not have a screen cast or might not have a blog or might not feel comfortable doing that, but they’ll happily talk to a couple of people about what they’re doing with Emacs. So that’s one of the things that I’d love to help make happen.

                                You mentioned the incredible diversity of Emacs users… that’s something that I really, really love as well. You  might think, oh Emacs, right? It’s like the stereotype of computer science, geeky, programming and system development… But because people are coming into it for Org or for statistics or for all these other modules that people have built into Emacs, you really get such a wide range of people. I can see the… Yeah. Go ahead.

Bastien:               I guess it’s also because the Emacs has such a long history so it helps gather in people from various backgrounds, from university or for people learning by themselves and so on and so on. So…

Sacha:                   Yeah. I really like that. I remember when I was in Japan and I was trying to learn the characters–the kanji—I had a flashcard program. Actually, I used the flashcard.el from the Emacs wiki, because that’s where you used to get everything back then. I modified the flashcard program to show me cute pictures of kittens or tell me a joke every time I got things right, which is what you can do when you’ve got this flashcard program that’s very programmable because it’s built into your editor. One of my friends and co-trainees was like, “Hey, what’s that? How are you doing that?” And although he had never used Emacs before, I set him up with a flashcard setup just so he could give it a try. So it’s all these little bits of functionality that can help draw people in.

Bastien:               Okay. So that’s cool. I have another question. It’s a bit personal and it’s about me – my own therapy about not being the maintainer anymore. So you stepped down as the maintainer of Planner and Muse, right? Or are you still the maintainer?

Sacha:                   Yeah. No. I handed them over to – I think it was Michael Olson and Michael handed it over to someone else, I think. It’s actually great, because it’s fantastic to see what directions other people will take stuff. Then also when I was watching Org’s meteoric rise to fame, I was like, “Oh hey, Planner does this really interesting thing for example with reading dates–the relative ‘Oh that’s plus two days from now or it’s plus three Fridays from today.’” So I was like, “Here. This is a really cool idea. You should totally take it.” It’s great seeing other people come up with ideas for something you’ve maintained before, and it’s also great being able to help with other projects that are related.

Bastien:               Yeah. But how did you feel? How did you – because I feel bad. I mean, I miss the calling. I miss the… And so I feel useless. I had something to do….

Sacha:                   Nothing stops you from continuing to look at the list and writing patches and exploring code and all of that stuff. I did find that now that I’m no longer on the hook for anything, I don’t write as much Emacs Lisp for other people. I tend to write Emacs Lisp for my config and then if other people find those things to be good ideas, they are certainly welcome to merge them into the code. Sometimes I’ll still hang out on the Emacs Lisp channel, or check out the mailing lists or StackOverflow or whatever, just to see what kinds of Emacs questions people have, and if it’s something I’m curious about as well, then I get to write code for it.

Bastien:               Yeah. That’s cool. I do have some bugs to fix on Org, so it’s not as if I have nothing to do, but I was surprised to have this kind of let down feeling as if I was retiring. But and also this feeling that… There was this new to-do mode on Emacs, I just discovered. It was there for years and there is this to-do model and Stephen Bagman, the maintainer just wrote the new version and I can find the link back again and he just wrote the new version, so I was like, “hey I want to try something new.”

Sacha:                   Oh yes, yes.

Bastien:               So I was really just right… feeling away from Org Mode. So this is it. Exactly. You have it on the screen. I don’t know if it’s on the video, too, but…

Sacha:                   Yeah. That would be there, right? I had to go find it and see what it does, and especilaly what it does differently, right? So that’s what I’m going to take a look at. There’s always stuff that’s coming out.

Bastien:               Yeah. And coming out from the past, because this one was there even before Org was, so the new ideas and so it’s great.

Sacha:                   Yeah. One of the things I love about Emacs is that all these bits of configuration and all these packages give you a window into the way that somebody else works, right? So they manage their to-do’s this way. When you read the code or you look at the examples or you look at the mailing list messages, you get a sense of all these other different ways to work, and then you get ideas. The way that I’ve organized my life has changed so much. When I started using Planner, it was, “Okay. This is great.” I started doing a lot more of the Stephen Covey quadrants sort of thing because that was baked into it. Then when I shifted to using Org, it was like, “Okay. I’ll use tags and contexts more. I’ll use the weekly agenda or whatever, because it’s so much easier to make that now.” And so the tools that I used shaped the way that I work, and when I look at the ways that other people work, I pick up even more ideas, more things to experiment with.

Bastien:               And this… I think it captures the paradox of Emacs quite well. From the outside, from people who don’t know Emacs, it looks so rigid, and from within Emacs and the flexibility you have with coding and text and writing at the same time and exchanging with other people, it opens new possibilities. It’s the opposite of rigidity, as you say. You experiment with new ways of working and so on… I guess we like fiddling, we love fiddling, and fiddling comes with experimenting something new and discovering what’s inside the machine and so on.

Sacha:                   Yeah. I guess the way that I’ve seen Emacs… it’s really like a conversation, this huge conversation that I’m having with all these developers and all these contributors – both the ones that are working on it now and the ones that have contributed and posted stuff in the past – and it’s… we’re all trying to figure out interesting ways of working and changing the tool, changing – it’s a platform, really – to fit that. So it doesn’t feel at all fixed. In fact, it feels like it’s changing so quickly that it’s hard to catch up sometimes and I look at list-packages and I’m like, “Okay…” I tried reading–I’ve actually read through the entire list a couple of times. Every time I do so I come across all these new things and even when I was trying to write that book on Emacs, which unfortunately got procrastinated, because of this very thing I’m about to tell you–because I was writing about stuff that people could work on and improve, as soon as I posted my draft and people were like, “Oh, that’s a great idea. We should make that part of the main package,” that meant my draft blog post was then obsolete, but it meant that everything was better. And to have something with such an established history also have that kind of flexibility and vitality… it’s incredible.

Bastien:               Yeah. Yeah. Especially… And so my last question before talking about this book you may want to talk about. It’s just a small story about Walter Bender—do you know, he’s the one behind Sugar?

Sacha:                   No. What’s that?

Bastien:               Sugar. It’s the name of the platform running on the One Laptop per Child project.

Sacha:                   Oh yes.

Bastien:               And Walter Bender is the guy leading the developers community all over the world. He told once that his first idea for this constructivist environment for kids was Emacs. So I was a bit shocked, because you don’t think about putting Emacs in the hands of six or seven year old child, but the idea – I think it’s really what you’re talking about. The idea was that in Emacs you have – for example, the documentation’s very close to you, the writing is close to you and the distance between writing and developing is small. So this is the very spirit of the conversation between you and the machine and you and your friends around… I think that was the core idea behind having a constructivist environment that drives you to the code and to all the people around you to build something together. So just wanted to mention that, because I think it’s interesting. So this book – what’s the story behind the book?

Sacha:                   Well, because I… So back in 2000-and-something, because I was learning so much and blogging so much about Emacs, it was like, “Oh, there’s probably a book in here.” And so I sent in a proposal to No Starch Press and they were like, “Oh, that sounds really cool. We should have a book called Wicked Cool Emacs.” They have a lot of other books in the series, so there’s still stuff to model it on. I started with the chapters that I wanted to write the most about, because I really wanted people to try out Emacs for personal information management.

                                So I wrote about managing your tasks, and I think I wrote about reading your mail or something of the sort, too. But when I drafted the three chapters that I really liked the most, I realized, hey as soon as I posted these scripts that people can put in their configuration, because they were often good ideas, Org would then take those ideas, put them in, so you wouldn’t have to do all that configuration. You just set a flag or whatever else and it would do all of that for you. I was like, “Hm. This book is going to be very short,” because everything I add something, then the code keeps getting shorter and shorter, because everything gets replaced by just a setq whatever whatever whatever. Which is nice, but well… If the alternative had been to not share it and to wait until it was a printed book… and to have it be obsolete two days after it was published… right? It was better that the ideas got out there.

Anyway, the end result was I wrote what I wanted to write, which was basically how to use Emacs to run your life and then it was like, okay I don’t think this is going to work out. So since then, I’ve basically just been posting Emacs blog posts whenever I hack around something interesting in my configuration or whenever I need to answer somebody else’s question. But because I’m experimenting with semi-retirement and people seem to like this drawing, writing, blogging thing a fair bit, I’m very curious about the idea of putting together these resources to help people learn more about Emacs. Whether it’s working with the stuff that’s already out there or configuring things or making their own modules and packages… there’s so much to learn and if I can help put together things like that one page guide to learning Emacs or make something like that for Org and other popular modules or say, “All right, if you want to learn Emacs Lisp, it’s intimidating, but here’s a map for things that you can learn so that you can gradually learn it.” Right? Because Emacs and Emacs Lisp are so overwhelmingly large. There are so many possibilities. But if you learn a little bit at a time, that helps. However if you’re new to it, then you don’t know which little parts at a time can be most useful, so I’d love to help put those resources and guides together.

Bastien:               Also I’ve got now two ideas that… The first one is the map of events from this new communities out of Emacs conferences all over the world, and maybe we can have more online hackathons about Emacs Lisp. I would love to help about that. And the other is this nice map about how do you learn Emacs, because there is a lot of topics – how you can go from one topic to another topic, from just small customization about this module to learning macros and so on, so on.

Sacha:                   Right. Right. It’s the… People often need to see why this matters. What are they going to get out of it. For example, if you’re reading about keyword macros, if you’re reading through the Emacs info manual – which is a great read and I recommend doing this for everyone, but it can be a bit of a reference, so hard to get through sometimes–anyway, so you’re reading through this manual and you come across keyword macros and so then like, okay let’s play around with this… what if people could discover this because they can see it in action… This is where those screencasts come in. Or they can get the story of where this saves people time, why this matters, and how you get started with it. First, you start off doing keyword macros. You start the keyword macro, you type in whatever, you close the macro, you execute. Then you graduate to using registers, right? You graduate to using the arithmetic operations, so you’re incrementing your registers. Then you’re doing all these cool things. So there’s a path that doesn’t scare people.

Bastien:               Yeah. I like this idea, because we’re always talking just by reflex about Emacs’ learning curve, but it’s not a mountain to climb, it’s just various paths that you can explore and that’s what we like. And the last idea – I think it’s fantastic – like you’re not making your book out of dead trees, but you are making this big conversation about Emacs alive and that’s even better, I feel like. It’s better than a book and I’m really glad you started all this, and I hope you’ll have many followers doing this. Even small conversations like we do with friends and starting to have many conferences or hackathons and maybe some mentoring from people who are more seasoned Emacs developers or users to have younglings under their wings. That’s a nice idea for the future and I think it might be a nice conclusion for this chat. I’m really glad we… How was it like fifty minutes?

Sacha:                   Yeah. Forty-five minutes, because–sorry about the mix up about the time, but yes.

Bastien:               Okay. Okay.

Sacha:                   Time flies. But I really like talking to other Emacs geeks about all these cool things we can do with the community, so I’m up for more conversations like this if people want. It’s been such a fantastic experience. I find it hard to believe that I’ve been playing around with Emacs for the past ten years and I still feel so new and so excited about all of it.

Bastien:               So maybe one last word about… Do you speak other functional languages other than Emacs Lisp?

Sacha:                   Well I’ve played around with some of them, but Emacs Lisp is actually the main thing that I use. However, what it has done is Lisp has totally warped my brain, because now when I’m writing things like Ruby code, because Ruby has maps and all of that as well, I think in lists. The code that I write has changed because of the code that I’m reading, the code that I’m working with Emacs. So when I’m stuck using a language like Java, for example, like… Why can’t I just do this thing?

Bastien:               Yeah. So it helps learning Lisp and Emacs Lisp even for other languages?

Sacha:                   Oh yeah. And also because I use Emacs a lot when I’m – for example, when I’m analyzing data. Sometimes I’ll just yank something into a scratch buffer and then do my keyboard macro search and replace and all that stuff, maybe write a function that cleans things up if I’m doing this regularly. Then I’ll take that and I’ll use that as an input for something else. It’s such a useful general tool and it’s awesome.

Bastien:               All right. Great. So I think we can stop here. We have many ideas, and so you gave me energy to work on some of them.

Sacha:                   Yay!

Bastien:               And that’s really nice. I think the mailing for the Emacs conf is always on, because I started with the mailing list. It’s always available so we can discuss for those activities. My schedule is completely full until December, but I’ve discussed with some French people, so hello French developers, we are putting together something about an Emacs small conference in Paris at some point, and maybe there is Richard Stallman traveling a lot in France, so maybe we can catch Richard and have him explain what is the history or maybe the prehistory of Emacs and stories that nobody’s heard so far. I don’t know. That would be cool, too.

Sacha:                   Yeah. And virtual meet-ups. Again, I’m up for figuring out what those look like, how those work, just more ways to connect.

Bastien:               I’m up for it. Paris is completely rainy for the last two years, so virtual meet-ups are perfect, sunny and bright. It’s good.

Sacha:                   All right. Thank you so much, Bastien.

Bastien:               Thank you, Sacha. Hope to see all the comments from people, more questions and more ideas about how to move things forward.

Sacha:                   For sure. All right! Talk to you soon!

Bastien:               Bye bye.

 

Emacs Chat: Bastien Guerry

Posted: - Modified: | emacs, Emacs Chat, podcast

In this chat, Bastien tells stories about getting started in Emacs, reading his mail/news/blogs in Gnus, and hacking his life with Org. =) Enjoy!

Want just the audio? You can get MP3s or OGG from archive.org.

Emacs Chat: Carsten Dominik

Posted: - Modified: | emacs, Emacs Chat, podcast

In which Carsten shares how he got started with Emacs, the joys of Calc, and other cool things. =)

Carsten Dominik from Sacha Chua on Vimeo.

Want just the audio? Get it from archive.org: MP3, Ogg Vorbis (gosh, archive.org has been automatically converting to Ogg all this time? That’ll simplify my post-production… )

Emacs chat: Thomas Kjeldahl Nilsson

Posted: - Modified: | emacs, Emacs Chat, podcast

I got to chat with Thomas about Emacs and picking up configuration snippets from EmacsWiki. He’s so lucky – he gets to work with lots of other Emacs geeks! =)

Thomas Kjeldahl Nilsson – Emacs chat from Sacha Chua on Vimeo.

More about Thomas on kjeldahlnilsson.net

Just want the audio? Get it from archive.org

Emacs Chat with Avdi Grimm (Org-mode, Ruby, etc.)

Posted: - Modified: | emacs, Emacs Chat, podcast

Update 2013-03-16: Get the MP3 or Ogg Vorbis files, or listen to them on archive.org!

Thanks to Matthew Darling’s comment on my post about code coaching, I came across Avdi Grimm’s work with pair programming – and was delighted to find that he uses Emacs too. =) Check out my Skype chat with Avdi about Org-mode literate programming, Ruby, and how he got started with Emacs.

Emacs Chat with Avdi Grimm from Sacha Chua on Vimeo. If you liked this, you might also like my chat with John Wiegley. Do you use Emacs? Want to share your story and the nifty things you think other people should know about? Comment below or get in touch with me!

Transcript: Emacs chat with John Wiegley

Posted: - Modified: | emacs, Emacs Chat, org, podcast

This post is long, so if you’re reading this on the main page, go to https://sachachua.com/blog/2012/07/transcript-emacs-chat-john-wiegley/ to view the full transcript!

Here’s the video.

You can also download the MP3.

John Wiegley – June 26, 2012 from Sacha Chua on Vimeo.

A day in the life of John Wiegley

Sacha: One of the things I’ve always been curious about is all the different things that you use Emacs for. You’ve been one of our role models for ages now, and clearly you do a lot of Emacs Lisp programming with it, but what’s a day in the life of John Wiegley like?

J: I spend the most of my time in Org and Gnus. All of my task management… I think I’ve processed over 5,000 tasks in Org mode now, since I started using it. I’m a very very heavy Org mode user. I’m always in Gnus, always checking my e-mail through that. I use ERC. I actually run a second Emacs. For my Mac, I built another Emacs under another name, and I use that Emacs just for running ERC. I use that in conjunction with bitlbee so that I’m always on IM, always on IRC, and also that’s my Twitter client as well. So that’s always running on the side as well. I spend a lot of time then in Eshell, all the programming modes… Most of my day work is in C and C++ when I’m not hacking elisp.

S: Why do you keep your ERC in a separate Emacs? To minimize distraction, or…

J: When I’m hacking on Emacs, I end up needing to restart it quite often. Many many times a day, sometimes. That’s because I never know which definitions… Sometimes you change a definition from a function to a macro or vice versa, and you don’t know which other definitions you have to reevaluate in order for them to inline the new definition. Rather than have to figure that out all the time, I just restart Emacs.

S: Hence your trick of making sure that everything’s compiled and that you’re requiring all the files you need so that it loads up cleanly.

J: I just recently fixed a problem in my .emacs and I discovered that compiling it was not giving me any speed benefit. I thought compilation was what was making my .emacs run so fast, and it wasn’t. It was that I was loading—when I was running a non-byte-compiled Emacs,I was loading things that I didn’t need to load. When I fixed that problem, which is now fixed in my .emacs repository, Emacs loads in just over a second, but without doing any byte-compilation in my Emacs.

S: I must definitely be doing something long, because my Emacs takes a while to load.

J: How long?

S: I don’t know. I tried using the profiling thing, and because I use the Emacs Starter Kit, it didn’t get very deep. It feels like ten seconds or so. It takes a while. I can’t be bouncing it up and down like you do.

S: So you do a lot of Emacs Lisp programming, naturally. You’re on ERC, and you’re doing C and C++ development. Are there other really weird things you do that people wouldn’t expect Emacs to handle?

J: Let me think… I use it to play chess online.

S: Yeah, there are so many games in there! I play Nethack in there, so… pot, kettle, black, here.

J: I use it to look at databases. I use it… Let’s see… I of course use TRAMP to edit not only files remotely, but also local files through sudo so that I can edit them. Weird things I do in Emacs… A mode I forgot to mention is that I use git for all the version control that I do, and so magit is a mode that I just basically live in. For any project that I’m working on, the magit buffer becomes the home buffer for that project, and I’m constantly looking at that buffer to see what work I’ve done, what work should be committed now.

S: I haven’t made that a big part of my workflow yet, but I’ve heard such good things about it.

J: It’s a very nice mode. I use it in conjunction with the built-in vc mode of Emacs. If I’m editing a file and I really quickly want to know what I’ve done to this file, I’ll do C-x v = to get the diff of the current file. If I want an overview of what have I been doing and what I have been touching, I’ll go to the magit buffer and look at the stats.

S: I guess you version-control your Org files too. How many Org files do you typically work with, and how do you manage that?

J: I have eight. All of my active tasks exist in a single Org file. The other seven Org files are all archives. I have an archive file for every project, even though the live project lives in the main TODO file. That way, when I do an Org search, it’s only at that time that it loads in all of the Org files to do the search. I need Org to be as quick as it can, since I’m basically modifying tasks and adding tasks to it as the days go on.

S: That could be it. I’ve got a humongous Org file and org-refile takes a while trying to parse it.

J: Yes, it does, it does. I use Dropbox to synchronize my Org-mode files to my iPhone because I use org-mobile. Another interesting tool I have found is that there’s an app for the iPhone called dropVox, which lets you take a voice note and it puts it into Dropbox. I have an Org-mode hook so that whenever I open my Org-mode buffer, if there’s an audio file in my Dropvox box, it will pop up Dired and show it to me, meaning “You should listen to this and add it as a note to your Org mode now.”

S: That’s awesome. That’s like If This Then That on steroids.

J: All during the day, new tasks are coming in. They’re either coming in by ideas, by e-mail, by webpages… I have a keybinding I use in Emacs. Since I don’t use M-m for anything else, M-m is my make-a-note keybinding. So, wherever I’m at, if I hit M-m, it will make an org-capture and it will link it to whatever I was on when I did the capture, and it will link it to whatever I was on when I did the capture. If I was on an e-mail, it links it to the e-mail. Well, there’s a tool for the Mac called Quick Keys, and Quick Keys lets you rebind things globally on your system. I’ve made it so that M-n works anywhere on the system and tries to be as intelligent as it can. If I’m looking at Chrome and I hit M-n, it will take me to Emacs, pop up the org-capture buffer, and then put a link over to the webpage that I was looking at.

S: Is that using org-protocol or just QuickKeys?

J: It’s not using org-protocol. It’s just using QuickKeys. The only thing QuickKeys is really doing is it’s switching over, and then I use AppleScript from Emacs to talk to Chrome and get the information. I actually use AppleScript quite a lot for many different things. Using AppleScript from Emacs is something I do often.

S: What are some of the other AppleScripty things you do with Emacs?

J: I don’t like to keep Dropbox running all the time because it takes lots of background CPU. At the end of a few days, when I look at my process list and I look at total time in the kernel spent by all the process, Dropbox is usually #2 behind the kernel itself. That’s a little egregious to me when I’m only using it once in a while. I have Applescript so that in Org Mode, when I say go get my mobile tasks, it starts up Dropbox, waits half a minute, and then stops Dropbox. So it’s just running enough time to do this synchronization. And of course, I use that async module that I told you about last week to do that work.

S: It sounds like you’ve got it quite integrated into the other things you use on your Mac. That’s fantastic.

J: Emacs is the center of my entire environment.

S: Being able to glue all these bits together and make things work… That’s incredible.

On wishlists and Emacs Lisp

S: What are some of things you wish you could glue together? What’s the John Wiegley to-code-some-point-in-the-future list?

J: I’d like it if Emacs had a foreign function interface so that I could talk directly to databases and other things. There’s a fork of XEmacs that can communicate directly with PostgreSQL, and something like that would be nice because there are some systems that I work with where it would just be faster and more efficient if Emacs could talk to those systems directly instead of me having to communicate with them over a process. Embedding a Python interpreter, or embedding a Ruby interpreter…

S: Vim is extensible in a couple of different languages now, isn’t it?

J: I do prefer Emacs Lisp. I have to tell you that probably of all the languages I’ve used, definitely, Emacs Lisp has been the most fun. I won’t call it the best language out there because it does have its downsides and it’s a little bit slow. I can’t use it for most general tasks. But it’s fun, because you see results immediately, the debugger’s easy to use, the documentation is great and completely available at the tip of your fingers. It may be true that I have written more new code in Emacs Lisp than in any other language by this time.

S: I wouldn’t be surprised.

J: I’ve worked on much bigger projects in C and C++, but those didn’t always involve spitting out reams and reams of new code. Whereas as the day goes by, I’m writing new Emacs Lisp functions usually left and right to get particular jobs done.

S: I’m always running into your name. Oh, Planner! Oh, remember! Oh, eshell!

J: Too bad not all of those projects succeeded as well as I’d hoped.

S: Going back to talking about org-capture and picking up an annotation really quickly… I remember when we were playing around with that. Finding ways to hook parts of Emacs into all the different parts of Emacs… It’s great to see so many people playing around with these ideas.

The Emacs community

J: It’s a great community. It’s a good culture around Emacs.

S: How did we end up with something as cool as this? Emacs is pretty unique among the software packages or open source tools I’ve seen. Vim users are pretty happy and they share a lot of tips, and on the other end of the spectrum there’s Eclipse, and there’s a ton of development work around Eclipse, but Emacs… it’s old, but lots of stuff is going on. Why?

J: My opinion on that would be is that the real success was the Lisp machine. The Lisp machine was an entire machine that was what Emacs is to editing. You sit down at your operating system and it doesn’t matter what you’re using – your editor, your shell, your document viewer, whatever – they’re all written in Lisp. You can modify them as you go. The documentation for anything is available as you’re looking at it. You can pop the system into a debugger at any time. Lisp machines may not have succeeded, but Emacs Lisp… Emacs took that environment and that idea, and brought it down to the domain of a single application, the editor. It gives us all the cool things about the Lisp machine: the fact that the debugger’s available all the time and the documentation is completely cross-linked with everything. I think that’s probably what we’re experiencing, and that’s why it’s so much fun.

S: … And the fact that you can get in, you can tweak just that little thing just a little bit, and eventually end up with this massive Emacs configuration because you’ve been tweaking it to fit you.

J: I have to say that the original designers and Dr. Stallman – they had a very good idea when they put in a lot of hooks throughout Emacs. There are other extensible systems out there in the world that are not as extensible because they lack sufficient degree of hookage inside, places where you can latch on a piece of code to execute when something happens. Emacs has got those everywhere. That plus its advising system lets you basically change the behaviour of anything or augment the behaviour of anything.

S: I have to confess it’s one of the things I like the way that Ruby on Rails will let you open up classes, redefine functions, and then continue on with your work. The extensibility built into the very language is very very helpful. It also can be very intimidating.

Learning Emacs

S: We’ve talked about this before. You’re maybe one of a few Emacs users over there. I’ll on occasion run into someone who’s curious about Emacs but hasn’t taken the plunge. How do we get more people interested in this stuff?

J: Well, getting them interested is not that hard. It’s getting them to climb the learning curve that’s difficult. My wife’s a physician, and she sees what I do with Org-mode. She’s been tempted to learn Emacs just to use Org-mode.

S: I hear a lot of stories like that.

J: But the learning curve is so enormous that she just doesn’t have the time to learn it.

S: At some point you were very much into Vi, and then you said, okay, we’re going to learn things the Emacs way. You just sat down and you did it. Is that something we expect people to sit down and do at some point? Have you come across any things that make it easier for people?

J: Not necessarily that make it easier for people, unfortunately. I think it’s a philosophy thing. I use Emacs. I’m in Emacs and I use Emacs probably 70% of my every working day. It pays dividends to master it. Every efficiency gain I get in Emacs, I get to make use of right away, and it pays off as the days go by. There are people who type for their living who don’t know how to touch-type. That, to me, is the exact same scenario. How can you make your living as an engineer, typing day in, day out, and yet lose the productivity that you would gain by learning to touch-type. Even learning to touch-type – yeah, it will take you a few weeks. You either use a piece of software or go to class, whatever. So there is a hump that you have to get over, and you may not have the time to get over that hump right now, but it’s an investment, and that investment will pay off.

S: Get to know your tools and get to know them really well, because you’re using them all the time. In terms of Emacs, Emacs being very very big and Emacs being something that moves very quickly, what are some of the things that you want to dig into and learn more about?

J: I would like to learn the C side of Emacs more. I’ve never known the C side of Emacs. I’ve just recently been looking at the bytecode interpreter and trying to learn how it does what it does to see if there are ways to get better performance into Emacs. That, for me, is the undiscovered country. That’s where I want to go next.

S: It does sound like a lot of deep magic. That’s the very core of it.

J: It’s not as crazy as it seems. It’s pretty well done on the inside. Emacs without all of its Lisp modes and packages on top of it, if you boil it down to just its essence… the kernel is not really that huge. It’s a very small, very tidy, simple thing. Of course, there are places where it has some rough edges that can be smoothed, but it’s not what people think of as Emacs. They think of this kitchen sink application that does absolutely everything. That’s a lot of Lisp stuff that goes around the little kernel, whereas the kernel is very tight and small. I want to know more about that because anything done in the kernel affects everything else.

S: If you ever get around to doing annotated source code, I’d definitely read that.

Making money with Emacs

S: I hear you’re kinda on the hook for eshell documentation or whatever else people would like you to write.

J: That’s true. There’s a reason why the eshell documentation was never written. This would be a whole different discussion. I have some misgivings about what kind of world the GPL would create if it was everywhere. I do a lot of my programming as a hobbyist, but I have to make money programming as well.

The way to make money through software is usually to sell it. Otherwise, if you make money only through services, that never takes off. If you make a piece of software and you license it, it can take off. It can start making money for you and you don’t have to work to earn every day. Then you can use that time that you now have to make more software.

If the only income that you ever made was based on services, then you basically have to be working all day long, and when would you ever get your hobby coding done? When you only have six to eight hours a day to do any coding at all (because there are things that we have to do), you want to have a setup where you can do as much creative coding as possible.

Since the GPL’s view of the world is that you get paid through the services and you get paid through the documentation, when I released eshell, my thought was, “Okay, I’ve written the code, the code is in the GPL, so it’s freely distributable and I can’t charge anyone for it, but if they want services around eshell, then they can pay me for that.” I have always told the community that if someone wants to step up and pay for it, I’ll write the eshell documentation. But that’s never happened. So if the community doesn’t value the eshell documentation enough to pay me to do it, then why would I spend the time that I could be spending coding to write it?

S: Do you know what kind of bounty system we have or something like that for lots of people to say, “I want to pitch in so and so much to e-shell documentation?” Do we have that?

J: Yeah, or a Kickstarter project, for example.

S: That would be cool.

New users and Emacs happiness

S: You’ve been an awesomely prolific Emacs Lisp programmer, so it would be interesting…

J: Well, it’s just that I’ve been doing it for so long. It’s been eighteen years now since the first package that I wrote and submitted to Emacs. I know! You were just a kid back then when I was writing align.el.

S: I was ten! I’ve used align.el.

J: Yup. It was made when you were ten.

S: Are you seeing a lot of other young people get interested in this stuff?

J: Sure! It’s basically if you’re not going to be using an IDE like Visual Studio or Eclipse or something, Emacs is still one of the two great editors out there. It’s either going to be you go with Emacs or you go with Vim. It still pulls in new people all the time.

S: There’s just so much. Once people start customizing it, they get sucked in. As you said earlier, there’s a lot of interest in Emacs from the nontechnical side of the world. Writing, scientific papers…

J: We’re getting a lot of new users just because of Org mode.

S: How many years ago was that? Now, it’s just grown into this massive thing where people are writing their research papers and they’re doing their data analyses in org-babel, and having something come out… Literate programming writ large.

J: I started using it in 2007 and I think it was a couple of years old by then already. I tried to drop Org-mode a couple of times. I was thinking, there are sexier-looking apps for the Mac. There are apps that have better and tighter integration for the iPhone. On two different occasions, I left, converted all of my tasks over to a different program, used that program for a few months, came back to Org… and I always felt happy to be back in Org. I don’t know what it is about it. It looks right. It feels right. It’s got the right balance between how finely you can enter and manipulate the information, and how coarsely you can look at it at a glance. Other applications that I used… I don’t know.

There was just something about them, but I wasn’t getting the tasks done. I would put all the tasks into the application and I’d be excited about it for a few weeks, and then after a couple of months, I just wouldn’t look at it any more. I would know that the tasks were in it, but I would never do anything about them. The way I use Org Mode, I use it like a day planner, so that every task I intend to do is scheduled for a particular day. I’m rescheduling tasks and moving them to new days every single day for years now, and it just never has felt like a burden. So there’s something that Org does right.

S: There’s the hack that you told me about the other time where you change your window size, so you watch it shrink as you finish your tasks.

J: I fit it to the window.

S: Little motivational hacks that you can do because you can play around with the tool itself. I remember when I was trying to learn through flashcards using flashcard.el, I rigged it up so that it would tell me a joke using fortune.el and everything I got something right. It was either that or show me a cute cat picture from the files I’d saved off icanhascheezburger. The fact that you can hack it to do all sorts of crazy things… that’s incredible.

J: I just started playing around with its ability to view PDF files. You can use C-x C-f to open a PDF file and you’ll see it in your Emacs. It renders them page by page as PNG files, and then uses the Imagemagick extension built into Emacs 24 to show you those pages. Which is useful to me because I’m often looking at a language specification as I’m writing code, and it’s nice to have it in another buffer the way that I would have Emacs documentation. I can look at the C++ standard now and have it just be in another buffer.

S: How did you come across this new capability, because I didn’t know about this?

J: I think I ran into it accidentally. I think I was in Dired mode and I hit return on a PDF instead of hitting ! to open it, and all of a sudden, there it was, and I was, like, “Wow, I didn’t know Emacs could do that…”

S: Basically, for people who want to learn things… Just do random things in Emacs!

J: Although if you’re going to do random things in Emacs, take notes. Otherwise, you’ll never know how to get back to what you found.

S: That’s what the lossage buffer is for, isn’t it?

J: The lossage buffer can be a bit hard to read, though.

S: Execute-extended-command?

J: I did find on Emacswiki a mode called Command Log. It keeps in a very readable form every command you use.

S: I definitely have to pick up this habit of yours of just reading Emacswiki.

J: That’s how I started learning. You asked about how people get over the learning hump. I’ll tell you what I did. Back in 1994, when I started really wanting to know Emacs, what I did was I printed out the Emacs manual, which at the time was I think seven or eight hundred pages. It was just single-sided paper. I probably killed a small tree doing it. But I brought that stack of papers over to my desk and I put it to the side. At the time, my machine was slow enough that I was often waiting for builds to finish. What I would do is while whatever was building on my machine, I would pick up the top page of the Emacs manual, I’d read it, and then I would throw it away. I just did that over several weeks’ time. I ended up reading the Emacs manual in all of this dead time that I had, waiting for compilations to finish. I made that a yearly habit for the first four years, just to constantly refresh my knowledge of what’s in there, because it’s such a massively huge environment. It helped.

S: My story is that I’ve used Emacspeak to synthesize the Emacs manual so that I can listen to it while walking around. I was reading my mail off Gnus at the time. You could use Emacspeak to read your mail and all of that stuff. You find all these ways to cram information into your brain. I would be up for more podcasts. I see people are coming out with books as well. There’s the Org mode book. That might be another way for you to do it, right? You write your documentation and you say, here’s a book that you can buy. But then it’s very speculative work, I suppose.

Back to earning

S: Speaking of other things that integrate into Emacs… Thank you for writing Ledger, by the way, because I still run all my finances with it. I have no idea where I’m going to find an accountant who understands Ledger…

J: Our biggest problem right now.

S: Either we put together a Kickstarter so that you end up writing a manual and accountants all over the world will be like, “This is awesome!”. Or I just learn how to use Quickbooks.

J: Ledger does have a manual. That was one I wrote the manual for. It’s also not GPLed.

S: There you go. There are ways to work around that… So your ideal is figure out how people can pay you for documentation because all the code is GPLed anyway. Are there other models that seem to be working for other people, other ways to make the awesome hackers that work on this stuff happy so that people can keep working on this cool stuff?

J: Not with Emacs hacking. I’ve been paid one time now to do a course on Emacs because my company does training, and Emacs training is one of things that we do offer.

S: You should definitely explore that remote training aspect.

J: We’re looking into that. I believe that is the only time in my life that I have earned money just because of Emacs. So it hasn’t paid for itself monetarily, but it’s paid for itself in other ways.

S: In terms of efficiency, being able to do all these things and fly through that. Anyway, that might be an interesting challenge for us also, figuring out how we can get more Emacs geeks to be rich and famous.

J: That’ll be the day.

S: Imagine if we had an Emacs app marketplace?

J: Yeah, seriously… Wow. Just propose that idea on the mailing list and see what a flamewar that would begin.

The developer community

S: But it is very nice to be able to play around with all these packages, and there are thousands… A lot of them will go and look for ways to integrate with each other, like the way BBDB integrates with Gnus.

J: That’s another one that I use. And there’s always new stuff coming out, and authors are very good about interacting with each other. The author of helm just recently incorporated using my async module that I wrote. He did that just in a matter of a few days. Since helm is something I rely upon on all the time, I’m very happy to see that.

S: That’s actually one of the challenges I came across when it came to writing documentation or writing a book about Emacs, especially the modules that people are working on. The packages, right? You share an idea, and the maintainers would be, like, “That’s an excellent idea!” and they would fold it in. So I kept running out of book topics! That’s a good thing about the community. It moves so fast.

J: If people are looking to know Emacs better, they should also stop by the IRC channel. I’m there every day, and a lot of people there can give good help if you have questions.

S: Yeah. It only looks off-topic from time to time, but if people show up with Emacs questions…

J: It also depends on the time of day, too.

S: Do evenings tend to work for you? When do people usually hang out there?

J: I’m a night coder, so that’s when I’m there, but people are there all around the clock.

S: I tend to drop by in the evenings too, when I remember to do that. ERC makes it so easy because it’s just there.

J: Yeah, I haven’t seen you there that often. You should come by more.

S: I know.

J: I always see you at the very end of my night, what would be dawn for most people. That’s when you usually come in.

S: That’s funny. I’ve got to work on my timing. One of the things I want to do is figure out if we can have a regular Google Hangout or whatever, right… It’s easy to do screen-sharing through that and you can have multiple people, so, if we just get people together and say, “What have you learned about Emacs lately?” then it’s slightly more visual than IRC.

J: There’s also Twitter. A lot of people use that to talk about new stuff they’ve found in Emacs.

S: Yeah, I’ve seen a couple of people tweeting really short Emacs tips, and it’s great to see that kind of stuff going on. I remember people used to have Emacs tips in their e-mail signatures as well. All these little ways to increase randomness. Emacs is so huge that if you just find little ways to say, “Oh, hey, there’s this new feature” or “There’s this interesting command over here,” who knows what it’ll spark?

J: There’s too much good stuff.

More tips for new people

S: So you recommend that if people are new, they should check out the IRC channel, EmacsWiki…

J: Go through the Emacs tutorial first. Then stop by the channel, read the Emacs manual, pick something you want to accomplish with Emacs and focus your learning around making that happen, rather than taking on the task of trying to swallow the whole thing right up front.

S: People will easily divide into… You want to do programming, check out the EmacsWiki pages on the respective languages. If you want to do text editing or the subspecies of research paper editing or whatever else, then there are pages for that too.

J: There’s always more stuff out there than you’re aware of. I’ve been trying to make myself aware of everything that’s out there, and I keep running into new stuff on a daily basis. Just yesterday I found swank-js, which lets you interact with the Javascript interpreter inside your browser as a REPL. You can connect to Firefox and be manipulating the webpage through an Emacs REPL using Javascript. Isn’t that crazy? If I were doing web development, I could see that that would just be invaluable.

S: I will go have to check that out. You’ve also mentioned a couple of other Emacs blogs, like Mastering Emacs… Is that one syndicated on Planet Emacsen yet?

J: I don’t know. I’m not sure if I have… I aggregate all of my feeds in Gnus into a virtual group, so I’m never aware of the actual source of any feed, I just get presented with one group that has all the current happenings in Emacs.

Emacs blogs and reading with Gnus + Gwene

S: Someday we should totally get your OPML and cross-reference it with everything that’s syndicated there.

J: That’s true. That wouldn’t be a bad project, maintain an OPML file of all the Emacs feeds out there on the Net, because I would love to keep my list updated. I went through and did a search through Gwene to see all the feeds that it had syndicated, which is of course not all the feeds that are out there. I did that two years ago, so there have been new feeds since.

S: I’ll take that away as a TODO and see if Planet Emacsen will have all these things… Who was that in charge of it? Edward, Edward O’Connor.

J: Yeah, that’s right. So any time you find a new feed, add it to Gwene. That way, anyone who goes to the Gwene server with Gnus can just do a search for all groups matching to Emacs and subscribe to them all.

S: With Gwene, when you reply, does it get posted as a comment too?

J: I’ve never replied to anything on a Gwene server, so I have no idea what it does.

S: Yeah, it would be tricky to make it that smart. It would be cool, but it would be tricky.

J: There are so many blogging platforms and some require authorization and some have CAPTCHAs… It would be tough. I really thank Lars for setting that server up, because it allows me to digest a lot of news about Emacs in a very short period of time each day.

Dealing with data overload

S: What are some of your other massive-amounts-of-information-how-do-I-deal-with-this tips?

J: You mean just coping with data overload?

S: Whether it’s programming, news, mail… How do you filter?

J: I use virtual groups a lot to aggregate so that I’m not overwhelmed by a huge number of groups that have lots of unread messages. I’d rather have fewer groups with more messages in them. Then I use Gnus’ very handy adaptive scoring with Gwene. In my .emacs repository, there’s a file called my-gnus-score. I’ve codified everything related to my scoring configuration in that file, so if you want to use the system that I use, that’s the file to get. Adaptive scoring basically allows me to go into a group and then if I see a thread there that’s not interesting to me and I don’t read it, I will never see that thread again. All of my groups only ever show me threads I’m currently reading, or new threads. I don’t have to wait through stuff I’m not interested in any more. It’s not that it just downscores it, it doesn’t appear at all. That’s a good way for me to cope with the thousands of articles per day that get downloaded to my machine, because I’m only reading maybe forty of them at best. That’s one good way to cope with the data over load.

S: I’ve never found anything that had the kind of scoring that Gnus has. I want it with everything. I want it with Gmail, I want it with all that stuff… C’mon, get with the times!

J: Even though I receive my e-mail at Gmail, I suck it down to my machine with fetchmail and I put it into a local dovecot server so that Gnus will hold sway over it. The other thing that’s valuable in coping with data overload is just structure.

Structure is really the key to everything. And when structure gets too big, then you just need metastructure. As long as you have some way to get to the thing that you need to know when you need to know it, but your top-level view – the thing that you’re thinking about in your mind – is always small, then it doesn’t matter how much information you have.

I stopped deleting things that I downloaded a few years ago. I started having enough disk space that I just keep everything. You never know when you’re going to want it again. You never know when that version you had isn’t going to be on the Internet any more, etc. I have a giant file server that I built that just accumulates lots of information. There’s a directory in my home directory called archives, and archives now has about 400GB of files in it across millions of files. There are files within files. It’s just an enormous amount of information.

But the way that I manage that data overload is just by structure. I developed a taxonomy to put things into places by category and by topic. Whenever I have a file or whenever I’m looking for a file, I can know within seconds what the path name leading to that file or group of files is going to be, because I adhere to the taxonomy rigidly. I have an inbox where new stuff comes in, and then I sort the stuff out from the inbox using Dired into the parts of the taxonomy that it needs to go in.

The key there is that even though I have all this data – which is way more data than Spotlight or systems like that are ever going to help me search through – by having the right structure, the data is easy to find.

I use Org mode as a sort of meta-structure so that if there are parts of that structure that I often refer to, I’ll put a link to them in Org mode. In Org mode, I’ll have a hot list, and the hot list are the things I care most about right now. The hot list will just branch to other lists or to other areas on the machine or other parts of the Web. You want to keep the hot list down to a reasonable small amount, so like ten to twenty items. That should branch out into everything else. Everything should ultimately go down to the leaves of everything that you have. If you have anything unowned by your hierarchy, it will get lost or it will just become forgotten. I believe that hierarchy is the solution to any problem in terms of data overload.

S: I was just thinking about how I can organize my ever-growing Org files and I’ve been trying to create categorical indexes, going through all these things, creating links to my blog (external information and all of that)… but it’s fascinating to see how people have been organizing, especially since you’ve been using it for a while, and you have tons of information in it. Lists of lists.

J: And also information I keep needing to refer to, even years later. I’ll remember… I knew at one point how to disable the Spotlight index, for example, but I can’t remember the command. That command is no longer in my Zsh history file. How am I going to know that information? If I search for it, I might find it, but there are some things you just can’t search Google for because it’s too abstract. I’ll write it down in my Org mode file and even though it’s in the archive file, it’s still searchable, it’s still indexable. I can ask my whole system, what do you know about Spotlight? I’ll get a list back of all the things I ever thought were valuable to know about Spotlight, and in that list will be indexing, disabling, etc.

S: That is an excellent use of Org mode. I remember you showed me a glimpse of your Emacs org file where you were listing all these things you were learning about Emacs, and that file looked really long.

Maintaining your information

J: It does require some investment, though. Maintaining structure like this requires always weeding and pruning, combing and going through the data. My wife and I have a word for it. She’s Persian, and the Persian word for putting things in order is monazem(?). She’ll ask me—I’l l be at my computer, playing around with it—and she’ll say, “Are you monazeming?” All that I’m doing is just moving stuff around, I’m renaming things, I’m building index links… That might not be a fun task for everyone. Maybe part of me always wanted to be a librarian when I grew up. I actually get a lot of pleasure out of that. I find it relaxing. I find that imposing order on the chaos of my machine gives me a greater feeling of order in my own life, and that makes me better able to handle the new information that’s going to come in the next day.

S: It also helps you remember what’s in your file, so you know what you can search for.

J: That’s very important. Our memory, it’s not ever going to be good enough to just keep our eyes on the thousand things we might have in our configuration or the million things we might have in our machines these days. That doesn’t even include all the things we’ve seen on the Internet, thought were cool, but haven’t noted down anywhere. We just remember that it’s there, but we’re losing those all the time and we’re not aware that we’re losing them.

S: At least until you plug your browser history into an Org thingy that automatically captures all of that stuff. People used to have browser plugins that did that…

J: That’s a neat idea, actually. Hmm…. I like that idea. I used to not have any cap on my history in the browser, but ultimately it makes the browser too slow. But it would be nice to queue it out to a log file or a database where it just gives the link, a title, and a synopsis of the contents. That would be kinda nice. You’re giving me ideas, Sacha.

Wrapping up

S: So, we’ll see it next week, then? Okay. Lots of tips on all these different things you can do with Emacs, where to get started, how to organize a huge archive of information (lists of lists and breaking things down)… Any parting words before I line up other people to bring on to this “Let’s Talk about Emacs” thing?

J: Just that Emacs is fun. All of this technical stuff, all of these features… the reason I use it is because it’s fun.

S: It is. It’s a lot of fun. It’s even more fun because… Well, I get to bump into people like you, and the Emacs community is so awesome!

J: I got to know you through it as well! That’s been a great thing.

S: When you made me the maintainer of Planner, I was, like, “Oh my gosh, I’ve never maintained anything before.” I was a university student, and it was an excellent experience.

J: I always appreciated the little cards that you sent me from time to time through the years, mentioning your uses of Planner…

S: I should send cards to Carsten too. Bastien is the new maintainer, isn’t he? Emacs appreciation cards.

J: That’s right. I think that’s a great thing you did. Thanks, Sacha!

S: Thank you so much. Nice talking to you, and I’ll catch you again sometime.

J: Have a good night!

(Transcription took me 2:35 for 0:44 of audio.)

Emacs: Chatting with John Wiegley about the cool things he does with Emacs

Posted: - Modified: | emacs, Emacs Chat, podcast

John Wiegley – June 26, 2012 from Sacha Chua on Vimeo.

Transcript: https://sachachua.com/blog/2012/07/transcript-emacs-chat-john-wiegley/

Read more context for John Wiegley’s thoughts on the GPL. Note from Sacha: The WordPress folks seem to have figured out how to earn money with premium themes, plugins, and training, so it’s not incompatible with the GPL… =)

John Wiegley is one of my Emacs heroes. =) Check out John’s Emacs configuration and other tools on Github. John occasionally posts Emacs-related things at newartisans.com. You can find him on Twitter as @jwiegley. Enjoy!