7 posts tagged

Фигачу 

Релиз 1Активити 0.5 

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

1) Самое главное – теперь можно будет релизиться часто, потому что впилили автообновление и кнопку “Check for updates”.

2) Еще из важного – отказались от terminal-notifier, и сделали нативные нотификации. Ну и да, они, кажется, отваливались в паре мест – теперь все должно работать.

3) Нашли прекрасное. Как оказалось, макось в именах файлов буквы с умляутами и прочими закорючками раскладывает на составляющие перед сохранением:

   
2.4.0 :008 > "сайт".chars
 => ["с", "а", "и", "̆", "т"]

Называется это “unicode canonical decomposition”. И, естественно никакой греп по нормальной букве “Й” с такой строкой уже не сработает. Вроде как это не баг, а фича, но воркэраунд пришлось для этого написать. Теперь все работает как надо.

4) Открутили поллинг при обновлении названия активности в менюбаре (не спрашивайте), и впилили смену через AppleScript. Теперь гораздо меньше нагружает процессор, хотя и раньше было меньше одного процента CPU.

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

6) Добавлен сбор статистики, из которой мы будем потом рисовать красивые графики с кол-вом переключений в день и количеством активных проектов. Собираются только цифры.

7) Переименование последнего файла в текущей активности стало чуть поумнее. Если файл с таким именем уже есть, программа создаст копию вида “file (1).md” вместо того чтобы просто перезаписать его. Чтобы перезаписать, используйте Shift+Enter

8) Добавили в dmg-образ кнопку для тулбара в файндере. По клику перенесет вас в текущую активность

Инструкции по установке в самой dmg-шке:

Буду рад вашим багрепортам и фичереквестам в телеграм-канале. Там же можно попросить демо-версию приложения, если вдруг надо.

P.S. Если вы не в теме, что такое 1Активити, прочитайте первый релизный пост или полистайте сайтик

Купить программу:

   

Купить 1Activity

Подписаться на обновления:

   
2017   Фигачу

Как я держу ум и рабочее пространство на компе в порядке. Часть 2 

Первая часть цикла: Про миллиарды вкладок в браузере — «закрыть нельзя оставить»

Как бороться со свалкой файлов, нужна ли идеальная структура и жизненный цикл проектов

Когда основной вид деятельности – программирование, то все достаточно просто. У тебя есть папка с проектами в которых ты участвуешь, система контроля версий, и трекер задач. Можно даже не выходить из терминала.

Когда начинаешь заниматься еще чем-то, то этот красивый идеальный мирок приходится покинуть. Вот примеры активностей, по которым, хочешь-не хочешь, а скопится пачка файлов:

  • ・Планирование поездки в другой город/страну
  • ・Получение визы
  • ・Подготовка доклада
  • ・Написание статьи
  • ・Запись вебинара/подкаста
  • ・Согласование дизайна

Если не париться

Когда занимаешься всем этим одновременно(а часто так и бывает), и не задумываешься о том куда что сохранять, то через время станет очень сложно находить конкретные файлы в тот момент когда они так нужны. Часть валяется в ~/Downloads, часть в ~/Documents, а часть, того и гляди, вообще в ~/Desktop.

Чтобы такого не происходило, начинаешь все сохранять в Downloads, раз из интернета уже и так все туда валится. Проблемы:

  • – файлы от разных дел валяются в перемешку
  • – в какой-то момент файлов становится невыносимо много

Тщательно это все сортировать не у всех хватает терпения. У меня содержимое Downloads раз в квартал отправлялось целиком в архив, куда-нибудь на внешний диск или, позднее, в облако.

“Идеальная структура”

После очередной чистки возникают порывы нарулить идеальную структуру папок на будущее.

Проблема в том что если у вас не два проекта, которыми вы занимаетесь всю жизнь, а побольше, плюс достаточно спонтанно возникают дополнительные активности, то и структура постоянно будет устаревать.

А значит либо придется подтачивать структуру на ходу(отвлекаясь), либо валить все в Downloads и так-же потом это все сортировать после рефакторинга структуры(скажем, раз в неделю).

