This makes me curious: What am I doing right, and how can I do it even better?

Looking at my Emacs posts, it seems I mostly write about figuring things out (and occasionally about cool things I’ve come across). People like the enthusiasm, and they sometimes pick up cool ideas too. The Emacs Hangouts and Emacs Chats are my way of working around my limitations; I don’t particularly like travel and I’m not up to organizing in-person meetups, but virtual meetups let me reach out to more people (and we can record the conversations more easily, too).

What are my goals?

I want to get better at using Emacs, because it’s useful and it tickles my brain

I want to help more people become intermediate and advanced users of Emacs, because then I get to learn from them (and also Emacs thrives as a community). I can do this by:

Showing people the benefits and possibilities of customization

Working out loud, showing my thought processes and the tools/libraries I use

I really like the way (or emacs has daily Emacs snippets and Rubikitch describes Emacs packages in Japanese. I think I’ll slowly ramp up from once-a-weekish Emacs posts to maybe twice or three times a week. I have more posts already scheduled, but I just spread them out so that my non-geek readers don’t get overwhelmed.

Guides

Because I’m interested in things that tend to be idiosyncratic (workflows, customizations, etc.), I have a hard time making clear recommendations or putting tips into logical order. That’s probably why I do a lot more “thinking out loud”-type posts instead. I can experiment with identifying who might find a tip useful, extract the tips from my thinking-out-loud explorations, and gradually build up sets of related tips that way.

Microhabits

I’ve been going back to the basics, working on developing even better Emacs microhabits. I’ve focused on two so far: abbreviating text and switching windows.I think there’s plenty of space to improve even in terms of taking advantage of what’s already out there (with minimal configuration along the lines of setting variables and keyboard shortcuts). And then there are even bigger opportunities to improve through customization and Emacs Lisp.

Helping people directly

I’ve mentioned coaching a few times. Bastien Guerry and a few other folks offer coaching as a service. Me, I’m not particularly familiar with the kinds of issues people run into or are curious about (ex: Mac OS X, programming mode setup). I’m mostly curious about workflow, and I’m happy to talk to people about that. It could be a good source of ideas for blog posts.

When I ran my Google Helpouts experiments, I turned many of those tips into blog posts. I think that would be even more effective if people wrote up those tips themselves (it’ll reinforce their learning and it will bring them into the community), so I’ve been playing with the idea of strongly encouraging or even requiring write-ups.

Unrealistic, but one can dream. Or one can focus on helping people who are already sharing their questions and ideas in blog posts or discussion forums, so that’s another approach. There’s no shortage of questions, that’s for sure.

Hangouts

I like Emacs Hangouts more than one-on-one coaching. Hangouts are public and recorded automatically, so people can learn from them even if no one has posted notes. It’s shaping up to be a wonderful peer-coaching sort of thing, which is good because I don’t have to be so worried about not being able to help at all. I wonder what this would be like with a bit of a mastermind group structure; maybe we each pick a microhabit or idea to work on for the month (or for two weeks), we help each other out, and then we report back at the next one. That way, there’s casual conversation and discovery, but there’s also purpose and motivation.

Connecting with more parts of the Emacs community

Evil-mode users are a growing part of the Emacs community. Maybe I should try it out to get a better sense of what the experience is like for people who are coming into Emacs via evil-mode. Besides, composability might be an interesting mental tool to add to my toolkit.

Wrapping up

Focusing on those micro-habits and sharing what I learn (good for helping intermediate users develop a better appreciation of Emacs)

Playing with more workflow improvements and sharing them

Writing about how to tinker with popular packages like Org

Reaching out through blog comments and Emacs Hangouts to help people learn (in a publicly recorded way)

Bringing out what people know through Emacs Hangouts and Emacs Chats (especially if people know cool things but haven’t gotten around to writing about them)

Helping me get better at helping the Emacs community (my selfish reason: so that I learn more from people) can also support your evil plans (your selfish reason: so that you can learn more from me and from other people). Any suggestions? Tell me what I’m doing right and should do more of / better at, or tell me about somewhat adjacent things that are easy to do – low-hanging fruit! =)

WELL. That was odd. Somehow the Google universe bifurcated and I spent the first forty minutes awkwardly talking to myself (braindumping Emacs tips) while the rest of the people in the Emacs hangout (1) wondered about my non-existence, and (2) got on with a great conversation about Emacs. I even did the “Hey, can folks hear me?” sort of thing and since some people were in the text chat and confirmed there were technical issues, I assumed that (a) we were talking about the same technical issues, and (b) many of them were inaudible because of said technical issues (or because they were at work, or whatever). The test audio played fine on my end, and the microphone sound levels looked fine too. I could see the group chat and everything. When it finally occurred to me to refresh my screen (which I had hesitated to do because that might end the session for everyone), I finally joined.

BIG THANK YOU to all the Emacs geeks who shrugged at my absence and carried on chatting. =)

Anyway. Fortunately, the recording is actually from their side of the parallel universe, and my interminable, horribly embarrassing blathering is lost forever. (I hope.) I mistakenly clipped it before, but it should be back to normal now.

