I’m an inveterate Emacs user. It’s been my Swiss Army chainsaw of choice for
over 33 years. Part of the beauty of Emacs is that it’s extensible and
configurable. The relatively new1 package manager and ELPA package
archive are a great start, but sometimes it’s better — or simply more fun
— to roll your own.

io.com is going away. It’s funny how upsetting this is
to me. I’ve been jimm@io.com since 1994 or so—maybe
a year or two earlier than that. You know what I’m worried about most? All
those open source projects, emails, and other digital resources that point
to jimm@io.com are going to be pointing nowhere in a month. It feels like my
online identity is being stolen. Except it’s not being stolen, of
course—merely recalled.

I’ve been using the Play framework for a
big project at work. It’s fantastic. I almost hesitate to say it, but it’s
like Ruby on Rails for Java. Watch the video that’s on the home page; it’s a
good quick introduction.

Let’s say you are in a subdirectory, and there’s a Makefile in a parent
directory. How do you run make? You climb back up to the parent directory
and type “make”, or use “make -C parent_dir”. In either case, you have to
know what the parent dir is. Here are a pair of scripts that do that for
you.

I’ve created a GitHub fork of ChucK, the
“strongly-timed, concurrent, and on-the-fly audio programming language.” In
my fork I’ve started to add missing features
like string methods, and hope to add many more such as raw file I/O and
perhaps some form of MIDI file I/O.

I’m using will_paginate for a
Rails project. It works great, but I wanted to use it for a sidebar that
performs searches and displays the results. It’s not too hard to write a
custom link renderer that will submit the will_paginate link using Ajax, but
my situation was a bit different: I wanted will_paginate to inject the page
number into the search form and submit the form using Ajax.

My younger daughter just said to me, “Dad, I know how to cheat at homework
with the Wii.” I asked what whe meant. She said that if you had to
alphabetize a list of words (which she sometimes does for homework), you
could create a Mii (an in-game avatar on the Wii) for each word, and give it
that word as the name. Then use the game’s “sort by name” feature to display
all the Miis in alphabetical order. Voila!

For the last four months I’ve been sequestered deep in the heart of the
10gen labs among the test tubes full of bubbling
primary-colored liquids, glass jars filled with mysterious biological
samples, and mysteriously glowing rectangular pixilated displays. The whole
time, I’ve been pressing small plastic keys in arcane sequences and
muttering to myself.

Here’s a bunch of big news from cloud computing application framework
company 10gen: their SDK is now
available for download,
they are making the entire platform
Open Source,
and they’ve received
Series A financing.
Congratulations to 10gen for reaching these big milestones, and for the
decision to make their code Open Source.

I’m playing with translating a small Web application from
Rails to the Erlang web app framework
Yaws. When I tried to access a Mnesia database
from a page, it failed because Mnesia wasn’t running. Oops. I tried running
it from another erl shell, but that didn’t work.

Occasionally movies, TV shows, and ads are filmed around where I work in
NYC. I’ve never seen a “star”, but I often see the food trailers and office
trailers and once or twice I’ve seen locations with cameras and lights—no
action yet, though.

As one of my Erlang programming exercises, I
decided to write the non-graphical part of a
Boids simulation. I’ve written the same
thing in a few different languages (Java, Ruby, Lisp, C++) before. Using
Erlang would be interesting because of its support for message-based
parallelism and concurrency.

A few months ago, a study surfaced on Reddit that stated that the ability to
digest milk in human adults is a relatively recent adaptation. It further
posited that this ability was convincing proof of the theory of evolution:
humans have evolved to be able to digest lactose later in life.

While looking at a simple
fractal benchmark that
showed up on the programming Reddit, I
noticed that there wasn’t an Erlang version. Below
is one I wrote last night. Erlang fares rather well. One thing mildly
surprised me: it runs slightly faster in an Erlang shell within Emacs than
in both Apple’s Terminal and iTerm on Mac OS X. Within Emacs it runs in
1.09000 (runtime) 1.14100 (wall clock) seconds. In both Terminal and iTerm
it runs in around 1.11000 (runtime) 1.16600 (wall clock) seconds. Perhaps
screen I/O isn’t as fast in the terminal programs.Two caveats: first, these
numbers were generated on my 2.33 GHz Intel MacBook Pro; I don’t know what
the original benchmarks used. Also, I only ran the code a handful of times
and picked a “typical” time to report. A better test would have been to run
the code hundreds or thousands of times and average the values.This post
also says a bit about intuition vs. measuring. I discuss some code
modifications and their expected and actual effects below.Another thing to
note: the author of the fractal benchmark page says that he hasn’t bothered
to optimize the code for each language he tested. I don’t know if using
lists:map/2 or extracting iter_value/5 and using guard clauses would
disqualify this version in his opinion.

Firebug is an incredibly useful Firefox
extension for developers. You can debug JavaScript, edit HTML and CSS,
inspect the DOM, determine the download times of all of the elements on a
page, inspect headers, and much more.