24 Jan

starting (again) to use emacs

C-u M-! date

I've started using Emacs again. I can't remember what sent me to the Literate Devops with Emacs video by Howard Abrams, but the idea of running code within Emacs org-mode was enough for me to fire it up and relearn the key combinations. I've recently switched to Dvorak as a keyboard layout and had been fearing a return to Emacs (or vi/m) due to the somewhat ingrained muscle memory I'd have to relearn, though I should have known it wouldn't be nearly as daunting as I feared having already retrained myself to use an alternative layout for all of my typing. It was a little awkward at first and then it was mostly fine.

What brought me back was simple enough: better note-taking, and running code in a note-taking application was particularly appealing as I've been working my way through some University of Michigan python courses. While computational thinking is something I've done for a while, the actual coding part―in an actual programming language―eluded me. Taking the class has been great, but the back and forth with the terminal was wearing me down. Quick feedback was a helpful tool in learning more quickly and I was determined to embrace efficiencies when transitioning from taking notes to writing code, and from running code to troubleshooting code. Honestly, I wanted to have enough of a streamlined environment that I could essentially play with coding. Running code within Emacs org-mode fit that bill nicely.

Emacs had always been instantly appealing to me in theory. I prefer libre software, I value cross-platform compatibility, I understand the value of plain text for longevity, etc., but I never really had a concrete need to use many of those features. At one point I followed a guide and set up my email in Emacs but quickly abandoned the project when I recognized what I had signed up for and found it more, rather than less, cumbersome to use. This is the 'normal' user problem: I just didn't need the freedom at that moment because I didn't have a clear reason to tinker. So even with the full, philosophical buy-in I didn't have a compelling reason to continue using the software in place of less cumbersome and more attractive options (the excellent, free/libre Zim-Wiki mostly).

And Zim-Wiki is great, but when I started learning to program it failed to meet the entire need. Even though I'm a normal user when compared to the other programmer/tech-centric linux users I'm a whiz-kid around your average college kid or office worker. I'm in this weird middle where I know that I know next to nothing about the technologies and couldn't write more than a lick of code (with the same type of trouble I'd have reading a line of music), but that I could learn and progress quickly if I devoted a little time, that I can speak enough of the language to ask an intelligent question, and that I seem to wield superpowers compared to most computer users (earning their undeserved praise). I know more than almost anyone around me (which makes improving more difficult because there's no one in my normal life to ask).

I've always wanted to devote the time to learning more about programming because I know that if I did I'd be able to compose at those un-state-able desires that were always on the tip of my tongue but were in a language I didn't understand. If only I knew what computers could do—with a higher level of understanding—I'd finally see all of the problems I could solve with them. The time ought to be spent. I'd been telling myself this for years. And while I wasn't slacking (going through and finishing graduate school while working), it was just one of those things that had been waiting. I decided its time had finally come (in the form of online courses). Dan Gilmore's MOOC was my first, and it was enjoyable but as I've been following the surrounding topics (and the man) for years it wasn't as enlightening as I'd hoped. That said, it was done well and it helped me believe in the medium of online education in that type of structured format. Having taught large classes and online classes using blackboard1 I was skeptical that substantial learning could happen in that medium, but I did learn about the state of MOOCs in 2015 and was confident enough to try the medium again.

The classes I tried were/are PY4E-001 and PY4E-002 with Dr. Charles Severance. They're very introductory―which is perfect for me―and I'm learning a great deal, largely at my own pace. These classes highlighted (and created) a need to have a more efficient means of taking meaningful notes. If you haven't used org-mode, it's a wonderful tool for taking, arranging, and exporting structured notes. I won't get into the details, but you should definitely watch a video or two about it (if reading is more your thing check out their website). The real power is that it's in Emacs though, meaning that I am able to perform a whole host of actions within the program itself.

The most interesting2 is also the one that brought me back: write, run, and view the output of code within my note-taking environment. Take the following bash command:

uname -o

With a C-c I can run the code and have the output display in the note-taking application. This is incredibly useful for taking notes because my notes can be fully functioning code.

print "whatever, world"
print 'this is where you do addition. ' + str(2+2)  + ' = 4'

I'm confident I'll uncover more nuggets from other writers, bloggers, and Emacs users. Consider it a personal goal to re-embrace Emacs as my own personal use case for doing so has grown stronger. I won't make any particular pronouncements about whether or not you should use it yourself, but if any of this sounds interesting it will only cost you time to experiment. I'd encourage you to do so.

1 Note: I dislike that software very much, but haven't used it in nearly 10 years so maybe it's better? Thoughts?

2 Disclaimer: At the moment; for me. Emacs does a lot and this only scratches the surface.