Category Archives: geek

Thinking about how to make better use of Yasnippet in my Emacs workflow

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:

  1. 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)
  2. Figure out what will be discussed (for Emacs Chats)
  3. Set up a time, considering timezones
  4. Set up the Google+ event page
  5. Update the Google Calendar
  6. Post a notice on Twitter and on my blog (I’ve been forgetting to do this step)
  7. On the day of the event
    1. Do the last-minute push (I’ve been forgetting to do this as well)
    2. Create the Google Hangout on Air
    3. Set it up for Q&A
    4. Invite the other person in for Emacs Chats, or post the URL for Emacs Hangouts
    5. Host the video chat
    6. Remind people where the recording can be found
    7. Update the Google+ page with the link to the next thing
  8. Extract the MP3 from the video, change the properties, and upload it to archive.org
  9. Post a blog post with the embedded video, podcast audio, and quick notes
  10. Transcribe the video or pay for transcription
  11. Edit the transcript
  12. Update the post with the transcript
  13. Update the Google+ event page with the link to the transcript, post to social networks (I’ve been forgetting this)
  14. 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?

Emacs kaizen: ace-isearch combines ace-jump-mode and helm-swoop

This entry is part 3 of 4 in the series Emacs Kaizen

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.

Neat!

Org Mode publishing workflow for Sketched Books collection

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!

Here’s a Makefile I put together that simplifies the process for me:

all: index.html sketched-books.epub sketched-books.mobi ebook.pdf sketched-books.zip

clean:
	rm -f *.dvi *.log *.nav *.out *.tex *.snm *.toc

distclean: clean
	rm -f Sketched\ Books.zip index.html *.epub *.pdf *.mobi

