Cold Turkey (Blocker / Micromanager) vs. Focus

I’m currently evaluating Focus for Mac and am thinking of also evaluating Cold Turkey.

Please share your experience with either of these (or some other similar app that I missed), especially in combination with Beeminder. Focus has a scripting interface so that’s rather neat for integration purposes.

3 Likes

I’ve had good experiences with Focus. The scripting stuff works great, and the developer is pretty responsive.

2 Likes

Why not use RescueTime which already has a beeminder integration?

3 Likes

RescuteTime doesn’t block stuff.

Rescuetime pro does:

https://www.rescuetime.com/rescuetime-pro

4 Likes

Worth every dollar of the subscription :slight_smile:

1 Like

I tried both but prefer Cold Turkey. I forgot what was missing back when I tried Focus but Cold Turkey has been exactly what I’ve needed.

There is no scripting in Cold Turkey so I’m not sure how you’d use it with Beeminder.

I’m still missing something to help me avoid losing track of what I set out to do in a browsing session.

What are you trying to get out of a website blocker?

2 Likes

I’m utterly in love with https://freedom.to/ and I think @adamwolf and @justanotherjon use it too.

@adamwolf also noted that it’s introduced (or is about to introduce—I can’t recall) an API and he brought up the idea of something that would block certain websites until your beemergencies were cleared. Once I stood back up after the swoon, I wrote that down as something I could totally see doing in the future (but if someone were to do it first, I’d be very happy to freeload off of their script).

4 Likes

If anyone’s interested in doing this with Focus, I wrote this script a while back for myself. It’s been a while since I’ve used it, but if someone else wants to use it I’m happy to help them navigate setting it up.

4 Likes

Thanks everyone for your input! I just recently returned from my vacation and am slowly getting back on the productivity train. Working through this thread here is high up my todo list :slight_smile:

2 Likes

Cold Turkey is really nice but there does not seem to be any kind of scripting support and https://freedom.to looks cute and all but their API is not exactly meant for end users it would seem.
The only thing out there is Focus so that’s where I’ll be taking my money it would seem.

Also I hate subscriptions. I’d much rather pay upfront for a good product and then be done with it. Unfortunately in my experience many products despite being only available through subscription are lacking in quality. And there’s so many companies who just charge ridiculous amounts for their subscription. So no, if there is a subscription-free alternative that works for me that’s where I’ll be taking my money.

Ok I’m giving Cold Turkey another shot. It might not have a scripting interface BUT obviously it gotta store its stuff somewhere. So I looked where mac apps usually store their stuff: At Library/Application Support et voilà there’s two sqlite3 files.
A note to DB admins: You might wanna close your eyes for this because clearly the author of Cold Turkey decided to hell with normalization:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "current" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL);
INSERT INTO "current" VALUES('ignoreIncognito','false');
INSERT INTO "current" VALUES('blockList','facebook.com@twitter.com@netflix.com@collegehumor.com@imgur.com@youtube.com@vimeo.com@ebay.com@mashable.com@amazon.com@9gag.com@reddit.com@4chan.org@tumblr.com@pinterest.com@instagram.com@flickr.com@fmylife.com@deviantart.com@stumbleupon.com@myspace.com@tagged.com@pof.com@orkut.com@delicious.com@vk.com@theonion.com@theoatmeal.com@twitch.tv@espn.go.com@addictinggames.com@bored.com@break.com@bufferapp.com@boingboing.net@buzzfeed.com@buy.com@cheezburger.com@cracked.com@dailymotion.com@digg.com@ebaumsworld.com@feedly.com@funnyjunk.com@funnyordie.com@kickstarter.com@liveleak.com@miniclip.net@newgrounds.com@ok.ru@penny-arcade.com@runescape.com@xkcd.com@ytmnd.com');
INSERT INTO "current" VALUES('blockListApp','');
INSERT INTO "current" VALUES('exceptionList','');
INSERT INTO "current" VALUES('statsEnabled','false');
INSERT INTO "current" VALUES('statsEnabledIncognito','false');
INSERT INTO "current" VALUES('blockActive','true');
CREATE TABLE IF NOT EXISTS "settings" ("key" TEXT PRIMARY KEY NOT NULL, "value" TEXT NOT NULL);
INSERT INTO settings VALUES('settings','{"additional":{"win10":[]},"settings":{"sprintC":"","scheduleLimited":"true","limitE":"","frozenTurkey":"false","notifyDone":"true","limitD":"","weekStartMonday":"false","scheduleLocked":"","sprintB":",","password":"","notifyWarning":"true","statsEnabledIncognito":"false","statsEnabled":"false","show24hour":"false","timerLocked":"true","sprintA":",","notifyBreak":"true"},"lists":[{"apps":[],"web":["facebook.com","twitter.com","netflix.com","collegehumor.com","imgur.com","youtube.com","vimeo.com","ebay.com","mashable.com","amazon.com","9gag.com","reddit.com","4chan.org","tumblr.com","pinterest.com","instagram.com","flickr.com","fmylife.com","deviantart.com","stumbleupon.com","myspace.com","tagged.com","pof.com","orkut.com","delicious.com","vk.com","theonion.com","theoatmeal.com","twitch.tv","espn.go.com","addictinggames.com","bored.com","break.com","bufferapp.com","boingboing.net","buzzfeed.com","buy.com","cheezburger.com","cracked.com","dailymotion.com","digg.com","ebaumsworld.com","feedly.com","funnyjunk.com","funnyordie.com","kickstarter.com","liveleak.com","miniclip.net","newgrounds.com","ok.ru","penny-arcade.com","runescape.com","xkcd.com","ytmnd.com"],"listName":"Distractions","exceptions":[],"win10":[]}],"timers":[{"startTime":"2019,11,25,14,41","locked":"true","endTime":"2019,11,25,14,56","listName":"Distractions","enabled":"true","break":"none"}],"scheduler":[]}');
CREATE TABLE IF NOT EXISTS "stats" ("date" REAL NOT NULL, "file" TEXT NOT NULL, "seconds" REAL NOT NULL, PRIMARY KEY ("date", "file"));
COMMIT;

