Exeunt

|

Exit Strategy
Originally uploaded by Peter Teichman.

For me, a fantastic seven-year ride is coming to an end. I have resigned my position, and today is my last day with the Ximian group at Novell. I've been working for Helix Code / Ximian / Novell since the last few days of 1999, and have enjoyed my time here immensely.

I've worked with awesome people on my projects, from Build Buddy and Red Carpet to ZENworks and Hula. And throughout, I've always been within shouting distance of Mono and some of the best work happening on the Linux desktop.

It's time for me to move on, though. Thanks to everyone who has been involved over the past years, and I wish everyone the best.


Screen and ssh-agent

|

My Biggest
Originally uploaded by Peter Teichman.

I started using Screen on a daily basis, and quickly desired an ssh-agent tied to a long-lived screen session.

The obvious solution (running "ssh-agent screen") doesn't work - as soon as you log out, screen drops into the background and you lose the agent.

People have solved this problem in various ways - a quick search shows some of them. I didn't like them. They all rely on scripts external to screen for running the agent and maintaining its environment variables.

I spent a little time last night on a solution. It's completely contained in your .screenrc, and produces an ssh-agent tied to screen's life cycle.

It's just two lines:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

This creates a screen (number 10) that holds your ssh agent. If you don't like 10, you can start the agent on any screen. Things still work properly. The agent will be available to all the screens in that session. It also persists if you close the screen it was started on.

Make sure you run the setenv line early enough in your .screenrc that it will take effect before you open new screens.

The only problem I have with this setup is that all my screen sessions share the same agent - the one listening on $HOME/.screen-ssh-agent. I'd like to make that one agent per screen session, using something like $HOME/.screen-ssh-agent.$$. Unfortunately $$ is empty from within .screenrc - I can't find a real environment variable that uniquely identifies the current process.

Sorry for the digression, now back to your regularly scheduled (Semiannual?) Hula news.


Persecution Complex

|

LA 8-BALL!
Originally uploaded by Peter Teichman.

If you are offended by discussion about Emacs, please stop reading now.

Over the last few years, Dan Mills and I have been improving an Emacs configuration style we both enjoy using. There has recently been some interest in this setup internally, so I thought I'd pull some notes together and send it out into the world.

There were two original goals for this design:

  1. A good, clean configuration - none of the mess that usually clutters .emacs files.
  2. Easy deployment of new elisp packages.

I welcome you to continue reading.