Tools I use: I try to stick with an IDE like Eclipse. I know they're sorta frowned upon, but I like convenience. I use Git, personal preference. Some spreadsheet program for managing tabular data, like milestones, word processor for keeping a journal, and a scratch pad or whiteboard for scratch-work.
Tips I've accumulated after a while:
* Milestones help you focus your efforts for the "session"
* Design documents and whatnot sound like a lot of paperwork, and it is, but they are incredibly useful to have and keep around.
* Try to not intermix phases of development. Don't do design and requirements gathering or design and analysis at the same time. Do things in order. It keeps things clean and separated.