

Focus.py - _ikke_
http://amoffat.github.com/focus/

======
TeMPOraL
I'm not sure if everyone noticed, but the primary interesting thing here is
NOT that it blocks off domains at certain times (everyone and their dog wrote
such scripts for themselves). The nice thing is that each rule is defined as a
function, which means that you can put a bit more complex rules inside, or
just add some logging and track every name resolution against given domain.

Which actually brings me to question: aren't domain-IP pairings cached by the
browser?

~~~
_ikke_
Yes, but it modifies the response to have a very low TTL so that it's cached
only for a show while (in as far as browser actually get the query response).

------
spullara
How is this at the top of HN? Apparently people that need this stuff sit on HN
and vote it up. If you don't want to go to these sites I have some advice:
Don't go to them.

~~~
mibbitier
Commenting online becomes addictive. It becomes a horrible time sink and a
useless waste of time. Either arguing with people who don't understand
anything, or endlessly circle-jerking with people who have the same viewpoint
as you. Some even fall into the trap of believing their "karma" score somehow
means something. All it means is how much time you waste online commenting.

Once you start commenting online, you can't easily stop. So it's not as simple
as "Don't go to them".

</recovering addicts view>

~~~
Swizec
Karma is a score.

That means it's a game.

"winning" games is fun.

Thus increasing your karma score is, well, fun.

Not to mention all the fringe benefits a decent karma score can bring you ...
well not really the karma score itself, but the activities you do to get said
score. It's really just putting "How useful you are to the community" into a
cold hard integer.

Being useful/known/etc. in the right communities has been a pretty damn
important thing since forever.

As always, what matters is what you _do_ with all of this. Just having it by
itself doesn't mean a thing.

~~~
yashchandra
Cannot agree with you more on this. Exactly my feeling.

------
ideamonk
Nice effort. Having tried RescueTime and more crazy tools last year, I
realized it's in the doing. If you enjoy it nothing can distract you. If you
really don't enjoy it from inside (i.e. if your ends are not aligned with the
going), nothing can help you. It's better to alter your mindset about your
work. Spending 3 days on that = lesser distractions for long time.

~~~
Arelius
Your statement is a bit unclear, in particular, this part "I realized it's in
the doing." What's in the doing?

> It's better to alter your mindset about your work.

Elaboration on this would be interesting.

~~~
goblin89
According to temporal motivation theory (TMT), perceived utility of a task
diminishes with growing temporal distance to the reward. [0]

The reward of working is usually distant and sometimes low in expectancy, as
is the punishment for _not_ working. At the same time, rewards of socializing
(as one example) are almost immediately available anytime. The _value_ of
working is originally higher—you get paid for that, after all—but its
_utility_ after expectancy and time discounts may well be lower. It would rise
as potential reward or punishment gets closer, but we will procrastinate until
it beats the utility of posting comments on HN.

So, in order to fix that, we would like to reverse the ratio of utilities.

One solution is to artificially restrict access to distracting activities. In
terms of TMT, their utility would be lowered because of some effort necessary
to overcome the restrictions. However, over time we need less and less effort,
and the utility is up again.

Conversely, ideamonk's suggestion—enjoying the process of doing—effectively
raises the utility of the task so that distractions can't compete. It might
take effort to learn that, but the effects are arguably more pleasant and
permanent.

[0] Utility = (Reward Expectancy × Value) ÷ Delay. See _Integrating theories
of motivation_ by Steel & König and _The Nature of Procrastination_ by Steel.

~~~
SkyMarshal
Fat-finger downvoted you, meant to upvote, sorry. Hope someone can undo.