Let’s get Emacs Hangouts sorted out for February and March. I think I can avoid technical debacles like this if I schedule something where I know at least one other person will turn up a little early and help me with a tech check. If you volunteer, we can pick a time that matches you. (Yay!) Leave a comment or e-mail me at [email protected] . =)

Also, since mailing lists can be useful, here’s one for Emacs Hangout announcements. You’ll get an e-mail to the Google+ Event when we figure out date/time, and another reminder the day before the event. Sign up at http://eepurl.com/bbi-Ir

One of the awesome things that Karl Voit demonstrated in this Emacs Chat was how he used YASnippet and Org Mode to quickly create projects with several related tasks, such as when organizing a group to attend an event. He selected the snippet and filled in different fields like the artist name and the event date, and Emacs generated all these sub-tasks and e-mail templates with the information already filled in.

I’ve used YASnippet once or twice, but mostly I’ve been using org-capture and org-capture-templates instead. YASnippet looks like it might be more flexible because you can fill in fields in a non-linear order and you can re-evaluate Emacs Lisp expressions as you type.

Lots of people do cool things with YASnippet. For example, it’s popular for programming because it lets people quickly expand short sequences into longer syntax. Check out this Emacs Rocks episode on YASnippet to get a sense of what it can do. (Note: YASnippet has changed its naming convention slightly, so things like yas/text have been replaced with yas-text.) People have used it for e-mail templates and to fill in metadata for blog posts.

I’d like to use YASnippet more. Where can I integrate it into my workflow? Probably wherever checklists and templates make sense. I’ve been thinking about checklists and templates as a way to improve how I do things.

Checklists are good for making sure that you complete tasks more consistently, not missing any important steps. You can work faster when there’s a guide, since you don’t have to keep thinking of the next step each time. The simple act of checking things off can encourage you to put in more effort, since the list shows you your progress. It also makes it easier to remember to follow up.

Templates help you improve the structure of your work. You can make sure you cover all the important parts. If you use similar structures for many things, then people get used to finding information in the same logical places. This doesn’t mean that you’re stuck with cookie-cutter formats. You can still adapt the format to your needs.

I’m particularly interested in using checklists and templates to improve in three areas:

Programming: I’d like to write with less friction and use best practices like testing

Helping the Emacs community: Checklists can help me make sure I do all the steps to prepare for and make the most of Emacs Hangouts and Emacs Chats. They might also lower the intimidation factor so that I end up scheduling these more often.

Writing: I think checklists and templates will help me invest more time into developing thoughts, relationships, and structure.

Programming

As mentioned, YASnippet’s popular for programming. You can take advantage of existing collections of snippets for different programming modes (ex: AndreaCrotti’s collection), or you can define your own.

I’d like to get better at developing single-page applications using AngularJS, Twitter Bootstrap / Zurb Foundation, and NodeJS. YASnippet might let me quickly put together short applications and test suites. If I get my workflow smooth enough, I might even be able to do an app-a-week (or app-a-day) sprint for deliberate practice. There are often lots of fiddly little syntax or keyword things that I look up while writing code. While practising typing those things in again and again will help me memorize them, there’s also some value in automating that part with snippets so that I can focus on the core skills of designing and implementing small web applications.

YASnippet might also be able to help me use Org Mode to keep track of ideas for features or small web applications throughout the implementation process. I wonder if I should implement this using lots of subtasks or using TODO states with logs. TODO states might be easier to filter or visualize with the kanban package for Org Mode. Maybe I’ll try both approaches. In any case, checklists will help me remember to think about designs and tests before implementing the code, and maybe I can keep track of deployment notes, lessons learned, and follow-up tasks.

Emacs Community

I find checklists to be really helpful when setting up live videocasts. I’m usually too frazzled to think of all the steps I need to do at the last minute. Paper checklists are good because I can refer to them while keeping my screen ready to be recorded. Still, an Org Mode-based checklist (possibly with dynamic date fields and e-mail templates provided by YASnippet) might go a long way towards standardizing the before- and after-event process, and that might in turn reduce the friction enough for me to do more of them. Both Emacs Chats and Emacs Hangouts seem to be popular, so it would be good to get more of these on the go.

The process would be something like:

Reach out to the person who’s going to be featured on the Emacs Chat, or at least one other person who’s willing to be there for the Emacs Hangout (so that I don’t end up talking to myself for the first ten minutes, which is Awkward)

Figure out what will be discussed (for Emacs Chats)

Set up a time, considering timezones

Set up the Google+ event page

Update the Google Calendar

Post a notice on Twitter and on my blog (I’ve been forgetting to do this step)

On the day of the event

Do the last-minute push (I’ve been forgetting to do this as well)

Create the Google Hangout on Air

Set it up for Q&A

Invite the other person in for Emacs Chats, or post the URL for Emacs Hangouts

Host the video chat

Remind people where the recording can be found

Update the Google+ page with the link to the next thing

Extract the MP3 from the video, change the properties, and upload it to archive.org

Post a blog post with the embedded video, podcast audio, and quick notes

Transcribe the video or pay for transcription

Edit the transcript

Update the post with the transcript