Ну и да, каждый раз указывать в браузере куда сохранять файл – мучительно.

Автоматизация

Очевидно, я не первый кто столкнулся с этой проблемой. Я хочу выделить два подхода к решению проблемы завалов файлов а автоматическом режиме:

  1. С помощью Hazel:
    • ・С ней проблема такая же, как и с идеальной структурой – правила постоянно нужно уточнять и дорабатывать.
    • ・Плюс на него нельзя положиться целиком: PDF – это электронная книжка, счет за гостиницу, или слайды с конференции?
  2. Автоматическое копирование раз в день/неделю содержимого Downloads в Archive/2017-05-24-Downloads.
    • ・Непонятно какую проблему это решает.
    • ・Старые файлы находить в таком раскладе, пожалуй, даже сложнее.

Да и мы же не за “Downloads Zero” боремся, в конце концов. Важно следующее на мой взгляд:

  1. Чтобы было легко найти то что в работе
  2. Чтобы не приходилось долго копаться, когда надо найти что-то в архиве
  3. Чтобы как можно меньше мороки в виде ручного перекладывания файлов

Получается, что все перечисленные способы решения поверхностны, и не решают проблему так как хочется.

1Activity в помощь

Я задумался что может быть наши изначальные установки устарели. Я имею в виду в первую очередь идею о единой папке загрузок.

Как результат этого переосмысления родилась 1Activity. С ней ты задаешь рабочий контекст, и все связанные с ним файлы автоматически попадают из браузера туда.

Главный вопрос, который возникает – на какие части нарезать слона?
Вначале я создавал по активности на каждый проект, не важно долгосрочный он или краткосрочный.

С таким подходом в папках долгосрочных проектов со временем образовывается свое гетто – филиал старого доброго Downloads. Творческий беспорядок – это классно, но до определенного размера.

Размер “активностей”

Первым шагом к стройной системе оказалось понимание правильного размера активности:

Слишком крупно: Идеально:
Блог Пост про поиск идеальной структуры папок
1Activity Релиз 1Activity 0.4.1
Курс Толковый программист Шестой выпуск толкового программиста

Активности я теперь создаю, условно говоря, на тикет/майлстоун/подпроект, а не на проект целиком.

Жизненный цикл активностей и проектов.

Из-за неясности с размером, и жизенный цикл был так себе: Все завершенные активности раз в квартал отправлялись в подпапку вида 2017-Winter в Архив: Activities → Archive/2017-Winter

Проблемы две:

  1. Та же что и с автоматической очисткой Downloads – название квартала в имени папки не очень помогает найти искомое в нужный момент.
  2. “Длинные” проекты продолжали висеть в Activities, и накапливать файлы. Привет, гетто.

В итоге я пришел к трехступенчатому жизненному циклу: Activities → Structure → Past

Получается градация по трем степеням актуальности:

Activities – задачи над которыми я работаю прямо сейчас

Structure – долгосрочные проекты в процессе

Past – архив законченного

Иногда остаются активности-сироты, типа “Поездка в Черногорию летом”. Они из Activities переедут прямиком в Past, когда станут неактуальны.

Автоматизация наносит ответный удар

Заметили в названиях активностей квадратные скобки? Так я помечаю к какому проекту относятся текущие задачи/активности.

И это же то самое место в котором автоматизация в стиле Hazel начинает иметь смысл. Если проект закончен и не открывался больше недели, то можно перенести его в соответствующую папку в Structure:

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

Подытожим

Не знаю насколько универсальной получится эта система. Все-таки у каждого немного своя специфика. В любом случае важно задуматься о следующем:

  1. Как вы “режете слона на куски”. Не слишком ли мелко? Не слишком ли крупно?
  2. Каков жизненный цикл ваших проектов? Отображает ли его структура папок?
  3. Не переборщили ли вы с автоматизацией и поиском идеальной структуры? Потенциально это может съедать не меньше времени чем ручная сортировка.

