Samuel Mullen

What could possibly go wrong?

The Two Most Productivity Enhancing Scripts Ever Written in the History of UNIX

You’re not a slacker. In fact, you’re a pretty good developer who gets things done on time and done well. But sometimes you find yourself wasting time on that site again. You weren’t planning to go there, but the code takes a minute to compile and the tests take a bit longer to run and so you just flip over there while you wait.

Ten minutes later you’re still there, not thinking, just consuming.

And you berate yourself again for wasting time.

What you don’t need is some overlord application telling you you can’t access the internet for the next three hours. You just need a gentle reminder that you want to be productive.

Here it is. Two simple scripts. (go to the GitHub Gist)

One to block the sites you don’t want to visit:

worktime bash function
1
2
3
4
5
6
function worktime {
  echo "# WORKTIME" | sudo tee -a /etc/hosts > /dev/null
  while read -r line; do
    echo "127.0.0.1 ${line}"
  done < $HOME/.blocked_sites | sudo tee -a /etc/hosts > /dev/null
}

And one to remove the block:

slacktime bash function
1
2
3
4
5
6
7
8
9
10
function slacktime {
  flag=0
  while read -r line; do
    [[ $line =~ "# WORKTIME" ]] && flag=1
    [[ $flag -eq 1 ]] && continue
    echo $line
  done < /etc/hosts > /tmp/hosts

  sudo cp /tmp/hosts /etc/hosts
}

List the sites you don’t want to be visiting in .blocked_sites in your $HOME directory. Like this:

.blocked_sites
1
2
3
4
5
twitter.com
www.twitter.com # you may need to include the www subdomain
feedbin.me
alpha.app.net
app.net

When you want to be productive, run worktime. When you’re ready to slack off, run slacktime.

worktime adds those sites to your /etc/hosts file redirecting you back to localhost. If you’re feeling creative, make a landing page with a picture or text reminding you to keep been awesome. I use a picture of R. Lee Ermey to gently remind me what I’m supposed to be doing.

When you’re done being productive, run slacktime. slacktime just removes the entries which were added to the /etc/hosts file.

So are these really the two most productivity enhancing scripts ever written in the history of UNIX, or am I just using a bit of hyperbole to increase traffic? Probably the latter, but I still hope I help you become more productive.

Now quit slacking off and get back to work!

Comments