Today I tried something different: timeboxing.
The idea, which is a common approach taken in managing time in software development (though with longer timelines), is that you take a collection of tasks you want to accomplish, assign a deadline on each, and if you don't accomplish the task by that deadline, you reschedule.
The idea is that you accomplish two things with this:
My personal implementation of this has been to set up three timebox planning iterations during the day. I work a ten hour day, so that divides my day into roughly equal portions of 3 hours. At the beginning of each, I write down what I plan to accomplish in measurable detail and in sequence within the next three hours. For each item, I provide a time limit. Then I go.
If I complete a task early, I don't go on to the next - I reward myself by checking in on Twitter or reading RSS feeds. When the next timebox happens, though, I drop what I'm doing and take up the next task.
Some tips: timebox things like email, Twitter, and RSS feeds. That'll keep you goal focused and keep you from becoming an environment-scanning zombie all day.
Also, much as I love them, avoid music services such as Pandora.com and Last.fm if you can't refrain from checking what that new song is that's coming on. That'll kill focus. Better to have a set playlist, or to find a mix tape you can put on endless loop.
I can't say I held perfectly to all my timeboxes today, but with just over one hour left to go, I have only two items from today's master list left, because this task... [X] ...is done in the 25 minutes I allotted.