Babblings of an aging geek in love with the Absurd, his family, and his own hubris.... oh, and Lisp.



1 Oct 2015


My current dayjobgig is building private clouds, and I’m surprised at how much context switching I need to do due to waiting for the bloody things to deploy.

Perhaps I need to invest in sword play.

I was Schooled

30 Sep 2015

Each week, I teach an after school class at my local Middle School. Today, while getting ready to present, I switched over to the browser tab containing my presentation and waited for the kids to take their seats.

One girl raised her hand and asked about a browser tab that showed Emacs Meetup. Clearly she wouldn’t care about some old programming editor, but I quickly summarized so I could get to the lesson. She said she uses it to play snakes. I told her that she probably uses something else, as Emacs is just some old editor. She insisted.

She quickly fired up Terminal on the Mac, typed emacs, and promptly entered M-x snake… How…how…did you do…know that? While I wrote a version of the snake game on my Apple ][ computer when I was a kid, I didn’t know that any one had written one for Emacs. Huh. Schooled in my editor by a kid.

She also typed in telnet towel.blinkenlights.nl.

She’s now my favorite.

The Power of EmacsConf

1 Sep 2015

I was asked to speak about Literate Devops at EmacsConf 2015. Due to work and family complications, I knew that I couldn’t physically attend. Wait, what year is this!? We should open a can of virtualization on this meatspace! The week before, we tested out the technology, and the Furies looked favorable upon me to remotely attend a live conference.

On Saturday, September 29th at 9:00am, I sat at my large monitor, carefully arranged into windows of note taking Emacs, conference twitter feeds, the #emacsconf IRC channel … and of course, the live video feed. “This is good,” I thought. No struggling in uncomfortable seats to power small-screened laptops. I had all the coffee I wanted, and just the way I wanted it too.

The first talk, by Nicolas Petton (who was also presenting remotely from France), illustrated immutable data structures and lazy sequencing from Clojure to Emacs Lisp. I thought, “This is going to be a great day!”

And then it happened. The power went out halfway through the second talk. Using the battery and data service on my cell phone, I went to the power utility’s web site. Their power outage map was covered in red. Estimated time began at 12:50… then 1:30… then 3:00…

I panicked and put out a plea for help. I quickly cross town to the first friend who responded, to give my talk perched in his living room.

My demonstration went well enough (I start at 1:27:00), but I was frazzled and the environment on my laptop was less than ideal. I received some very thoughtful compliments, however:

Your talk on Literate DevOps with Org-Mode was fantastic, and everyone was blown away by it. You had a really stressful day, but you gave the talk anyway for your fellow emacers, and everyone really enjoyed it. I really appreciate the effort it took to go through with the talk after your power cut out. An excerpt from IRC at the end of your talk:

The virtual clapping on IRC was pretty humorous:

| 5:41 PM |  <tered> <clap clap>
| 5:41 PM |  — cestdiego *claps*
| 5:41 PM |  <python476> <fingerclap>
| 5:41 PM |  <Caine> great talk
| 5:41 PM |  <momerath> thanks Howard!!
| 5:41 PM |  <cestdiego> M-x clap
| 5:41 PM |  — offby1 stomps feet
| 5:42 PM |  — python476 flips IKEA desks

While the entire experience was interesting and enjoyable, I just wasn’t pleased, and felt my fellow Cultists in the Church of Emacs deserved better, so last night, I re-recorded myself. The audio is better, but it doesn’t have the questions and answers afterward.

See you all next year at EmacsConf 2016!

More Literate Devop Examples

12 Aug 2015

I’ve collected some table formatting code for OpenStack’s nova command, and placed them in an Tower of Babel file that make :post commands in org-mode files able to use them.

The os-table function, in that file, converts the ASCII tables from OpenStack’s CLI into org-mode tables that I can export, render, and feed into other code blocks as values. This feature came in handy today…

Read all about it…

How Often do you Commit?

10 Aug 2015

For your own projects, you can commit to Git anytime, but one of the advantages of committing frequently is sharing code…either to your team mates or even to yourself. Best approach, however, is to commit a single bug or feature at a time, but use Gerrit to make sure that single commit is perfect.

Read more…

Whence Forth?

10 Feb 2013

A friend of mine once asked me, “why was Forth so much fun?” to which I responded, “I may have to write a blog entry to explain and reminisce…”

Read my response…

Updated my Literate Devops

Today I got around to playing around with the wrap and the post options to org-mode source blocks, and updated my Literate Devops essay, to help explain how I email my formatted notes directly to my team mates.

Meeting Etiquette

17 May 2015

I have been in many meetings over the years where the presenter’s screen is more of a distraction. If you find yourself sharing your Macintosh desktop, may I suggest a couple of tips?

Read more…

TMux: My Starting Guide

10 Apr 2015

While I seldom leave Emacs, I do dabble on the shell from time to time, and many colleagues ask about my terminal usage with tmux, so I present my very-opinionated Getting Started Guide to TMux.

Literate Devops: With Databases!

9 Apr 2015

I swore I wouldn’t put any more examples of my literate devops idea, but when I habitually used org-mode during a recent exploration of MySQL database instance, followed by emailing the results to my teammates, I thought I would share. Read more…

Update: A section of the exported document on accessing a database can be viewed here, but a few of you have requested the original org-mode file Enjoy!

Folder Actions for Emacs

21 Mar 2015

On the Macintosh, the Finder can trigger a script due to any change of a file in a directory (Apple calls these Folder Actions). I was tempted to try and learn enough of this so I could rsync all local file changes to a system in the lab….

Seemed easier for me to just modify Emacs.

Read more…

Little Emacs Spreadsheets

10 Mar 2015

I’ve discovered the ultimate in Yak Shaving: Gnu Shaving!

Since I keep everything as org-mode formatted text files, I tried an experiment to directly convert the spreadsheet-like tables in my “tax notes” into a PDF mail for my accountant.

Here are my tips…

Yours in Emacs

22 Feb 2015

After reading the Wired article, Why We Should Design Some Things to Be Difficult to Use, I finally realize that Emacs should be hard to use, and we really should just give up changing it to be easier for new-comers.

This quote sums up my 20 year experience with Emacs:

[Fujifilm took] the controls out of deep menu functions and putting them back on chrome knobs that just beg to be twiddled.

I bought a Fujifilm X100 two years ago. It was the first piece of technology I’d bought in 15 years where I had to read the manual. Actually, I’ve read the manual at least four times. Now I’m taking the best pictures of my life, and I love it. By being hard to use, my X100 made me a better photographer.

Seems like Emacs users are now in some elite club where the hazing ritual amounts to learning Lisp. Consequently, I’ve decided to start signing all my Emacs-related correspondence with:

Yours in Emacs,


Literate DevOps

26 Nov 2014

Maintaining servers falls into two phases: First, bang head until server works; second, capture effort into some automation tool like Puppet or Chef. Recently, I’ve been playing around with making the first phase closer to the second. For lack of a better word, I’m calling it literate devops. Read more…

Update 1: I finally got around to troubleshooting using Tramp references to execute code blocks on remote servers (even those behind firewards).

Update 2: Need another complete example? Check out my notes onsetting up IP Tables (and this org-mode file), where part of the file can be executed in the editor in order to see how my machines are configured, and the other part is a script that can be tangled to a machine and executed to reset to the firewall rules.

Key Sequences in Emacs

20 Feb 2015

In Emacs, a key sequence is special key binding that uses multiple keys in a series. Since they require more effort to type, a sequence is chosen for functions that interrupt the normal editing flow.

Let’s explore some code associated with key sequences as well as write a macro to help make these more palatable.

Read more…

The Tao of Emacs

16 Feb 2015

I’m not saying the Emacs Way is objectively better, but you may find your work-style improved if you incorporate this way in your workflow. Let me demonstrate the way with a few examples.

Read more…

Emacs is my Window Manager

17 Jan 2015

I have played with a lot of window managers, and while many claim to be unobtrusive and minimal, I really just want Emacs in full-screen mode. So, I create an .xinitrc file that contains only:

exec emacs

That’s right, folks, Emacs is my window manager.

Read more… or simply check out the results.

Squashing Commits with Magit

23 Dec 2014

Manipulating the commit history in Emacs isn’t as straight-forward as other Magit processes, so I thought I would share my notes.

Read more…

Artistically Perfect

6 Dec 2014

Saw this video with Woz, where he describes how he wanted every trace on the original Apple board to be placed where the chips would be in the best position. He then said:

It had to be that artistically perfect to me, because it represents yourself when you do a great design.

Yeah, we can relate.

Computer Languages Suck

25 Nov 2014

I like to publish only positive essays on my blog, and I’ve been conflicted about publishing my perspective on perching on Paul Graham’s shoulders to extend his essay on the Hundred-Year Language. So keep in mind that any snarkiness is my inept attempt at humor.

Read more…

Teaching Programming…Again

30 Oct 2014

After many years of teaching Scratch at my local elementary school, I decided to start teaching an after-school session at my local Middle School. With diverse interests and abilities (not to mention, I’m considerably more busy during my day job), I thought I would try a new approach: nothing.

Read more…

Journaling with org-mode

26 Oct 2014

Regardless of whether you are into capturing personal data as part of the Quantified Self movement, or simply like to reflect on your day, I thought Emacs and org-mode would be a good approach to journaling.

Read more…

Online Presentations

26 Aug 2014
I'm speaking at Open Source Bridge 2013

After all the fun I had this summer at the Open Source Bridge giving my talks on both Lisp/Clojure and Emacs, I figured that I would upload them to YouTube:

Just noticed that the audio to my talk, Literate Programming now has the audio online, however, without the Emacs demonstration of org-mode, I wonder how helpful it would be.

Eschewing Zshell for Emacs

6 Sep 2014

The Emacs Shell, or EShell, is a unique and quite powerful shell that allows you to write your supporting functions in Lisp. This article beyond my original introduction to explore it deeper.

Read more…

Scratch Tutorial

14 Aug 2014

Gave a tutorial on Scratch to 50 children at the OSCON Kids Day. Lot of fun, so I made a special online Scratch tutorial, where a kid could run my video in one browser window, and follow along in a second window running Scratch.

Squashing Git Commits for Gerrit

20 July 2014

Now that my company is starting to use Gerrit, I decided to resurrect some old essays on Git usage.

Good Git practice encourages developers to create a history of useful commits. This essay is a ‘recipe’ for squashing multiple… uh… less than helpful commits into a single commit using the Git’s interactive rebase command.

This is a good technique if you start to use the Gerrit Review system.

Read more…

Why Emacs?

17 Mar 2014

As a professional software engineer, I’m stunned that put up with an editor that insists that you bind your fingers to someone else’s accepted practice.

Read more…

Clustered Random Numbers for Art

9 Feb 2014

Using functional programming techniques and the standard functions from Underscore to generate random numbers that favor particular numbers. Useful for picking colors.

Read more…

Getting Started with Emacs

19 Jan 2014

Just learning? Well, this ancient editor can be modernized for someone without much memory already embedded in their fingertips.

Read more…

A/B Testing at jQuery Summit

6 Sep 2013
I'm speaking at the jQuery Conference 2013

The jQuery 2013 Summit published my A/B Testing Tutorial with jQuery presentation. Why yes, I did have a lot of fun with SP Studio.

New Design

For half the web sites I visit, I use either a tablet or w3m (in an Emacs window, of course), I’ve realized that I should make my own web more accessible and flexible.

You’re viewing the results.

Everything should be simple, open, and easy. Oh, and did I mention that I’m publishing directly from Emacs. Yeah, that is how old men do.

My original blog was originally written in Markdown. Once easy to write in, org-mode is much better. To convert or not convert them all? I’ve done these, but most of my original essays will continue to date themselves.