Update the Google+ event page with the link to the transcript, post to social networks (I’ve been forgetting this)

Update EmacsLife.com, too (yet another thing I’ve been forgetting)

I think it would be totally awesome to get to the point where I can call an Emacs Lisp function that would Do The Right Thing at that point, like posting to Twitter or using something like org-trello to make a Trello card and assign it to the person who does my transcriptions.

Writing

I’m getting the hang of using outlines to write (and I should post a video about this soon), but it might be even cooler if I can get the hang of writing with more structure. For example, Michael Hyatt posted this blog post checklist that he had been using with Evernote. I like it because:

The template asks you to be explicit about the post’s objective and subject.

It encourages you to add more illustrations, links, and stories.

It reminds you to take steps that you might otherwise skip, and you might spend several days revising the post.

I might not use it for every post, but it’s good to flesh out some ideas further, especially the ones where I think I’m onto something particularly interesting.

It would be even cooler if I could take advantage of YASnippet’s dynamic Emacs Lisp evaluation to remind me of relevant links from my blog post outline given the category. I remember playing around with the Remembrance Agent, which monitored a few hundred words around your cursor and brought up files that had similar words. Matching on category isn’t going to be anywhere as sophisticated, but it still might be a good way to refresh my memory. Even if I had a quick Emacs Lisp interactive function that read whatever category property I’d set (chosen from the org-refile-able targets) and displayed the section from my blog post index in another window, I think that would be a pretty neat start.

I tend to draft posts within my sharing outline (which I sporadically publish at http://pages.sachachua.com/sharing/). When I’m done, I delete the subtree, sometimes replacing it with a link to the post to help me follow up on it in the future. This means losing that metadata, though. It might be interesting to keep the metadata so that I can review the goals and backstory of a blog post.

YASnippet can also help me keep track of the TODOs related to a post as well. For example, I might want to come up with sketches, tweet links, or follow up on ideas. If I use a YASnippet to plan my blog post in the first place, then I can create a TODO (possibly with a link back to the blog post) that I could leave in place or refile to the appropriate location in my regular Org Mode files.

I don’t think YASnippet dynamic fields persist after the file is saved and reloaded, though. How would that work if I need to change things? Maybe I can use multiple-cursors to mark all the matching text in the subtree, or do other clever things with it…

Next steps

Okay. It looks like setting up YASnippet for Emacs checklists would probably give me the quickest win. Programming is also pretty straightforward. Writing might be interesting too, if I can get the hang of working with that kind of structure. Let’s see how that goes. Once I figure out what those snippets will be like, I’ll post them on Github somewhere. =)

Is YASnippet part of your workflow? Have any thoughts, suggestions, or neat stories?

I’m a fan of clever little things that change their behaviour depending on what you’re doing while letting you mentally think of it as just one function.

ace-isearch looks like it’ll be useful for collapsing three different functions into one mental thing in my head:

jumping to a specific character that I can see (ace-jump-mode)

searching through a buffer for a few characters (isearch)

doing helm-swoop to quickly preview and navigate through matching lines in a buffer

If you install the ace-isearch package and turn on global-ace-isearch-mode, then searching for a single character triggers ace-jump-mode, searching for less than 5 characters triggers isearch, and anything longer triggers helm-swoop-from-isearch. You can customize those thresholds, of course.

I want to publish things in chunks that are bigger and more logical than blog posts, so I’ve been experimenting with my ZIP/PDF/EPUB/MOBI workflow.

Org Mode, Calibre, and Vagrant are terrific tools. Org Mode lets me write easy-to-modify source that I can export to different formats, like HTML and LaTeX (with the Beamer package), which lets me use PdfLatex to convert to PDF. Calibre converts HTML to EPUB and MOBI. Since tools can be difficult to set up on Windows, I use Vagrant to set up a virtual machine running Linux and I share my working directory with it.

multiple-cursors was so useful when I was wrangling the directory listing into the right format for Org. I’m glad I learned how to use it!

I’m not quite sure about the MOBI output yet. I have to test it on a Kindle, or in the app on my tablet. Most of the things display fine on my computer, though. Hooray!

Neat, huh? I want to get into the habit of making and also making it easy for me to update these things. You can check out the results at http://sketchedbooks.com/collection .

Someday I might even figure out how to use the Gumroad API to publish updated resources automatically. Wouldn’t that be neat? In the meantime, I’ll just have to replace them myself.

I like giving people the ability to choose which files to download. If I get annoyed with replacing multiple files, though, I might change this to one large ZIP that has the images, PDF, EPUB, and MOBI.

I’m perpetually using M-z to zap-to-char and then typing the character back in, because I really should be using zap-up-to-char instead. But if I’m going to get the hang of fiddling with my muscle memory so that I do things the Right Way, I might as well use this opportunity to practise using ace-jump-zap instead. The ace-jump-zap-up-to-char-dwim and ace-jump-zap-to-char-dwim functions behave like their normal equivalents, but if you C-u them, you get ace-jump type behaviour allowing you to quickly zap to any character you see. And since I mentally think of M-z as not including the character, I may as well map it so that M-z behaves that way.