Saturday, July 09, 2005

Emacs?!

I have this growing stack of books on my night stand. I tend to read some of a book, pick up another and eventually return to the original one. This can continue for as many as 10 or 15 books and 2 or 3 months at a time. My night stand is obviously quite a mess! It occurred to me that someone out there might be interested in at least some of the things I'm reading, so I put together my second book list that you can find here... This is the list of books that are currently on my night stand.

Now on to the actual point of this entry - I started reading The Pragmatic Programmer last week. I'm about half-way through and had to stop in order to implement at least some of what it says before going any further. Ali and I dropped into Stacey's on Friday afternoon and picked up a pile of books that should help us on our way. Among many other compelling and wise statements, the authors (Andrew Hunt and David Thomas) make a significant and effective argument that I hadn't really seen so clearly before.

The Power of Plain Text

They make the case (extremely effectively for me at least) that we should keep our most important data NOT in secretive, proprietary, volatile, incompatible, binary formats, but instead - in human-readable, cross-platform, version-able, merge-able Plain text files. It's OK to compile this plain text into more efficient binary formats for specific purposes (like network transmission for example), but it's unwise to store our most critical information using transient and volatile means such as Micorosoft Word documents and Excel Spreadsheets. It's important to note that the authors do not come out and say anything about these particular file formats, and I'm eager to point out that even Microsoft itself has finally embraced the wisdom in this idea...

They cite the following primary reasons for using Plain Text:

  1. Insurance against Obsolescence: Unlike binary files, for as long as that file exists, you can use any standard tool to parse it and unlock it's secrets.

  2. Leverage: Just about every tool available in computing can operate on Plain Text. Within this argument, these guys proceeded to describe some ancient (1980's) and yet stunningly efficient and powerful tools that I'm frankly ashamed to not be intimately familiar with. (for example: Emacs, Sed and Awk)

  3. Easier Testing: It's much simpler to verify and validate inputs and outputs if a system works with Plain Text rather than hidden binary formats. This argument really goes to the core of my problems with Flash Remoting.



Finally, as a result of reading The Pragmatic Programmer, I wound up getting all involved in learning Emacs (I'm using it right now to create this blog entry). I picked up Learning GNU Emacs from O'Reilly and haven't been able to put it down. I am seriously considering this as my primary editor for all-things-text. Yes - even ActionScript, Java and maybe even my address book, calendar, journal, blog and email?!. I'll definitely report back as I learn more on the subject. I'm a little concerned that I might be getting too excited, but my initial research is extremely encouraging. It seems that some very focused and very smart people have been refining this tool as a development platform since 1984. I didn't know this, but apparently Emacs was originally written and continues to be led by RMS himself. ;-)

3 Comments:

At 8:29 AM, Anonymous Anonymous said...

What makes Emacs so powerful? I'm wanting to learn it, but I'll need an incentive!

 
At 11:27 AM, Blogger Luke said...

I have to confess - I STILL have not mastered emacs. But some of the incentives that keep bringing me back are these:

Cross platform development environment: I can use the same tools no matter what OS I'm using...

Cross language development environment: Regardless of what language I'm working with, I can use the same tools.

Works with or without access to a GUI

Preferences and extensions are easily transported from one installation and platform to another.

 
At 8:34 AM, Anonymous Anonymous said...

Pretty good incentives. Additionally, Emacs is also very extensible AFAIK.

 

Post a Comment

<< Home