Ctrl + ↑ Позднее

С днем рождения меня!

Если кто-то скажет что на дворе не 37-ой год, я теперь имею право не согласиться — у меня как раз он самый. Щас будет минутка саморефлексии, а потом я расскажу как вы можете меня поздравить, если словами выразить свою радость за меня у вас не получается :)

Рефлексия

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

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

Проекты

Наделана куча всего:

  • strftime.guru — определялка формата для strftime — бесплатно
  • TabSqueeze — замена хром-экстешну OneTab — бесплатно

Про все то же самое, но поподробнее↓

Главное:

  • Книжка Painless Rails — о том как фигачить на рельсах без боли. Самый главный мой текущий проект. Пишется на английском по мотивам подхода к рельсоразработке Кирилла Мокевнина — одного из самых крутых программистов и учителей в рунете. Хоть рельсы в 2018 — это уже не хайп, но в рельсосообществе до сих пор не решена проблема единого годного подхода к разработке на Рельсах. Всех колбасит, все страдают, но продолжают жрать кактус, потому-что лучше рельс все-равно ничего нет ? Этот подход решает кучу рельсопроблем, и если у вас пригорает побаливает, то это то что доктор прописал.
  • Курс по GitLab CI. Если вы все еще думаете, что GitLab — это такой аналог гитхаба или битбакета, то у меня нет слов для того чтобы выразить как сильно вы ошибаетесь. Гитлаб — это нечто гораздо более мощное. Через несколько лет он просто сметет всех и станет новым стандартом. Если хотите оседлать следующий большой тренд, то лучше начинать тратить время (и деньги) на его изучение сейчас. Курс делался в полуcекретном режиме силами меня и моей жены(иллюстрации). В комплекте идет и Gitlab Fan. Как доведу Painless Rails до ума, буду добавлять уроки к этому курсу, благо материала навалом.

Второстепенное:

  • 1Activity — утилита для macOS, помогающая справиться с бардаком в папке Downloads. GUI-часть запрограммирована Иваном Новохатским, за что ему огромное спасибо. Пока проект на паузе,
  • Толковый программист — (пока бесплатная) рассылка для начинающих программистов чтобы меньше тупить.
  • Курс по бродуктивности — Почти серьезный мини-курс про эффективную работу с браузером.
  • Hamdown — идея скрестить Haml и Markdown. Если бы такая штука была готова, удалось сделать работу над курсами и книжкой чуточку эффективней. Надеюсь запилить в ближайшие полгода.

Лучшие проекты сделанные в рамках стажировки:

  • strftime.guru — Лучшая в своем роде тулза для угадывания формата strftime по образцу типа «17 December 2016, 14:44» — сделан совместно с Кириллом Звоновым
  • TabSqueeze — Экстеншн для Хрома как OneTab, только лучше — сделан совместно с Максимом Топчу

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

До связи!

2018   Фигачу

Релиз 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 помогает быть более продуктивным, и подписавшиеся получат статьи по почте.

Ctrl + ↓ Ранее