Emacs hangout notes

Prompted by Michael Fogleman’s tweet that he’d like to see a bunch of us Emacs geeks get together in one room for a hackathon, Nic Ferrier and I tried out a casual Emacs hangout. Tinychat didn’t work, but Google Hangouts worked fine. A bunch of people saw our tweets about it too and dropped by, yay! Here are some things we talked about (mostly nifty tweaks from Nic):

  • shadchen is great for pattern matching, especially within trees
  • Alec wanted to know about Emacs and Git, so Nic demonstrated basic Magit
  • after-init-hook – load things there instead of in your ~/.emacs.d/init.el, so that your init.el does not break and you can test things easily from within Emacs
  • I shared isearch-describe-bindings, which had a number of goodies that I hadn’t known about before
  • Recognizing the opportunity to share what you’re working on (ex: nicferrier’s working on an Emacs Lisp to Javascript compiler)

Google Hangouts screensharing worked well for us, giving multiple people the opportunity to share their screen and allowing people to choose what they wanted to focus on. Nic also started up a tmux session and a repository of public keys, but that’s a bit more involved and requires more trust/coordination, so screen-sharing will likely be the way to go unless people have more of a pairing thing set up. This kind of informal hangout might be a good way for people to share what they’re working on just in case other people want to drop by and help out or ask questions (which people can optionally answer, or postpone if they want to stay focused on their work). Something a little more focused than this might be to pick one bug or task and work on it together, maybe starting with a “ridealong” (one person screenshares, thinking out loud as he or she works, and taking the occasional question) and moving towards full pairing (people working on things together). Some of my short-term Emacs goals are:

  • Improve my web development workflow and environment (including getting the hang of Magit, Smart Parens, Skewer, AutoComplete / Company Mode, and other good things)
  • Learn how to write proper tests for Emacs-related things
  • Get back into contributing to the Emacs community, perhaps starting to work on code/tests
  • Look up my Org agenda on my phone, probably with Org Mobile or some kind of batch process

Let’s give this a try. =) I set up a public calendar and added an event on Nov 5, 9-11PM Toronto time. If folks want to drop by, we’ll see how that works out!

  • punchagan

    Also, Nic’s gpg-ed custom.el is an interesting idea, that I’m considering copying!

    • Nic Ferrier

      It was hell to make work with gpg-agent. Here’s a short list of todos before I blog it:

      * install gpg-agent
      * install gnupg2 (not default on ubuntu)
      * run gpg-agent from ,xsession like this:

      gpg-agent –daemon –enable-ssh-support –write-env-file “${HOME}/.gpg-agent-info”

      * in init.el you need this: https://gist.github.com/nicferrier/49f34d6936814a457331
      * at the top of your custom-file you need to have an epa comment, mine is:

      ;; -*- epa-file-encrypt-to: (“[email protected]”) -*-

      that’s about it.

  • Nic Ferrier

    I am working on the org-agenda thing. Elnode is the answer. You run a small webapp in your emacs that turns org-agenda into json. You browse the webapp which has a js frontend which knows how to ask for more json things (just simple ajax calls really).

    The downloaded json is heavily cached, so when you’re not connected to your emacs you’ve still got your diary.

    The doing updates is a matter of handling diffs.

    I’ve got most of this done.

    • punchagan

      Woah! I would love to look at your code, use it, and help out, if anything is needed!

    • Ooh. When are you working on that? I’d love to hang out, possibly help.

    • Nic Ferrier

      so far it’s this:


      which is capable of delivering the agenda.

      writing js apps with elnode is pretty funny, it has good support for browserify.

      but of course, I don’t like writing js, I’d rather write elisp, which is why I am working on ejit (elisp->js compiler).

      I’ll probably make a first version of this agenda app with plain ol js though. I need it quite urgently.

      • punchagan

        There’s also clojurescript, if you wanted to take a look at something that lets you write functional code and spit out js. I haven’t used it myself, but a seen a few people swear by it.

        Will definitely try out elnode-agenda!

        • Nic Ferrier

          Yes, I’m aware of clojurescript. But what I want is a way of building web apps without a ton of depends that aren’t in package repos.

          I’ve built a thing called clojure-env for emacs that lets you download a clojure or cljs environment from scratch, just inside your emacs… but you still need a java installed already.

          It’s just not perfect. It would be better to just use emacs.

    • rasmus

      Why is this desirable? I would think that the *calendar* program is optimal place to view your agenda. Anyway, one thing that is not handled by org-caldav already is headings with multiple time stamps and org-class, so maybe you’d want to include those in your test case.

      • Nic Ferrier

        really? I think calendar is a pretty poor agenda. it’s a good calendar though.

  • Mobile Org for android Has worked quite well for me. It keeps your Google calendar in sync with org-agenda. I’ve used it for years.
    Nic’s solution looks interesting too!

    • Garjola

      Was the hangout recorded?

      • punchagan

        No. This was meant to be a trial. We should record future hangouts!

  • Sadly, 9pm Toronto time would be 2am in the UK after DST (if I’ve calculated correctly). I’ll drop by on the 19th :)

    • Guest

      I was under the impression that Google displayed the event times in my time zone. I’ll be sorely disappointed if that’s not the case. =(

      • Gotta find something that does timezones decently. Added time notes to description…

    • Nic Ferrier

      it was about 2am yes.

    • Yeah, I’ll probably bounce around a couple of times until we figure out ones that work with a general set of people who mesh nicely… =)