Sketched\ Books.zip: *.png index.html
	(cd ..; zip sketched-books/sketched-books.zip sketched-books/* -i *.css -i *.png -i *.html)

index.html: index.org
	emacs --batch -l build.el index.org -f org-html-export-to-html --kill
	cp index.html index.tmp
	sed -e "s/org-ul/org-ul small-block-grid-3/" -e 's/div id="content"/div id="content" class="columns"/' -e 's/class="status"/class="status columns"/' index.tmp > index.html
	rm -f index.html~ index.tmp

ebook.html: ebook.org
	emacs --batch -l build.el ebook.org -f org-html-export-to-html --kill

cover-base.png:
	montage *Sketched*.png -geometry -30-30 -thumbnail x400 -tile 6x5 cover.png

sketched-books.epub: ebook.html
	ebook-convert ebook.html sketched-books.epub --cover cover.png --authors "Sacha Chua" --language "English"

sketched-books.mobi: ebook.html
	ebook-convert ebook.html sketched-books.mobi --cover cover.png --authors "Sacha Chua" --language "English"

ebook.tex: ebook.org
	emacs --batch -l build.el ebook.org -f org-beamer-export-to-latex --kill

ebook.pdf: ebook.tex
	pdflatex ebook.tex
	cp ebook.pdf sketched-books.pdf
	rm ebook.pdf

And here’s a very simple build.el:

(require 'package)
(package-initialize)
(require 'ox-beamer)
(setq org-html-validation-link nil)
(setq org-export-with-section-numbers nil)
(setq backup-directory-alist '(("." . nil)))

This assumes I’ve already set up the environment by installing the latest Org from MELPA.

You can check out the index.org and ebook.org I use, too.

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.

View the source on Github

When you feel like you’re spending a lot of time on low-impact activities

Alan Lin asked:

One issue I have is prioritization. I sometimes find myself spending a lot of time on low-impact activities. How do you tackle this in your life? What’s the most important thing you’re working on right now?

It’s easy to feel that most of your time is taken up with trivial things. There’s taking care of yourself and the household. There are endless tasks to check off to-do lists. There’s paperwork and overhead. Sometimes it feels like you’re making very little progress.

Here are some things I’ve learned that help me with that feeling:

  1. Understand and embrace your constraints.
  2. Lay the groundwork for action by understanding yourself.
  3. Act in tune with yourself.
  4. Accumulate gradual progress.

1. UNDERSTAND AND EMBRACE YOUR CONSTRAINTS

Many productivity and time management books seem to have the mindset where your Real Work is what matters and the rest of your life is what gets in the way. Sometimes it feels like the goal is to be able to work a clear, focused 60-hour or 120-hour week, to squeeze out every last bit of productivity from every last moment.

For me, the unproductive time that I spend snuggling with W- or the cats – that’s Real Life right there, for me, and I’m often all too aware of how short life is. The low-impact stuff is what grounds me and makes me human. As Richard Styrman points out in this comment, if other people can focus for longer, it’s because the rest of their lives don’t pull on them as much. I like the things that pull on me.

Instead of fighting your constraints, understand and embrace them. You can tweak them later, but when you make plans or evaluate yourself, do so with a realistic acceptance of the different things that pull on you. Know where you’re starting from. Then you can review commitments, get rid of ones that you’ve been keeping by default, and reaffirm the ones that you do care about. You might even find creative ways to meet your commitments with less time or effort. In any case, knowing your constraints and connecting them to the commitments behind them will make it it easier to remember and appreciate the reason why you spend time on these things.

One of my favourite ways of understanding constraints is to actually track them. Let’s look at time, for example. I know I spend a lot of my time on the general running of things. A quick summary from my time-tracking gives me this breakdown of the 744 hours in Oct 2014, a fairly typical month:

Hours Activity
255.0 sleep
126.3 consulting, because it helps me make a difference and build skills
91.9 doing other business-related things
80.5 chores and other unpaid work
86.2 taking care of myself
38.3 playing, relaxing
30.4 family-related stuff
12.6 socializing
10.3 writing, because it helps me learn and connect with great people
7.4 working on Emacs, because it helps me learn and connect with great people
1.5 gardening
1.0 reading
0.5 tracking
1.7 woodworking

Assuming that my consulting, writing, and working on Emacs are the activities that have some impact on the wider world, that’s 144 hours out of 744, or about 19% of all the time I have. This is roughly 4.5 hours a day. (And that’s a generous assumption – many of the things I write are personal reflections of uncertain value to other people.)

Even with tons of control over my schedule, I also spend lots of time on low-impact activities. And this is okay. I’m fine with that. I don’t need to turn into a value-creating machine entirely devoted to the pursuit of one clear goal. I don’t think I even can. It works for other people, but not for me. I like the time I spend cooking and helping out around the house. I like the time I spend playing with interesting ideas. I like the pace I keep.

So I’m going to start with the assumption that this is the time that I can work with instead of being frustrated with the other things that fill my life.

An average of 4.5 hours a day is a lot, even if it’s broken up into bits and pieces. It’s enough time for me to write a deep reflection, sketch one or two books, work on some code… And day after day, if I add those hours up, that can become something interesting. Of course, it would probably add up to something more impressive if I picked one thing and focused on that. But I tend to enjoy a variety of interests, so I might as well work with that instead of against it, and sometimes the combinations can be fascinating.

Accepting your constraints doesn’t mean being locked into them. You can still tweak things. For example, I experiment with time-saving techniques like bulk-cooking. But starting from the perspective of accepting your limits lets you plan more realistically and minimize frustration, which means you don’t have to waste energy on beating yourself up for not being superhuman. Know what you can work with, and work with that.

You might consider tracking your time for a week to see where your time really goes. You can track your time with pen and paper, a spreadsheet, or freely-available tools for smartphones. The important part is to track your time as you use it instead of relying on memory or perception. Our minds lie to us about constraints, often exaggerating what we’re dealing with. Collect data and find out.

2. LAY THE GROUNDWORK FOR ACTION BY UNDERSTANDING YOURSELF

When I review my constraints and commitments, I often ask myself: “Why did I commit to this? Why is this my choice?” This understanding helps me appreciate those constraints and come up with good ways to work within them.

My ideal is to almost always work on whatever I feel like working on. This sounds like a recipe for procrastination, an easy way for near-term pleasurable tasks to crowd out important but tedious ones. That’s where preparing my mind can make a big difference. If I can prepare a list of good things to do that’s in tune with my values, then I can easily choose from that list.

Here are some questions that help me prepare:

  • Why do I feel like doing various things? Is there an underlying cause or unmet need that I can address? Am I avoiding something because I don’t understand it or myself well enough? Do I only think that I want something, or do I really want it? I do a lot of this thinking and planning throughout my life, so that when those awesome hours come when everything’s lined up and I’m ready to make something, I can just go and do it.
  • Can I deliberately direct my awareness in order to change how I feel about things by emphasizing positive aspects or de-emphasizing negative ones? What can I enjoy about the things that are good for me? What can I dislike about the things that are bad for me?
  • What can I do now to make things better later? How can I take advantage of those moments when I’m focused and everything comes together? How can I make better use of normal moments? How can I make better use of the gray times too, when I’m feeling bleah?
  • How can I slowly accumulate value? How can I scale up by making things available?

I think a lot about why I want to do something, because there are often many different paths that can lead to the same results. If I catch myself procrastinating a task again and again, I ask myself if I can get rid of the task or if I can get someone else to do it. If I really need to do it myself, maybe I can transform the task into something more enjoyable. If I find myself drawn to some other task instead, I ask myself why, and I learn a little more about myself in the process.

I plan for small steps, not big leaps. Small steps sneak under my threshold for intimidation – it’s easier to find time and energy for a 15-minute task than for a 5-day slog.

I don’t worry about whether I’m working on Important things. Instead, I try to keep a list full of small, good things that take me a little bit forward. Even if I proceed at my current pace–for example, accumulating a blog post a day–in twenty years, I’ll probably be somewhere interesting.

In addition to the mental work of understanding yourself and shifting your perceptions by paying deliberate attention, it’s also good to prepare other things that can help you make the most of high-energy, high-concentration times. For example, even when I don’t feel very creative, I can still read books and outline ideas in preparation for writing. I sketch screens and plan features when I don’t feel like programming. You can probably find lots of ways you can prepare so that you can work more effectively when you want to.

2014-12-03 Motivation and understanding 3. ACT IN TUNE WITH YOURSELF

For many people, motivation seems to be about forcing yourself to do something that you had previously decided was important.

If you’ve laid the groundwork from step 2, however, you probably have a list of many good things that you can work on, so you can work on whatever you feel like working on now.

Encountering resistance? Have a little conversation with yourself. Find out what the core of it is, and see if you can find a creative way around that or work on some other small thing that moves you forward.

4. ACCUMULATE GRADUAL PROGRESS.

So now you’re doing what you want to be doing, after having prepared so that you want to do good things. But there’s still that shadow of doubt in you: “Is this going to be enough?”

It might not seem like you’re making a lot of progress, especially if you’re taking small steps on many different trails. This is where keeping track of your progress becomes really important. Celebrate those small accomplishments. Take notes. Your memory is fuzzy and will lie to you. It’s hard to see growth when you look at it day by day. If you could use your notes (or a journal, or a blog) to look back over six months or a year, though, chances are you’ll see that you’ve come a long way. And if you haven’t, don’t get frustrated; again, embrace your constraints, deepen your understanding, and keep nibbling away at what you want to do.

For me, I usually use my time to learn something, writing and drawing along the way. I’ve been blogging for the past twelve years or so. It’s incredible how those notes have helped me remember things, and how even the little things I learn can turn out to be surprisingly useful. Step by step.

So, if you’re feeling frustrated because you don’t seem to be making any progress and yet you can’t force yourself to work on the things that you’ve decided are important, try a different approach:

  1. Understand and embrace your constraints. Don’t stress out about not being 100% productive or dedicated. Accept that there will be times when you’re distracted or sick, and there will be times when you’re focused and you can do lots of good stuff. Accepting this still lets you tweak your limits, but you can do that with a spirit of loving kindness instead of frustration.
  2. Lay the groundwork for action. Mentally prepare so that it’s easier for you to want what’s good for you, and prepare other things so that when you want to work on something, you can work more effectively.
  3. Act in tune with yourself. Don’t waste energy forcing yourself through resistance. Use your preparation time to find creative ways around your blocks and come up with lots of ways you can move forward. That way, you can always choose something that’s in line with how you feel.
  4. Accumulate gradual progress. Sometimes you only feel like you’re not making any progress because you don’t see how far you’ve come. Take notes. Better yet, share those notes. Then you can see how your journey of a thousand miles is made up of all those little steps you’ve been taking – and you might even be able to help out or connect with other people along the way.

Alan has a much better summary of it, though. =)

To paraphrase, you start by examining your desires because that’s the only way to know if they’re worthwhile pursuits. This thinking prepares you and gives you with a set of things to spend time on immediately whenever you have time, and because you understand your goals & desires and the value they add to your life, you are usually satisfied with the time you do spend.

Hope that helps!

Related posts:

Thanks to Alan for nudging me to write and revise this post!

Emacs kaizen: ace-jump-zap lets you use C-u to zap to any character

This entry is part of 4 in the series Emacs Kaizen

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.

Now I just have to remember that C-u does cool stuff…

(use-package ace-jump-zap
  :ensure ace-jump-zap
  :bind
  (("M-z" . ace-jump-zap-up-to-char-dwim)
   ("C-M-z" . ace-jump-zap-to-char-dwim)))

Emacs Hangout #3: Emacs can read your mind

We’ve been organizing these Emacs Hangouts as an informal way for folks to get together and swap tips/notes/questions. You can find the previous Hangouts at http://sachachua.com/blog/tag/emacs-hangout/ . In this hangout, we shared tips on Emacs configuration, literate programming, remote access, autocompletion, and web development. And then Jonathan Arkell blew our minds with, well, his mind, demonstrating how he got Mindwave working with Emacs and Org Mode. The next one is scheduled for Jan 9, 2015 (Friday) at 7 PM Toronto time (12 AM GMT) – https://plus.google.com/events/cv3ub5ue6k3fluku7e2rfac161o . Want a different time? Feel free to set up an Emacs Hangout, or contact me ([email protected]) and we’ll coordinate something.

Approx. time Topic
0:08 describe-variable
0:12 cycle-spacing
0:14 quelpa, better-defaults
0:18 https://github.com/KMahoney/kpm-list
0:19 org-babel
0:24 noweb
0:27 Beamer, org-present
0:30 Emacsclient
0:32 TRAMP, vagrant, X11 forwarding, git
0:40 Evangelism, Emacs defensiveness
0:42 Code organization
0:47 Cask, Quelpa, el-get
0:54 paradox for listing packages
0:58 Helm, helm-git
1:02 Projectile
1:03 More helm, autocomplete
1:06 Autocomplete and company
1:16 Writing packages, flycheck
1:18 Moving to git, working on Emacs
1:22 Gnus, mu4e, notmuch
1:27 Eww, web browsing
1:28 Web dev tools: skewer-mode, slime, swank-js, web-mode
1:32 o-blog static site generator
1:38 orgaggregate
1:41 EEG data. Emacs can read your mind!

Chat, links:

me 8:07 PM Thanks!
Zachary Kanfer 8:10 PM A description of Emacs’s “describe variable” is here: Examining.html#Examining
JJ Asghar 8:11 PM zachary: thanks! wait wait wait, org-bable can take over your .emacs.d/*.el files?
me 8:18 PM JJ: Yeah, totally! It’s so useful.
JJ Asghar 8:19 PM i need to dig into that
Jacob MacDonald 8:19 PM https://github.com/KMahoney/kpm-list
jay abber 8:23 PM Org mode has functionality for LaTeX/TeX it appears Am I wrong, any ppl here using Emacs for ReST or LaTeX??
jay abber 8:27 PM it is
Jacob MacDonald 8:27 PM I used the PDF export in Org for notes in a math class, since it exports LaTeX nicely.
jay abber 8:27 PM https://www.cs.tufts.edu/~nr/noweb/
me 8:27 PM I’ve been using Org to export ta LaTeX for Beamer output
jay abber 8:27 PM np
jay abber 8:28 PM yeaaah up yup
Jonathan Arkell 8:29 PM Time for a restart.
jay abber 8:29 PM I think it would nice to know who uses emacs mainly graphically or in a terminal?? me = lurker sorry
jay abber 8:30 PM im trying to use it more in a terminal but always go graphic
Jacob MacDonald 8:31 PM emacs –daemon; emacsclient -c
jay abber 8:31 PM yosmiate yosmite me homebrew
jay abber 8:31 PM 24.4
jay abber 8:32 PM I like that
Christopher Done 8:32 PM audio sounds very trippy
jay abber 8:32 PM w/daft punk poster rockiin
Jonathan Arkell 8:33 PM heh! It’s signed too.
JJ Asghar 8:34 PM Sorry guys I have to go! Thanks so much for this!
me 8:34 PM See you!
jay abber 8:34 PM peace or vnc but thats alot of overhead make sure you lock down you sshdconfig files with sane sec practice Emacs over TMUX?????
Christopher Done 8:38 PM https://github.com/chrisdone/chrisdone-emacs/blob/master/packages/resmacro/resmacro.el unrelated, thought i’d share that =p
me 8:38 PM jay: Good suggestions. Want to speak up?
jay abber 8:38 PM lm lurking tonight
Jacob MacDonald 8:38 PM That audio .
jay abber 8:38 PM next one I promise His voice is awesome
Jacob MacDonald 8:40 PM http://www.emacswiki.org/Rudel
jay abber 8:40 PM Well for me sometimes I hate to confess but I just type vi/vim Noone I know uses any type of editor except word hahahaha
Jonathan Arkell 8:40 PM K, i am going to try audio again. Hopefully it will help Was that better?
jay abber 8:41 PM Can emacs do stuff like mpsyt or youtubedl somehow? yes!!!!
Jacob MacDonald 8:42 PM elisp interface to a shell script should work at a bare minimum.
Jacob MacDonald 8:42 PM I mean, there’s a web browser/mail reader/IRC client built in already…
me 8:42 PM I play MP3s in Emacs using emms and mplayer
jay abber 8:43 PM you know what
Jacob MacDonald 8:43 PM There was a Spotify plugin using dbus a while back, I believe.
jay abber 8:43 PM I think mysyt will be fine
Christopher Done 8:43 PM i was thinking of writing an emacs client to gmail via gmail’s API…
jay abber 8:43 PM its is a just a python script and mpv very suave and minimalist both python
Christopher Done 8:45 PM i stick all my own packages and ones i’m using in my repo https://github.com/chrisdone/chrisdone-emacs/tree/master/packages as submodules
me 8:45 PM Christopher: Gmail client might be nice. I use IMAP occasionally, but I miss the priority inbox.
Christopher Done 8:46 PM yeah. i used offlineimap for a while with notmuch.el, that was pretty good. but i’m tempted by the idea of a “light-weight” approach replacing the browser with emacs, requesting emails/search on demand. might be nice their API looked super trivial to work with
Jonathan Arkell 8:48 PM Sorry Yea Is qwelpa (sp?) native emacs? (elisp) Stupid mic. works great for music.
Jacob MacDonald 8:50 PM lol
Jonathan Arkell 8:50 PM I do all my configuration and packages in Org mode
Christopher Done 8:50 PM i just use git for everything =p
me 8:51 PM Jonathan: Oh, maybe you’re doing some kind of audio processing that removes noise or other odd things? </wild guess>
Jonathan Arkell 8:51 PM Ironically not. I am Launching my DAW now to try and sort it ot.. heh err out … not ot…
jay abber 8:53 PM M=x list-packages now installing org-mode
me 8:53 PM Jay: If you’re installing Org from package, be sure to do it in an Emacs that has not loaded an Org file. because Org 8 (package) and Org 7 (which is built into Emacs) have incompatibilities
jay abber 8:55 PM hmm i installed 24.4 via homebrew
Jonathan Arkell 8:58 PM Okay, I am switching to the built in mic, so hopefully it works. Let me know…
Zachary Kanfer 9:11 PM http://emacsnyc.org/videos.html#2014-05
me 9:12 PM https://github.com/aki2o/emacs-plsense ?
jay abber 9:15 PM Im trying to become a ninja using the shell from w/in Emacs but sometimes I have issues with my ENV and PATH
Jonathan Arkell 9:15 PM OS?
Jacob MacDonald 9:15 PM It’s a thing.
Zachary Kanfer 9:15 PM http://emacs.stackexchange.com/
jay abber 9:15 PM Yosmite like pyenv or rubyenv in HomeBrew yes yes
Jacob MacDonald 9:16 PM Depends on if you use emacs like from brew or Emacs.app.
jay abber 9:16 PM I got cha will find it
Jonathan Hill 9:17 PM great package for handling env variables in and so forth in OSX: exec-path-from-shell
jay abber 9:18 PM jonathan: thanks man
Jonathan Hill 9:18 PM just after (package-initialize), do (exec-path-from-initialize) oops (exec-path-from-shell-initialize)
jay abber 9:18 PM jh: ok
Jonathan Arkell 9:19 PM (setenv “PATH” (concat (getenv “HOME”) “/bin:” “/usr/local/bin:” (getenv “PATH”))) That’s waht i do… (add-to-list ‘exec-path “/usr/local/bin”)
me 9:21 PM http://lars.ingebrigtsen.no/2014/11/13/welcome-new-emacs-developers/
Jonathan Arkell 9:22 PM ERMERGERD +1 +1
Jacob MacDonald 9:32 PM Link please?
Bob Erb 9:33 PM What’s it called?
me 9:33 PM https://github.com/renard/o-blog ?
Jacob MacDonald 9:33 PM Thanks.
me 9:34 PM http://renard.github.io/o-blog/ – docs
jay abber 9:34 PM hey
jay abber 9:34 PM sorry I got side tracks I blog in my posts in REST for pelican static blog generator
jay abber 9:35 PM omg
me 9:35 PM Pretty!
jay abber 9:35 PM elisp for static blog oh know
John Wiegley 9:36 PM Hello
jay abber 9:36 PM https://github.com/renard/o-blog you should never shown that to me
Jacob MacDonald 9:37 PM John, somehow I think I’ve seen you before…
me 9:40 PM https://github.com/tbanel/orgaggregate
Jonathan Arkell 9:44 PM https://github.com/jonnay/mindwave-emacs
jay abber 9:44 PM Hey I have to go now
John Wiegley 9:44 PM Bye Jay
me 9:44 PM See you! Thanks for joining!
jay abber 9:44 PM This was awesome I will be on the next one I have to study precalc
me 9:44 PM Yay!
jay abber 9:45 PM take care
me 9:49 PM Oooh… I wonder how to make coloured graphs like that too. Neat! I should practise using overlays…
Jonathan Arkell 9:53 PM https://github.com/jonnay/mindwave-emacs Here is the Display Code: https://github.com/jonnay/mindwave-emacs/blob/master/mindwave-display.org So wait… C-u C-u C-p takes you… uup?
me 9:59 PM Hah! UUP! Brilliant!
Bob Erb 10:01 PM You’re a treasure, Sacha!