Emacs on Mac OS X

During the weekend I spent a few hours setting up a new hacking environment for my latest curiosity, Lisp. Evidently all the cool kids use Emacs for hacking in Lisp so I invested the time to revisit my Emacs setup.

Previously I would SSH into each server on which I had files to edit and run Emacs in each shell. This forced me to maintain .emacs files everywhere and exposed me to network breaks. (I tried screen but OSX+screen+Emacs is the deadly triad of configuration hell.)

Now I use GNU Emacs for Mac OS X, a universal binary compiled just days ago from the GNU source. Instead of running Emacs on a remote server, I use TRAMP to connect and edit remote files. When I want to open a remote file, I prefix the path with /ssh:hostname: or /scp:hostname:. TRAMP can browse and autocomplete in remote directories just as well as in local directories.

I already keep my most used servers in my .ssh/ssh_config file and I use shell scripts to start master connections with logs tailing in terminal windows. Master connections cut down on TRAMP connection times. TRAMP reads ssh_config for hostname autocompletion, so I can open remote files in fewer keystrokes than ever before.

There so many benefits to using Cocoa Emacs instead of Terminal+SSH+Emacs. I don’t have to mess with Terminal’s key maps and then fix them in every remote .emacs file. I don’t even need to install Emacs on remote servers. The kill ring integrates with the clipboard and works across all remote hosts. The network can’t lag my keystrokes or kill my editing session. Frames. Menus. Scroll bars.

I must stop blogging and get back to work. But first I must thank David Caldwell for setting up emacsformacosx.com. Of all the major hacking environment shifts I’ve made, this was the easiest and most powerful.

With Which to Psychoanalyse Julian Assange

Selections from Rubberhose.

Our journey begins with example code from the style guide showing a preoccupation with sex, drugs, and jail time:

	enum myheadhurts {lsd, mda, mdma, thc, peyote, women};

[...]

	if (foo1 &&
	    boo1 &&
	    (sex1 && sex2))

[...]

	if (chdir("/home/lolita" == 0)
		lolitastuff();

[...]

		struct hurricane
		{
			int years;
			char sex;
			int parole;
		}

current/src/doc/proff.style

This instructional snippet encodes a government conspiracy:

	== frazer.c ==

	bool CIA_support = TRUE;

	static int campaign_fund;
	static int frazer_dollars:
	static char *frazer_mental_state = "hopeful";

	void
	frazer(void)
	{
		frazer_dollars -= bribe_kerr(frazer_dollars);
		campaign_find -= frazer_dollars/2;
		if (dismiss_govenment &&
		    strcasecmp(dismiss_action, "care-taker"))
			frazer_mental_state = "hot doggarty dog";
	}

current/src/doc/HACKING

Before we dive into a colorful autobiographical narrative, two brief fantasies:

		onion routed block-device! yeah!
		  nb. time to lay off the weed

current/src/TODO

The story of naming the program is an entertaining read. These highlights shed light on the character of the author:

Guards. Guardians. The Greeks didn't have many with bite and I'm
loosing patience with the whole culture. Euphrosyne, Aglaia, and
Thalia do not grace me.  What I need is something that evokes
passion within my cryptographic domain. And when you come down to
it, that means something which produces copious amounts of gore
and blood, at will, from those who would dare to pass its demesne
of protection.

[...]

You had to hand it to Sigmund. He was nothing if not authoritative,
and after reading his inspiring words on the terrific serpent haired
woman, two things became clear to me. One, _Proffs_ and the Gorgon had
certain unresolved metaphorical incompatibilities and two, Sigmund was
clinically insane. I didn't want my software giving anyone a
castration complex, but I didn't want to give up snorting coke either.

[...]

If MARUTUKKU was my exquisite cryptographic good, of wit, effusive
joy, ravishing pleasure and flattering hope; then where was the
counter point? The figure to its ground - the sharper evil, the
madness, the melancholy, the most cruel lassitudes, disgusts and the
severest disappointments. Was Hume right? Because if he was, there was
only one organisation this string of hellish adjectives could
represent. The cryptographic devil with its 500,000 sq feet of office
space in Maryland. But surely there could be no reference to such an
organisation in the 4,000 year old Babylonian tablets.  The idea was
preposterous. Wasn't it?

TABLET VII OF THE ENUMA ELISH:

ESIZKUR shall sit aloft in the house of prayer;
   May the gods bring their presents before him, that from
   him they may receive their assignments; none can without
   him create artful works.  Four black-headed ones are
   among his creatures; aside from him no god knows the
   answer as to their days.

It's a cold and wintry night here in Melbourne and the gusts of wind
and rain seem to be unusually chilling. What had I, in my search for a
cryptographic mythology, stumbled onto?

I look hard at the seven letters E-S-I-Z-K-U-R. A frown turns to
a smile and then a dead pan stare. I write down:

			  IRK ZEUS

current/src/MYTHOLOGY

Finally, the quip that inspired me to compile these excerpts:

Some possible alternatives to passphrase based keying (we have some more
notes on these ideas, but no code or concrete design documentation):

[...]

	6) Colour contrast discrimination. It has been shown that individuals see
	   slightly different hues due to visual cortex and cone cell / retina
	   variation. It maybe possible to design moire or
	   other tests on 24 bit displays which are recognisable by
	   one party but not another. Just hope no-one runs a magnet
	   over your monitor. Interestingly, one drug that this method is
	   highly likely to detect is Viagra, which intereacts with the retinal
	   environment to produce hue distortions. Rubberhose is naturally
	   arousing so we don't see this as being an issue.

current/src/ideas/keying

Here ends an incomplete and unrepresentative picture intended for entertainment only. Cheers to you, Julian, for making life on Earth more entertaining. I wish you liberty.

p.s. I wonder how many encrypted aspects exist in the insurance file. You wouldn’t let one key unlock the whole file, spending all of your insurance at once. The first key must expose a little bit of data while leaving the bulk of it encrypted. If it contains anything as clever as a Rubberhose extent, one can never be certain whether the insurance policy has been exhausted.

p.p.s. Love the sig’:

--
Prof. Julian Assange  |If you want to build a ship, don't drum up people
                      |together to collect wood and don't assign them tasks
proff@iq.org          |and work, but rather teach them to long for the endless
proff@gnu.ai.mit.edu  |immensity of the sea. -- Antoine de Saint Exupery