Кто хочет обсудить или поделиться своей структурой, айда в телеграм

P.S. Самые внимательные должны были заинтересоваться меткой   Finished на скриншоте. Метками я помечаю статус проекта. Про это будет следующая статья.

P.P.S. Если вы не в теме, что такое 1Активити, прочитайте первый релизный пост или полистайте сайтик.

Где купить

Купить программу можно здесь:

   

Купить 1Activity

Будем на связи

Если на такой серьезный шаг вы еще не готовы, подпишитесь на новости о программе. В ближайшее время напишу несколько статей о том как 1Activity помогает быть более продуктивным, и подписавшиеся получат статьи по почте.

   
2017   Порядочек   Фигачу

Ленивый сокращатель ссылок 

Есть такой гем s3_website. Он помимо того что умеет заливать файлы на S3, позволяет в yaml-конфиге указывать редиректы с одних урлов на другие.

Я эту особенность нежно полюбил, и активно использовал в своих докладах – даешь красивую ссылку вида “inem.at/leanpoker”, которая приредиректит тебя куда надо. Плюс, естественно, это добавляет гибкости – в любой момент можешь пойти и поменять “адрес назначения”, если вдруг нашел более подходящую для объяснения предмета ссылку.

Вот так выглядит кусок конфига:

   
 
redirects:
  skillgrid:  http://t.nemytchenko.ru/skillgrid
  leanpoker:  http://t.nemytchenko.ru/leanpoker
  railsclub:  http://s3.inem.at/share/railsclub2015.pdf
  railshurts: http://railshurts.com
   

Год назад я перенес репу на ГитЛаб, и придумал в CI проверять ссылки на работоспособность с помощью awesome_bot:

   
 
awesome_bot s3_website.yml --allow-redirect --allow-dupe
   

Эта штука меня пару раз спасла от показывания битой ссылки на публику.

В общем все было бы круто, но в какой-то момент я решил прикрутить CDN к своему сайтику, и внезапно выяснилось, что за CDN эта крутая фича у Амазона тупо не работает.

Соответственно, и все мои “короткие ссылки” сейчас тоже не работают, но это сейчас уже и не настолько актуально, благо с докладами я сейчас выступаю гораздо реже.

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

Решение

Скрипт работающий по принципу “Static Site Generator”. Редиректы, как и с s3_website прописываем в yaml-файл(можно даже синтаксис оставить), а скрипт генерит кучу почти пустых html-файлов, у которых внутри прописан редирект на нужный сайт.

  1. Файлы эти заливаются на какой угодно хостинг, и выполняют свою функцию, редиректя посетителей куда надо.
  2. Решение платформонезависимо. Не зависит ни от какой фичи S3 или другой платформы. Можно переносить с хостинга на хостинг или с одного сайта на другой.
  3. Если файлы продолбались, их всегда можно перегенерить из конфига, который лежит в репозитории
  4. По желанию к этому можно припилить трэкинг количества нажатий, посылая перед редиректом запросы на какой-нибудь нехитрый бэкенд.

Реализация

Запилить реализацию оказалось делом 30 минут, большую часть из которых я разбирался как же работать со строками в баше. Короче вот: https://github.com/inem/redirects-generator. Работает.

Side notes

  1. Выяснилось что хостить на S3 такое не получится, так как урлы будут либо `aaa.html`, либо `aaa/`, что для сокращалки урлов как-то не очень
  2. Зато отыскался способ надурить амазоновский CDN, чтобы S3-шные редиректы продолжали работать: надо когда создаешь origin, не использовать автокомплит, а просто прописать бакет в формате `bucketname.s3.amazonaws.com`.

Короче, решил в итоге и изначальную задачу, и в общем виде под любую платформу. Пригодится.

   
2017   Фигачу

Обновили 1Активити до 0.4.1 

Добавили возможность навигации по активностям с помощью комбинаций клавиш Ctrl+J/K (привет, vim!) и Ctrl+P/N (привет, emacs!).

