Postel's Robustness Principle

Interesting comment from the trenches:

After much testing, it's clear that Postel's advice to protocol designers ("be liberal in what you accept, and conservative in what you send") invites a natural-law repercussion for JS as "protocol":

"If you are liberal in what you accept, others will utterly fail to be conservative in what they send."

Found here: http://mxr.mozilla.org/mozilla-central/source/js/src/jsscan.cpp#1464 while looking at SpiderMonkey source code.

VMWare Server Doesn't Start After Upgrade

I have a Xubuntu 9.04 machine that is hosting some VMs running on VMWare Server. I recently upgraded a bunch of packages on the host machine and then I noticed that the VMWare Server was not starting automatically anymore. I tried running it manually and I got the error message: vmware is installed, but it has not been (correctly) configured for this system.

What happened is that one of the upgraded packages was the Linux Kernel and a new Kernel version will break VMWare because it originally compiled for the previous Kernel version that was on the machine. To fix this I had to run the /usr/bin/vmware-config.pl script to reconfigure and recompile several components. After running the script, VMWare server started up again as normal.

Let me know if you had this problem before.

Building and Installing Emacs from Source on Ubuntu

Every so often I have to setup a web development server and one of the first things I have to have on that server is Emacs. As an Emacs fanatic, I need to have the very latest bleeding-edge version. In order to ensure that, I clone the official git repository into my home directory and then I compile and build from there. Most of the time I will be performing the steps below on a Ubuntu Server distribution (these work on versions 8.10, 9.04, and 9.10) without X installed.

  1. I will assume you already have your Ubuntu server up and running.
  2. Install some packages needed for the build by running the following command:
  3. 
        sudo apt-get install build-essentials gcc git-core texinfo \
        libncurses5-dev 
    
  4. Clone the latest Emacs from the GNU git repository by running this:
  5. 
        git clone git://git.savannah.gnu.org/emacs.git
    
  6. Configure, compile and install Emacs by running the following commands:
  7.     
        cd ./emacs
        sudo ./configure --without-x
        sudo make
        sudo make install
    

Some notes: The need for the build-essentials, gcc, and git-core are pretty obvious; the texinfo package is needed for the makeinfo dependency; and the libncurses5-dev is needed for the termcap.h dependency.

The above will also work on a desktop distro, but you will be limited to a terminal version of Emacs. In order to install a graphical version of Emacs you will also need to install the following extra packages:

   
    sudo apt-get install libgtk2.0-dev libtiff4-dev libgif-dev \
    libjpeg62-dev libpng12-dev libxpm-dev

The above line will also install a bunch of other dependencies needed by the libraries. Don't forget to also remove the --without-x parameter and run just this line:

   
    sudo ./configure

Let me know how it works for you.