I was a typical procrastinator - not in the mood of working 90% of the time, many excuses for doing unimportant tasks, easy to distract.
When I quit from my previous full-time job to work on my startup, Giffon.io, I was quite worried that I would just spend all time playing League of Legends and burn my saving until I have to find another office job.
I tried to make deadlines for myself. Not fake ones, but I made a "real" deadline by submitting a talk to introduce Giffon in Haxe Summit. It worked, but mostly only for the 2 weeks before the talk. I was even building major features the day before I got on the stage. After I came back from the summit, the productivity burst didn't last.
I came across a Hacker News discussion about live streaming programming (while I was procrastinating, of course). It sounded interesting to me since I kind of like showcasing stuff and meeting people, basically the same reasons I like speaking at conferences.
Once I've decided to give it a try, I dug out my Kinect for Windows and set it up as my camera (just because I don't have a webcam for my PC), tweeted about it such that I will have a few viewers, and started doing it on the next day.
My first stream was me implementing GIF image banners for the Giffon wish pages. There were about 5 viewers, in which 2 of them were my friends from the Haxe team. I couldn't tell how interesting my stream was to my viewers (probably not much), but at least I myself felt pretty good. I got stuck at one point and my friend discussed the problem with me in the chat. I haven't tried pair programming but I guess it would be a similar experience. At the end of my first stream, I had almost finished the feature in just a bit over 2 hours. It was about the maximum coding efficiency I can get.
Not only I was productive during the stream, I was also productive afterwards since I've already kickstarted my work and the inertia allowed me to polish the feature and do some refactoring off-stream.
Since then, I've been streaming every weekdays. From time to time, different strangers come by and chat with me for a bit, sometimes about programming languages, sometimes about career planing, sometimes about the background music I was listening. The amount of chatting is just right for me to have fun and I keep pretty productive through out. Sometimes the same viewer comes by again in the next stream and it's pretty motivating for me to continue.
So, yeah, so far live streaming is the most successful weapon to fight procrastination for me. I do encourage you to try it out if you haven't yet. Leave me a comment if you have a Twitch stream and I will try to raid you if our timing is right :)