Забавно, но это были одни из первых фичереквестов.

Вторая фишка – алиасы активностей, чтобы экономить место в менюбаре. Если создать активность вида “Очень {важная активность} и очень длинная!” или “Чуть менее важная но тоже длинная { %#”, то в менюбаре отобразятся “важная активность” и “%#” соответственно.

Длинные имена иногда важно иметь, чтобы легче было искать по ключевым словам. Теперь можно не жертвовать ценным местом в менюбаре, и одновременно иметь длинные названия активностей.

P.S. Если вы не в теме, что такое 1Активити, прочитайте первый релизный пост или полистайте сайтик

Где купить

Купить программу можно здесь:

   

Купить 1Activity

Будем на связи

Если на такой серьезный шаг вы еще не готовы, подпишитесь на новости о программе. В ближайшее время напишу несколько статей о том как 1Activity помогает быть более продуктивным, и подписавшиеся получат статьи по почте.

   
2017   Фигачу

Первый публичный релиз 1Activity 

Привет. Собираюсь релизить 1Activity. Для меня это big deal, поэтому я решил написать по этому поводу отдельный пост.

Почему это важно для меня

Я давно хотел научиться приносить пользу людям не просто в качестве наемного работника, а в качестве автора продукта, облегчающего жизнь людей.

Идее продукта в её первой инкарнации уже, блин, 7 лет. Первый раз я поделился ей со спецом по UX из Microsoft Биллом Бакстоном на 404fest в 2010 году. Вот что у меня осталось с тех пор:

Это, кстати, один из моих первых постов в Инстаграмме :)

Идея

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

О чем идет речь:

  • загрузки
  • скриншоты
  • списки задач, заметки
  • документы, таблицы
  • презентации, картинки

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

Прототип

Год назад мне пришла в голову идея что вместо того чтобы решать проблему глобально(на уровне операционной системы), можно для начала решить её хотя бы для папки Downloads.

Работающий прототип получилось написать за пару вечеров. Первая версия с графическим интерфейсом родилась через месяц.

Внешний вид почти с первых версий почти не поменялся

Испытания боем длиной в год

Потом я попал в ГитЛаб, и доработку программы пришлось отложить.
Тем не менее я ей пользовался постоянно в течение года, и вы не представляете, насколько она меня иногда выручала. Огромное количество point-and-click и drag-and-drop сценариев превратились для меня в набор шорткатов на клавиатуре, и это спасло мою концентрацию в ситуациях когда, например, надо было сделать презентацию с нуля за пару дней до выступления.

Сейчас у меня снова появилось свободное время, появился партнер по разработке, и у программы сегодня первый релиз. Ура!

Принцип работы

Принцип прост. Пожалуй даже примитивен. Чтобы файлы загружались всегда в текущий проект, нужно:

  1. Браузерам в качестве папки загрузки подсунуть симлинк на папку текущего проекта.
  2. При смене проекта менять то куда указывает симлинк.

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

Не только загрузки

Самое смешное, что дополнительные штуки типа делалки скриншотов в текущий проект сделать оказалось очень легко, и этот функционал в программе тоже присутствует.
Полный список того что можно сделать:

  • Сделать скриншот (области или окна)
  • Сохранить адрес текущего сайта в Хроме или Сафари
  • Оставить текстовую заметку
  • Сохранить текст из буфера обмена
  • Переименовать последний файл
    Все это вызывается по хоткеям, и результат попадает в папку текущей активности.

Где посмотреть

Посмотреть можно здесь: http://nemytchenko.ru/1activity/
Гифки там немного устаревшие, но тем не менее суть объясняют достаточно наглядно.

Сценарии использования

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

1) Планирование поездок.

  • Ищешь жилье в новом городе – можно накидать понравившихся ссылок в виде файлов в папку активности
  • Купил билет – PDF-ка с подтверждением падает куда надо.
  • Хозяин квартиры прислал подробности как доехать – копируешь текст и сохраняешь буфер обмена в виде текстового файла
  • Нашел месторасположение на карте – на лету сделал скриншот