We’re looking at… JSON inside of a sqlite3 db. We’re also looking at a @ separated list of domains.

As we can see there’s a currently active timer:

"timers":[{"startTime":"2019,11,25,14,41","locked":"true","endTime":"2019,11,25,14,56","listName":"Distractions","enabled":"true","break":"none"}]

It’s not perfect but it’s something. All it needs is something that watches for changes in that file. An sqlite lib to read the file and some json lib to get the info out of there.
And if worst comes to worst there is also AppleScript / JavaScript.

2 Likes

Why not use RescueTime which already has a beeminder integration?

1 Like

I hate subscriptions, that’s why.
This being said: RescueTime is currently luring me with a 50% discount (when paid for an entire year upfront). And I’m thinking about it.

1 Like

Some things are worth paying for. :slight_smile:

I’ve been using cold turkey since about 2017 now - not with beeminder per se, but just with life.

The thing is bloody brilliant as far as I’m concerned. Really does everything I’ve ever needed it to. There are still one or two things I’d add (like adding frozen turkey to the timers list as opposed to just the schedule), but conceptually it’s made such a difference that I can’t imagine having a computer without it.

3 Likes

I like StayFocused, a free extension for chrome. It works well for me to limit my time on distracting websites or block them entirely. There are also options to limit time during certain hours/days of the week and to do pomodoros. (So it seems to have many of the features of Cold Turkey/RescueTime Pro, though I am not very familiar with these programs.)

Right now I’m using StayFocused to stay off YouTube, FB, etc. until March (using additional blocker tools on my phone), and using the free version of RescueTime for curiosity reasons. I previously only had a Chromebook (where Chrome was the only browser) so it works well for me, but a more powerful tool might be needed for someone who uses many different browsers. My friend with a Mac is currently using StayFocused and they’ve blocked https://www.mozilla.org to weasel proof themselves.

(As additional weasel proofing, you should enable the extension in incognito mode. You may also consider using beeminder to keep yourself from deleting the extension if you think you might be tempted to do that :slight_smile: )

1 Like

Same. I’ve been using freedom for past 6 months and I’ve managed to reduce my useless internet surfing to a minimum.

2 Likes

I looked at several solutions for focused time / blocking and ultimately still haven’t found something I’m truly happy with. I went with Rescuetime, but looked at Cold Turkey, Freedom, at browser extensions such as LeechBlock, and maybe a couple other paid apps. As a PC user Focus isn’t an option.

I ultimately signed up for a paid RescueTime subscription w 50% off, partly for FocusTime (their blocker, with Beeminder integration!) and partly for other paid features. One thing to note is that at renewal I kept that 50% discount and they emailed me to say I will have it for as long as I renew. At $36/yr it is worth it to me, though wouldn’t be at $72.

I actually like Cold Turkey quite a lot but it definitely suffers from no API/scripting support, which is why I went with FocusTime. I even emailed the Cold Turkey author to ask about an API/scripting, but they didn’t seem very interested.

My biggest beef with FocusTime is that the way it implements blocking is pretty weird and flaky. It doesn’t actually block anything, and certainly doesn’t implement anything akin to blocking lower in the network stack than the application layer. What it seems to do is constantly scan the contents of the URL field and if it matches a blocked site, then it fills the URL field with the address of a ‘blocked site’ page and redirects to it.

This breaks in all kinds of interesting ways - eg there is time to switch tabs or windows in between when it notices you are on a blocked page and when it pastes in the url for the Blocked Site page, so I’ve fairly frequently had it post garbage/portions of a url into whatever field has focus in the window I’ve switched to. It also means you can just hit Back on the Blocked Site page and see the blocked site for a few seconds before it invetably redirects again, and sometimes the blocking just outright fails.

I wish FocusTime had implemented blocking more robustly, lower in the network stack, like how Cold Turkey does it - even editing the hosts file would be better than this, though it is a bit of a no-no from a security perspective I guess.

2 Likes

Cold turkey works really, really well. If you’re blocked, you have no way around it. Unless you, like, code a kernel driver and hot load it or something. But its implementation and UI is a complete mess. The UI glitches, you cant do basic things like copying and pasting schedules, want to edit the sqlite db yourself? Yes, you can, but the code you have to write to do it is… i mean, what? What is that hellish db?

Why do I have to click three times to choose between a fixed set of times in increments of 5 minutes to create a timer? Can I really not just put a minute amount in there? Is this a user interface meme from reddit designed to be as bad as possible for people to chuckle, but in a real app you pay for?

For what it does, I really get the feeling I want to build my own solution, maybe open source it. Same feeling I had before building my own language learning platform because everything else kinda sucked, especially for advanced users.

Can I literally build the same functionality as cold Turkey with more or less a very similar UI and open source it or is there some kind of illegal copyright stuff going on there?