------
evmar
This, like other github themes, has bad CSS that makes the monospaced text
come out as serif on Linux. I know the github crew uses Macs but it makes me a
little sad to see they don't test on the system that spawned their namesake.
:(

~~~
demetris
The problem comes from this:

    
    
        code {
            font-family: "Lucida Sans", Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
        }
    

Which is simply a poorly made rule, regardless of browser and OS. If you don’t
have any of the specified fonts, your browser will use its general default
font, which is usually either “serif” or “sans-serif”.

~~~
mikegirouard
I always try to have a simple "..., mono" suffix to my CODE and PRE rules for
this reason alone.

For BODY or HTML (whichever contains my global font-family rule) I finish off
the list with "..., sans-serif".

I've never had amazing luck w/typography outside of Mac/Win, but like you
point out, its poor style to leave everyone else without even a base style to
work with.

------
eblume
Personally I use Chrome Nanny[1] for this sort of thing, but it's a pretty
interesting idea.

1:
[https://chrome.google.com/webstore/detail/cljcgchbnolheggdga...](https://chrome.google.com/webstore/detail/cljcgchbnolheggdgaeclffeagnnmhno)

~~~
DannoHung
How do you keep yourself from just popping open the settings page and
disabling the plugin?

~~~
rplnt
It's not that you are unable to control yourself from visiting these sites.
You just do it subconsciously. When you see some sort of warning you are
reminded that you really don't want to go there.

------
pbiggar
It's amazing that we, who like to think of ourselves as do-ers, need tricks to
keep us focused on the goal. Not that I'm criticizing: I use no less than 3
similar tools at the same time, and I still have trouble. What is wrong with
us!

------
pacomerh
It's funny how a distracting website recommends you tools to avoid being
distracted. Suppose I'm using this tool to block HN, now I feel like I'm
missing out on a new tool! Geez.

~~~
beilabs
I don't find HN distracting in the least, if anything the content here
compared to sites like reddit is much more focused and often applicable for my
startup.

emacs /etc/hosts 127.0.0.1 reddit.com facebook.com

That has been in my host file for some time now on my work machine.

------
cdaven
I once spent a couple of hours writing a bash script that edited my /etc/hosts
file (e.g. resolve facebook.com to 127.0.0.1), and then ran that using crontab
to allow some breaks during the day.

It was fun, but then I had to go back to work. ;-)

------
jeez
On a similar note, can anyone suggest tools like rescuetime for firefox? The
few apps that the Firefox Addons website suggests are all outdated (not
compatible with ff4+).

Wouldn't a time tracker app with built-in pomodoro timer and website blocker
be the ultimate tool? :) Maybe we could toss in functionality to take
screenshots every few seconds and show it back to us at the end of the day.

------
darklajid
"After you identify the process listening on port 53, run sudo kill -9 with
the process id."

-9 as in KILL? I don't do Python, so I cannot comment on the quality of the project. But this FAQ should be changed. People that know how to stop a process don't need a FAQ entry. People that don't know how to do that shouldn't be trained to think that this is a sensible way to stop a program.

~~~
eternauta3k
> People that know how to stop a process don't need a FAQ entry

Yes we do. Just because I know kill doesn't mean I want to run through the
source code looking for the way to exit. Specially when there isn't one.

------
Bjoern
I wrote myself a similar thing a couple of years ago but just leveraging the
/etc/hosts file with some scripting.

<https://github.com/rennhak/ProcrastinatorsHelp>

But believe me, if you want to doodle there is nothing going to stop you.

------
toxik
This is a great idea, BUT it'll slow your system so no thanks.

My tip to you guys is to turn off Internet access until you need it, close the
browser. When you open Reddit, HN, Facebook or whatever - close it
deliberately. Practice that. Move the cursor to the X, push it and MEAN IT.

------
fsckin
Couldn't this use /etc/hosts instead and be instant to change without the need
for a DNS server?

~~~
user23409
'cept if it crashed you'd be left with an /etc/hosts in a bad state or
possibly corrupted.

~~~
frisco
File writes can be atomic. If it's left in a bad state, open vim and fix it.

------
tferris
Great idea. Would like to have it precompiled, I don't have Python.

~~~
pbiggar
Am not sure where to approach this question from. How come you don't have
python? Surely the effort of installing python is less than the effort to
precompile this package?

~~~
tferris
> How come you don't have python?

It's just not installed on OSX and I have no use for Python and I am not
familiar with Python.

I could just install it with 'brew install python' but I still prefer a clean
and slim command line interface for this application.

EDIT: I understood from reading the thread that for better customizability
it's better to have some scripting environment

~~~
chrishenn
OSX comes with (an old version of) python installed already.

------
potomak
This could work great in conjunction with Tomatoes[1]

[1] <http://tomatoes.heroku.com>

------
kmfrk
I use Freedom. (Costs money.)

Works really well: <http://macfreedom.com/purchase>.

------
haarts
Just a heads up for Mac users: changing the /etc/resolv.conf didn't work for
me. Changing it in System Preferences -> Network did work.

------
yaix
Hard to read the page. A third of my netbook screen is covered by the
style="position:fixed;" header.

------
ya3r
I really like the part where the author made it really hard to stop it! If you
know what I mean.

------
khakimov
for fun I did this <https://github.com/khakimov/freodom> (yea, simple
127.0.0.1 in /etc/hosts), you can add this feature in your project:

\- Automatically changes status to DND (skype/adium)

------
krat0sprakhar
How can I make this work on Windows? My office laptop runs win7.

~~~
arethuza
It certainly doesn't work "out of the box" - looking at the error messages and
source code there a are file references to /etc/resolv.conf etc. - which
aren't there in Windows.

Might work with a bit hacking about though.

------
flazzarino
technical countermeasure to a human behavior issue?

------
tutu12777
Nsnsnsns

------
adamsilver
That's some pretty Python code...

------
drivebyacct2
seems like there are easy ways of finding the pid.

