RU ⋅ EN

РецензииИнтернет |

Todo.txt

У большинства сервисов для ведения заметок, списков дел или чего бы то ни было есть одна главная проблема. По сравнению с ней все остальные — типа сложности освоения, низкой скорости или некрасивых иконок — яйца выеденного не стоят. Потому что в большинстве случаев эта проблема — корень всех остальных.

Все или почти все эти сервисы слишком много умеют.

Вот, предположим, мне нужна программа, в которой можно вести заметки. Базовый сценарий её использования следующий: открыл, набрал текст, нажал кнопку «Окей», сохранилось, закрыл. Захотел ещё что-нибудь записать — повторил. Открыл на другом устройстве, прочитал, больше не нужно — удалил. Всё.

Но нет. Создатели сервисов для ведения заметок сделали всё, чтобы их пользователи занимались не тем, ради чего они ведут заметки, а самими заметками. Можно присваивать заметкам теги. Можно сортировать их по дате редактирования, создания или вообще — по алфавиту. Можно объединять их в проекты, а проекты — в записные книжки. Можно впихивать в них аудиофайлы, картинки и видео с YouTube. Можно писать текст пятнадцатью разными шрифтами и в Markdown. Можно одной кнопкой публиковать заметки, защищать паролем или отправлять их другу, который пользуется тем же приложением. Можно сгенерить для друга реферальную ссылку, которая даст ему десятипроцентную скидку на первый месяц пользования. Можно наверняка и яичницу приготовить, просто я ещё нужной кнопки не нашёл.

Все эти многочисленные функции — из серии «можно, но не нужно». Они не приносят ровно никакой пользы, зато в разы увеличивают время загрузки и снижают скорость работы. Лучший редактор текста — это «Блокнот»: открыл — и пишешь; написал — сохранил в файлик .txt, положил в папочку. «Блокнот» мог бы быть ещё лучше, умей он в одном окне отображать первые три строки каждого файла папочки. Редактора, который умеет только это и больше ничего — я пока не нашёл. Поэтому компромиссно пользуюсь Standard Notes — он в бесплатной версии умеет это и ещё всего три пункта из списка многочисленных функций. Меня такой вариант устраивает, за неимением лучшего.

Но текстредакторы — это ещё цветочки. Например (на другой пример), мне нужно приложение для ведения списка дел. Базовый сценарий его использования следующий: открыл, набрал строку текста, дописал прямо в неё дату и (если сильно надо) приоритет. Если очень сильно надо, засунул её в определённый список. Нажал кнопку «Окей». Сохранилось. Закрыл. Захотел ещё что-нибудь записать — повторил. При этом мне не нужно, чтобы дата и приоритет отображались где-то, кроме строки, куда я их только что ввёл. Мне не нужно создавать пять подпапок под каждый проект и копаться в них, ища задачу, которую я только что закончил выполнять и которую надо отметить галочкой. Мне не нужен логотип приложения, вылетающий при каждом запуске снизу, сверху, сбоку или из ниоткуда. Мне просто нужно записать задачу, а потом отметить её галочкой и больше никогда не видеть. А потом открыть свой список на другом устройстве и отметить галочкой ещё одну. Всё.

К сожалению, почти любой таск-менеджер, какой ни возьми, предлагает сверх этого ещё десяток функций и свои вылетающие логотипы, которые страшно утяжеляют его (как в плане размера, так и в плане потребления ресурсов устройства) в обмен на ничто. На месте этого ничто могла бы быть польза, но — не нужны эти функции с логотипами. Увы. Использование таск-менеджера превращается из инструмента в самоцель и быстро надоедает, и поэтому так мало людей, которые по-настоящему ими пользуются.

Всё это прекрасно резюмирует комментарий с Хабра про нарезку хлеба.

