New Job, New Tools

I’ve started a new job recently and with it came a new, very nice, laptop. And of course my whole “workflow” is changing so that’s pushed me to look at some new tools for doing my job. I like to tinker with new tools and utilities from time to time.

tmux

First up is tmux. I’m a long-time user and fan of GNU screen for terminal management. When I discovered it somewhere around 1999 it was a revelation. The ability to detach and reconnect to terminal sessions and not lose that state is critical. And it would do a great job of logging content in buffer windows for me to build documentation. At my last job I had screen sessions with multiple windows and other ssh sessions running on servers for months at a time.

A few months ago a friend introduced me to tmux. I’d heard of it but never investigated. And it truly is a fantastic tool for the job. Screen was weak when it came to collaboration and tmux covers that capability much better. The way I used screen keeping it logged in at all times fits in with the tmux server->client design. The scriptability, better syntax, and multiple panes seal the deal. GNU screen is great. tmux is even better.

solarized colors

I’ve used the solarized color scheme for a while now. Since I spend a lot of time on the terminal, I really appreciate the focus on making things easier on the eyes. So my tmux is solarized, vim is solarized, the terminal is solarized, and even dircolors is solarized.

Emacs

I was a user of Emacs for years. I did eveything in Emacs as many Emacs users do. Somewhere on a backup drive I have a fairly massive .emacs from back in the day. I stopped living in Emacs when I moved to my previous workplace where we were a heavy Solaris shop and Emacs wasn’t typically installed. I realized I had to get very comfortable with vi and so I did. A friend of mine who does a lot of coding pointed me to Emacs and he was surprised to find I had been such a heavy user in the past. This prompted me to take a look and start using it again. Not sure if it will stick as one of my “go to” tools but it’s worth another look. If I start doing more automation work in Python and other tools, the coding environment in Emacs is compelling.

VIM

VIM remains a key part of the toolkit. And it may win out for me in the end. I’ve used it extensively the last 9 years in addition to vanilla vi. The tools and coding features of VIM certainly rival Emacs. For me it’s going to be a matter of comfort with workflow more than one tool having more capability than the other.

parallel-ssh

In my previous work environment I managed a whole lot of 7-mode NetApp filers. So I used tentakel, a python script, to ssh to multiple hosts at a time to update options, perform commands, or grab information. I had filers and switches and other hosts in various logical groups in my .tentakel.conf config file. The only downfall of tentakel is that appears to be unmaintained although there is a relatively recent release on github

So I hunted for a replacement and rather like parallel-ssh. It works similarly with minimal requirements. It has a few additional bells and whistles including colored output. It doesn’t take a nice config file like tentakel so you would have to group hostnames in various individual files but that’s not such a big deal.

git for config file management

This is kind of a new one for me as well. I was previously putting more complex dotfiles and config files in Dropbox and symlinking them back to their expected location in $HOME. Dropbox does have the additional advantage of file versioning as well. But of course git is the tool of choice for file versioning. I like that it’s all local and that I can maintain my own private git repository for files with more sensitive data. So inspired by this post I set out to do it.

Setting up gitlab was a bit more lengthy than I anticipated but it’s all working well now. I went with the 3rd option in the digitalocean post for configfiles with them residing in my home dir but having a config dir to hold the git bits with an .git option file and a .gitignore in the home folder as well so only files I add with git add are managed. I then do a git commit -m and git push origin master to update the remote repository. updating additional hosts is a simple git pull origin master from my gitlab instance. If I put a bum option in my .emacs, reverting back is easy. And I can create branches for other host types down the road.


Scott Harney

   (GPG key)
<>

Resume


An online copy of my resume (PDF)

Photo Album


My current pictures via Flickr.
Older family pictures.

    Wedding


    I got married on 9/4/2004. So click for details, already.

    Old stuff


    Links and writings from older versions of this site
    Old stuff
    Oldest stuff

    Free DNS