Все это (сюрприз!) синхронизируется с дропбоксом, и потом доступно на мобилке. До свидания, Эверноут!

2) Исследование по заданной теме

Скриншоты с сайтов, куски текста, ссылки, электорнные книги – все валится в одно место само собой.
Вообще часто бывает, что исследование новой темы выливается в десятки вкладок в браузере. Как я из десятков ссылок делаю одну – рассказал в отдельной статье.

3) Поготовка презентаций и статей

Картинки в Кейноут все равно приходится перетаскивать мышкой, но но крайней мере я знаю что все картинки будут лежать в одной папке

Где купить

Купить программу можно здесь:

   

Купить 1Activity

Будем на связи

Если на такой серьезный шаг вы еще не готовы, подпишитесь на новости о программе. В ближайшее время напишу несколько статей о том как 1Activity помогает быть более продуктивным, и подписавшиеся получат статьи по почте.

   
2017   Фигачу

Как я держу ум и рабочее пространство на компе в порядке. Часть 1 

Про миллиарды вкладок в браузере – “закрыть нельзя оставить”.

Мы не умеем концентрироваться на одной задаче подолгу. Предлагаю сдаться.

Мы любим переключаться между задачами. Сколько не пихай в себя Голдрата, все равно заниматься долго одной задачей скучно.

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

Иногда мозгу нужно переключиться. Что делаете вы? Кончено же, подчиняетесь. Хоп! – новая вкладка в браузере, и пошло-поехало.

Например, сегодня я искал интересные проекты для своего агенства на Upwork, чуть-чуть зазевался, и вот у меня открыто 15 новых вкладок в браузере, потому что я уже учу Clojure.

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

Оставить вкладки открытыми – Дорофеев заругает, ведь каждая вкладка – это все равно что элемент неразобранного инбокса – будет мозолить вам глаз и отъедать внимание. А еще системные ресурсы компа отъедаются. И это у меня не единственная пачка вкладок. В параллели открыт вагон других не менее важных и не менее интересных вещей.

Сконцентрироваться на новой задаче в таком окружении интересных вещей получается с трудом.

Закрывать вкладки жалко. Можно скрыть с глаз долой, но системные ресурсы все равно расходуются, да и проблема не решается, а только откладывается.

Как я решаю проблему

  1. Задаю текущий проект в 1Activity.
  2. С помощью Tab Scissors выгрызаю все вкладки в хроме по текущей теме в новое окно
  3. Жму на иконку OneTab.
  4. Кликаю на “Share as webpage” на последней партии ссылок
  5. Жму на иконку “Save webloc”, файл со ссылкой на страницу сохраняется в папку текущего проекта.
  6. Закрываю вкладки OneTab.
  7. Переключаюсь в 1Activity на другой проект
  8. Открываю каталог проекта в Finder на предмет оставшихся там с предыдущего подхода ссылок.

Результат:

  • Чистый браузер
  • Чистый от чувства вины мозг
  • Ссылки не потеряны, а лежат в папке проекта
  • Папка проекта создалась на лету, мне не пришлось отвлекаться на это

Вот смотрите, я решил разобрать еще часть бардака, и записал для вас гифку. Я гуглил про то как попасть в Toptal, уперся в прохождение тестов по алгоритмам на Сodility, помучился с ними немного, и забил. Вкладки тем не менее терять не хочется. Решил отложить их до лучших времен. Вот как это выглядит:

Часть происходящего выглядит как магия. Это от того, что многое запускается хоткеями.

Где брать добро

Плагины для хрома бесплатны:

1Activity

Ну а 1Activity – это мой тайный план по обогащению. Программа была достаточно готова уже год назад, но я изменил ей с Гитлабом, и теперь вот отдаю долги. Купить программу можно здесь:

   

Купить 1Activity

Будем на связи

Если на такой серьезный шаг вы еще не готовы, подпишитесь на новости о программе. В ближайшее время будет еще несколько статей о том как 1Activity помогает быть более продуктивным, и подписавшиеся получат статьи по почте.

   