Но прежде чем я дам ссылку, по аналогии, на таск-менеджер, который решил мне все проблемы, связанные с сервисами, я выражу способ решения этой проблемы общее. Это поможет лучше понять, чем то, что я предлагаю, отличается от всего остального.

Пользоваться надо не сервисами, а технологиями.

Вот, предположим, есть фейсбучный мессенджер, который я с таким удовольствием критиковал в посте про почту и телеграм. Фейсбучный мессенджер — это сервис. Нельзя зайти в него, не имея аккаунта на определённом сайте и не скачав определённое приложение. Эти два ограничения автоматически приводят к тому, что

  1. Вместе с приложением сервиса вы получаете набор функций, который определили не вы, и вы не можете скачать себе другой набор;
  2. Если создатель фейсбука Марк Цукерберг решит, что фейсбук пора закрыть — вместе с фейсбуком пропадут все ваши контакты, друзья и переписки, и ничего вы с этим не сделаете. Не будет у вас другого фейсбука. Всем вашим друзьям придётся переходить на другой сервис, осваивать другой интерфейс и наполнять заново список контактов. Потому что из фейсбука нельзя выкачать список контактов файлом и импортировать его в телеграм, а если телеграм закроют — куда-нибудь ещё.

Взамен этого сервиса есть прекрасная технология — электронная почта. В неё встроена только одна, базовая функция — пересылка форматированных сообщений, которые записываются кодом. Для неё есть невообразимое количество клиентов со всеми возможными наборами надстроек над базовой функцией — сортировка, папки, уведомления в момент получения и через полчаса, etc. Её невозможно закрыть так, чтобы все потеряли всё. Можно закрыть сервер, через который она проходит — например, yandex.ru. Но если закроется почта @yandex.ru, я зарегистрирую почту на @gmail.com, открою почтовый клиент, напишу всем своим контактам «Привет, Яндекс всё, поэтому теперь моя почта — mail@gmail.com, записывайте», и письмо дойдёт. Могу даже, если заранее знаю о закрытии @yandex.ru, написать такое письмо ещё с @yandex.ru и выставить в поле “Reply Address” адрес на @gmail.com, аккуратно переведя таким образом переписку туда, куда мне нужно. Я не смогу сделать это через сервис — веб-интерфейс Яндекс.Почты, — но никто не запретит мне воспользоваться чистой технологией, которую я оберну в нужный мне клиент.

То же и с сервисами для ведения заметок, и со списками дел, и с чем угодно ещё. Если я пользуюсь технологией, а не сервисом, которым управляю не я — я могу быть спокоен. Не перестанут единовременно все компьютеры в мире поддерживать формат .txt или форматы в принципе.

Вот теперь можно переходить собственно к моей «системе управления делами», как её назвали тут в комментариях. Не зря выше написано про .txt-формат. Знакомьтесь: todo.txt.

Todo.txt

Это — технология, почти язык программирования. Такой аналог HTML, только HTML нужен браузеру, а todo.txt — клиентам todo.txt. Эти клиенты читают локальный файл, который так и называется — todo.txt — и сами форматируют его так, как этого пожелает пользователь, то есть я.

Вот, предположим, мне нужно записать задачу «Написать пост про todo.txt». Я открываю на компьютере клиент todotxt.net, нажимаю клавишу N (New Task) и просто пишу:

Написать пост про todo.txt

Потом нажимаю Enter. Всё. Я записал себе задачу. Подавляющее большинство таск-менеджеров предложило бы мне для записи примерно такой интерфейс:

В моём клиенте todo.txt по сравнению с этим интерфейса нет вообще. Вот так выглядит то, куда я ввожу текст задачи:

Всё остальное я ввожу туда же.

После этого мне нужно просмотреть, какие задачи я себе записал, и отметить галочкой. Вот так выглядит окно клиента:

Задачи, кроме первой, к реальности отношения не имеют

Но, скажем, написать пост про todo.txt мне нужно сегодня, а не вообще. Тогда я выделяю задачу про пост, нажимаю клавишу U (Update) и дописываю:

Написать пост про todo.txt due:2019-05-15

Теперь я могу рассортировать задачи по сроку, нажав Ctrl+4 (Sort → Due Date) (не я выбирал эту цифру, но с ней можно смириться), и первой в списке окажется нужная:

Вместо конкретной даты можно дописывать due:tomorrow или due:friday.

Разумеется, если надо, я могу и списки создавать, а потом сортировать по ним. Чтобы создать список, я дописываю в задачу про пост:

Написать пост про todo.txt due:2019-05-15 @Блог

Создался список «Блог». Теперь я могу нажать Ctrl+3 (Sort → Context) и рассортировать всё по спискам:

Отличие от обычных таск-менеджеров — в том, что если мне не нужны списки, я могу их и не создавать. И ещё, если у меня двадцать списков, и некоторые задачи подходят под несколько списков сразу — я могу просто дописать @Блог @Посты, и задача про пост появится сразу в двух. Назовите мне таск-менеджер, в котором это настолько просто делается.

Но мне недостаточно списков: я хочу сортировать задачи по категориям. Если мне нужно подкрутить что-то разное на сайте «Сто семнадцать и два» и в блоге, я создам две задачи, где опишу, что подкрутить, а потом допишу +тег:

Подкрутить что-то на сайте @117,2 +подкрутка
Подкрутить что-то в блоге @Блог +подкрутка

Теперь, кроме списков, у меня есть ещё тег +подкрутка, задачи с которым я тоже могу смотреть отдельно.

Теги оказываются очень нужны, когда начинаешь фильтровать задачи, чтоб видеть не все сто пятьдесят восемь, а только нужные. Например, я могу нажать F (Define Filters), открыть окно

написать в нём +подкрутка, нажать ОК и посмотреть только то, что я отметил тегом. А могу и наоборот: если написать -подкрутка, отобразится, всё, кроме того, что я отметил тегом.

Разумеется, мне не нужно каждый раз открывать окно с фильтрами: у меня есть десять пресетов, которые работают по нажатию клавиш 0–9 — я могу задать их, выучить и забыть про него, пока их не станет надо изменить. Кроме тегов, можно фильтровать списки (+@Блог) и сроки (due:today, due:past, -due:future).

Всё это делается за секунды, которые тратятся не на борьбу с интерфейсом и просмотр анимаций, а на собственно запись и просмотр задач. И, разумеется, программа ни разу ещё не зависла, потому что весит она — полтора мегабайта.

Примерно такой же клиент у меня установлен на Android-телефоне. Называется Simpletask, умеет всё то же самое, только в строку можно перед сохранением вписывать больше одной задачи и в дополнение к due:2019-05-15 дописывать ещё t:2019-05-13. t: — это Threshold Date, и раньше этой даты задача на экране не появится. К сожалению, todotxt.net Threshold Date не поддерживает и показывает всё, но я с этим смирился и живу счастливо, ибо не так много у меня задач, к которым нужно её приписывать.

Синхронизация

На компьютере и на телефоне у меня лежат два разных файла с именем todo.txt, и их нужно как-то синхронизировать. Я синхронизирую через ivanvetoshkin.me: в 2020 году я поставил на него Nextcloud, такую немного глючную файловую систему, к которой есть доступ через браузер, и там есть специальная папочка, содержимое которой аккуратно переписывается в телефон или на компьютер каждый раз, когда в ней что-нибудь меняется. Если у вас нет своего ivanvetoshkin.me — можно синхронизировать через Google Drive или еще какой-нибудь драйв. А на случай, если вы будете синхронизировать через Dropbox, есть версия Simpletask, которая синхронизируется с ним сама, без сторонних программ.

