Automatically Installing Your Emacs Packages
The interactive list-packages command in modern Emacsen is handy for finding and trying out new packages, but once we’ve found packages we want to use, how can we have them automatically installed on all machines where we use Emacs? There’s a decent Stack Overflow question on the topic, but I want to dig into the various answers a bit and provide a slightly cleaner (IMHO) code snippet. First let’s define that list of packages we want installed by adding a defvar form to our .Switching to MELPA Stable: Why, How, What I Learned
Background
Writing my first Emacs package a couple months ago left me more cognizant of how Emacs’ packaging system is put together and raised questions about how I use its capabilities. I had been installing all of my packages from MELPA, but now, as a fancy-schmancy package author I’d become intensely aware that MELPA builds its packages based on the latest commit in a project’s repository1. Suddenly I’d become paranoid about exactly what I pushed to the master branch of my project and worried about leaving things in a broken state.
Generally speaking, I keep the master branch on my projects in a functional state, and–yes–I could adopt a development methodology whereby work is always done on a development or feature branch and QA’d before being merged into master. But even if I have the inclination and discipline to manage my projects this way, all of my other Emacs packages are getting built from whatever happened to be pushed to master in their own project when the MELPA bot decided to make the rounds. I’ve run my fair share of beta software, but I don’t need every commit as it happens (cutting vs. bleeding edge).
As it turns out, there’s a new kid on the block–MELPA Stable–and she’s come to solve this exact problem.
Goal Refactoring Insights
In IOI#1 I mentioned “goal factoring”. In a nut, the idea is to apply a consistent, rational process to the goals you’re thinking of setting for yourself to ensure they’re appropriately sized, likely to succeed, and the best path to the underlying thing that you want to accomplish.
I’m currently working on my own goal definition / factoring process, but I wanted to offer a tip of the hat towards these two templates which I’ve repeatedly pored over:
Résistez à la Résistance
I awoke this morning to a text message from an old friend with a rather sharp tongue:
Lol. You’ve gotta stop it with these Facebook posts.
I knew exactly what it meant. It stung a bit because it was precisely what I worry about: I have a tenuous relationship with Facebook because there’s a disconnect between the people I know & consider (Internet) friends, and the interests I have. I vacillate between thinking I should post content I’m interested in (and let the audience self-select) and thinking that I should tailor my posts to my audience.
Items of Interest #2
A round-up of interesting links from my recent internet travels.Emacs Hangouts
Two weeks ago I had the pleasure of participating in an Emacs-themed Google Hangout arranged by Sacha Chua, in which several of us Emacs geeks got together and discussed what we’ve been working on, questions we have about particular packages or workflows, etc.:
μProject: checkbox.el
I’ve been playing with Emacs in the evenings lately and writing a lot
of Elisp, and I just finished a little Emacs package for quickly
manipulating textual checkboxes ([ ]
/ [x]
, etc.) in buffers, like
a simple version of org-mode’s task manipulation, but available
everywhere. It’s called checkbox.el.
Solving Problems Rationally a.k.a. Optimizing Dick Van Dyke with Fluid Dynamics
From 2006 to 2009 I worked for a company called Tektronix on the 9th floor of a curvilinear glass-and-concrete tower in Richardson, Texas. My division built network monitoring solutions for Fortune 100 companies like AT&T “that enable[d] network operators to more strategically and profitably operate their businesses”—which sounds like fairly memorable work, but more than anything, I remember the door.
I’d park my car in the underground parking garage and climb the two flights of concrete steps towards the ground floor lobby. And waiting for me daily at the top of the stairs was one of the most poignant lessons in design that I’ve ever received. It was a plain door, hinged outward, with a metal push plate. And six inches above the plate, the paint was worn off the door from years of pushing.
Hold for consideration.