Бонус

Чуть не забыл. Display Anchors хорош когда вы читаете какую-нибудь длинную книжку типа Brave Clojure, и вам нужно сохранить ссылку в webloc на текущее место в книге.

В HTML-разметке как правило есть якоря, но глазом их никак не увидеть. Обычно я лезу в девелоперский режим и выискиваю якорь там, но это не удобно и долго. Display Anchors делает якоря видимыми – можно кликнуть на ближайший, после этого Link Saver сохранит ссылку прямо на этот якорь, и можно будет начать с того места где закончил.

UPD:

Стоит ли городить огород?

В твиттере справедливо заметили, что это выглядит как слишком много возни для такой незначительной задачи. Можно просто ткнуть на “Bookmark all tabs” и успокоиться.

Для меня такой подход перестал работать лет 10 назад, после того как скопилось слишком много ссылок.
Закладки – еще одна сущность, с которой надо разбираться, и наводить там порядок. С файлами дело иметь привычнее. Особенно когда все по папкам проектов раскидываются автоматически не только ссылки, но и любые закачки, а так же заметки и скриншоты.

Согласен, что после этого поста осталась недосказанность:

  • непонятно что именно такого важного делает 1Activity
  • как потом разбираться с папками проектов на компе

Это окей :)
Тема обширная – раскрою её полнее в следующих постах.

UPD2: Следующий пост: Как бороться со свалкой файлов, нужна ли идеальная структура и жизненный цикл проектов

   
2017   Порядочек   Фигачу

Курс для новичков в программировании 

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

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

  1. университеты учат непонятно чему
  2. новичков никто на работу без опыта брать не хочет
  3. где брать правильный опыт – непонятно

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

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

Рабочее название курса: “Толковый программист

Животрепещущие темы внутри:

  1. Как вообще учиться программированию чтобы не было мучительно больно за бесцельно прожитые годы
  2. Обязательно ли высшее образование
  3. Нормально ли это – оставаться самоучкой
  4. Как тратить время и деньги на обучение программированию, и как не надо этого делать
  5. Как получить первую работу программистом, и когда уже пора
  6. Как отличить перспективную работу от бесперспективной

Чем полезен курс:

  1. поможет подготовиться к профессии
  2. уменьшит твой time-to-market
  3. расскажет о направлениях развития
  4. поможет выбрать перспективный способ зарабатывания денег программированием по душе

Если одним предложением попробовать описать, то это такой курс ориентировки на незнакомой местности.

Чтобы подписаться, жмите на кнопку, и оставляйте ваш email:

   

Курс рассылается автоматически. Новый урок приходит в почту каждые 3-5 дней.
Независимо от того когда вы подписались – вы ничего не пропустите.
 

Об авторе

Меня зовут Иван Немытченко.

  • Работал в ГитЛабе, руководил разработкой на Ruby в 7bits, был соучредителем веб-студии, организовывал IT-конференции, фрилансил, работал на стартап и в стартапе, работал в компаниях-интеграторах, аутсорсинговом агентстве, пробовал запускать собственные продукты
  • Закончил университет(диплом по физике), но учился зарабатывать программированием самостоятельно
  • Помогаю толковым рубистам попасть на Upwork, а не таким толковым – прокачаться через участие в онлайн-стажировке, провожу Lean Poker, периодически выступаю на конференциях
  • Умею объяснять сложные вещи простым языком. Кажись.

Я не стал техдиректором глобальной корпорации, хакером или основателем многомиллионного стартапа(пока что).
Хорошие новости в том что для этого курса это и не нужно :) У меня есть для вас более важная штука – кругозор, опыт, и желание донести это до вас.

Большинству я научился на собственных ошибках, потратив на это больше времени чем мог бы.

Цель этого курса – пройти путь от бессознательных метаний к осознанному обучению как можно скорее. Так чтобы
было понятно зачем это все и куда хочется прийти, а не просто делать то что говорят.

   
2017   Фигачу