Сторонние программы, синхронизирующие два файла через сервер, у меня стоят следующие: на компьютере — @MaxSyncUp, на телефоне — Automate (но там надо сильно морочиться, не хотите — есть Synchronize Ultimate, больше грузящий оперативку телефона, но с более понятным интерфейсом). Ни одна синхронизирующая программа пока не дала мне повода в себе разочароваться.

Итог

  • Я не смотрю на интерфейсы, а просто пишу текст,
  • я в любой момент могу сделать резервную копию всех своих списков дел и открыть её в любом текстовом редакторе,
  • «система ведения дел» не грузит собой оперативную память ни одного устройства,
  • манипуляции с задачами занимают наименьшее возможное время, потому что под практически любую манипуляцию есть горячая клавиша.

В общем, рекомендую. Есть вопросы — задавайте в комментариях.

Сайт todo.txt, где собраны все остальные клиенты

Комментировать

Комментировать

12 комментариев

    • Крутая вещь, спасибо! У меня есть файлик в Sublime Text, где я собираю в кучу всякие цитаты, английские слова и прочее, что хочется сохранить, но не хочется морочиться категоризацией. Вот я его сейчас туда и перенесу.

  1. Ещё давно мучает мысль, что нельзя (ну то есть можно, но) просто взять и послушать песню в интернете - надо выбрать ВК или яндекс или ютуб или spotify
    И с фильмами также и с книжками и со всем вообще- куча разных и одинаковых сервисов

    • Мне кажется, здесь как раз необходимость пользоваться сервисами оправдана: кто-то же должен загрузить песню, фильм или книжку к себе на сервер и раздавать её оттуда. Другое дело, если, скажем, качать через торрент — ещё один пример технологии, оборачиваемой в клиент.

  2. Но если закроется почта @yandex.ru, я зарегистрирую почту на @gmail.com, открою почтовый клиент, выставлю в поле «От кого» свой бывший адрес на @yandex.ru и напишу «Привет, Яндекс всё, поэтому теперь моя почта — mail@gmail.com, записывайте».

    Не очень понял что произошло в этом предложении. Если можно растолкуйте. Спасибо

    • Я ошибся: так сделать не получится. Раньше, до изобретения алгоритмов защиты от подделки электронной почты, так можно было. Теперь — нет. Исправил текст поста.

      Тем не менее, я всё ещё могу написать с нового адреса, и моё сообщение гарантированно дойдёт, а не как в фейсбуке, где люди спустя несколько лет пользования вдруг находят кнопку «Отфильтрованные сообщения», а за ней — море входящих, про которые фейсбук почему-то сам решил, что это спам.

    • Однако, оказывается, имя отправителя подделать всё-таки можно — сервис Anonymailer предлагает за 19 $ / год отправлять анонимные письма с любого адреса (можно и бесплатно, но тогда в письме будет реклама сервиса и IP отправителя).

  3. Спасибо за статью. Согласен, что текстовый файл - лучший вариант для многих вещей. В свое время, устав от кучи разных форматов заметок и попыток найти один вариант заметок на смартфоне и компе, перешел на текстовые файлы и папки.
    Сейчас пытаюсь перенести записи из гугл-календаря, чтобы не зависеть от их сервиса. Но пока не нашел, как связать с todo.txt систему напоминаний на android. Возможно, вы сталкивались с этой проблемой.

    -
    С уважением

    • В Simpletask под Android есть функция напоминаний, но она, кажется, работает только с календарём aCalendar. Плюс, в todo.txt в принципе невозможно расставлять напоминания по времени — aCalendar будет присылать вам все задачи на день в одно заданное вами время. Если вы хотите отказаться от гугл-календаря — как вариант, можно использовать локальный календарь на телефоне — тот же aCalendar прекрасно подойдёт. В нём вы сможете прямо из Simpletask создавать напоминания о задачах из todo.txt на конкретное время.

      Есть ещё «официальный» клиент todo.txt, но я не смог пользоваться им из-за того, что он не поддерживает кириллицу. Возможно, в нём есть более точная настройка уведомлений.