I’ve read a few articles that go into detail about setting up your computer and being productive at work, however I feel most of those are half ass attempts and really don’t give much detail. For that reason I’m going to take a shot at this and explain how I have my setup and why I think mine is better than yours.
## Cheat Sheets
We have all seen cheat sheets for things like [vim](https://www.google.com/search?q=vim+cheat+sheet) and even use some. I believe that these are very important to us as developers, however I do not believe in just going out to find one. You need to create and maintain your own cheat sheets for whatever you use. If you are using bash, go read the man pages and start to compile your own cheat sheet of the neat things you uncover. Using Netbeans? Same thing, maintain your own cheat sheet for this.
You can take a look at my cheat sheets which are available at [https://gist.github.com/2627607](https://gist.github.com/2627607 “Cheat Sheets”).
Another point I want to make about this, my cheat sheets are the first link in my address bar. This makes it easy for me to go straight there.
By now I assume that you know what dotfiles are. If not, they are a collection of files for modifying settings for things such as your shell (bash, zsh, fish, etc.).
The reason I feel that you should have your dotfiles setup as a public repository, is because you will use them a lot! Everyone is a little different with their setup, but look around. Poke around in things such as [Oh My zsh](https://github.com/robbyrussell/oh-my-zsh) or for whatever shell you use the most. I’m sure that as you compile your cheat sheet that you will find some pretty awesome settings.
One thing to note, make sure you comment your dotfiles. I have often gone back to look at some of mine only to say, “WTF does this do again? Why did I set that to be X?”.
You can see my crappy dotfiles at [https://github.com/JoshuaEstes/dotfiles](https://github.com/JoshuaEstes/dotfiles). I need to work on those a little more…
A shell is something that I think is very personal to each person. It seems most use either bash or zsh. There really isn’t much to say about this except, make sure you add shortcut keys to you cheat sheets. Learn to navigate around within whatever you use and learn to move quickly.
## Code Editor
Everyone is different, and everyone prefers their own editors. Netbeans use to be my editor of choice. However, I switched to vim. My logic behind this move was because if I’m on a remote server and need to edit something, I can’t just open up Netbeans and edit it. Now you may argue that both have their purpose and that I can just use both. Well, my response is, I’m lazy and don’t want to use the space in my brain to remember short cuts for both. I would rather now one extremely well than know them both and use them half assed.
The point here is to know your editor of choice. Know how to use your editor. You need to be able to edit files quickly and put out fires if and when they come up.
Before tmux I used screen a lot of the time, however after I switched over to tmux, I never looked back. Tmux allows you to start sessions. Within each session you can have multiple windows. Within each window you can have multiple panes. It drives me crazy when I see people with a terminal open and have multiple tabs open.
Tmux can be very powerful if you know how to use it properly. I will usually setup one session that is just to tail log files. Within each window I will have the logs related to a specific project. Within that window I will sometimes have a few panes open that tail logs for apache and the app logs.
The main reason I use tmux daily is because I can attach and detach session. I like this because every now and again, this is rare, but I will fat finger something or zone out and just hit the wrong key combination and *poof* I’m at a login screen… fml… log back in and I can reattach to my session and pick up where I left off.
Are you adding commands you find to your cheat sheets?
tl;dr; Maintain your own cheat sheets, know your tools