Времени не будет никогда

Есть много дел, которые мы откладываем на «вот я возьму отпуск/на выходных/потом как освобожусь…».
Я тоже много всего планировал, так и вот прошло 12 лет и я понимаю что многое из этого не будет сделано уже никогда. А то что сделано — было сделано совсем не в «выделенное время», а между делом. По чуть-чуть каждый день. Или просто вдруг сев и сделав, до утра, но не в «идеальное время», а в самое обычное.

По законам жанра я должен написать что же я сделал из того, что намечал, а что нет.

  • Так и не выложил все аниме-арты разных людей, когда занимался харьковским аниме-клубом. Ну и правильно наверное. Кто хотел – выложил на devianart, ещё тогда, а кто нет – ну значит и не надо было. А потом мы все выросли и это вообще стало не актуально.
  • Так и не выложил все фото аниме-клуба. Ну точнее почти все выложил. Часть только осталась на сканах. Ничего страшного, никто даже не заметил.
  • Не обновил форум аниме-клуба. Да не факт что новый движок был бы лучше как сейчас понимаю. А форумы все равно все умерли, какая разница, хорошо что не потратил время зря.

Так-так, вы скажите, ей, чувак, ну давай про работу что-то. Окей.

  • Так и не начал писать про всякие рабочие моменты в блог. Плохо. Жалею. Ну придется «наверстывать упущенное». По посту в неделю там хз, надо разбирать старьё.
  • Ага, а писать то что? Ну про новое – понятно, есть что. А старое? Чувак, ты же 10 лет в айти, тебе есть что сказать… ну это… у меня архив скайпа только на 500+ mb (да я его бережно храню). Надо многое перечитывать… с 2006 года… с архивов аськи ещё… да, я тоже их храню.

Ну работа-работа, это понятно, а жизнь, жизнь как?

  • Так и не смыл следы скотча с мебели после переезда 5 лет назад.
  • Так и не настроил все спутниковые каналы спустя 4 года с покупки тв.
  • Так и не закончил щит слаботочки в квартире

В общем хватит, ближе к сути.
Времени не будет никогда. Единственный способ, как в бизнесе — ставить задачи (самому себе) с чётким сроком, разбивая большие на мелкие, на близкие, очень близкие сроки, прямо вот среди недели. И делать. Если не получилось — переносить на чуть позже и таки делать.

Это работает.
Собственно я вначале года завёл себе список в OneNote — что надо сделать. И потихоньку делал, но это было не то.
Потом я взял гугл-календарь и просто добавил туда себе задачь из этого списка. И дело пошло.

Задачи реально стали напрягать. Одно дело абстрактно думать «когда-то я это делаю». Ага, когда-то :)
Но я стал их делать и делать быстро. Что-то откладывал, переносил, делал позже. Но делал.

Сейчас я зашёл в админку этого блога и обновил его. И плагины к нему. Обновил настройки и т.д. Это надо было сделать ещё 2 года назад.
Но идеального времени чтоб наконец закончить все висяки, всё не появлялось, да и надо же просто отдыхать. Но сделав эти задачи частью обычного распорядка дня, частью «рабочего» времени с понедельника по пятницу, дело пошло.

Критерии отсева резюме на Junior HTML

Раз в 2 года я в iDeus нанимал 1-2 Junior HTML верстальщиков. Раньше я сам просматривал все резюме, но в 2015 году кол-во откликов превысило все разумные пределы (более 150 за 2 дня!) и я решил делегировать это.

Думаю критерии отбора могут быть интересны другим:

Критерии «против» (сразу отказ):
1. Нечего смотреть:
• нет резюме
• нет примеров работ

2. Странное:
• пустое письмо с аттачем
• навязчивые звонки: «а можно к вам прийти в офис?»
• сопроводиловка вида «ничего не умею: но я проявлю себя/научите»
• частая (чаще 1 раза в год) смена работы, но тут бывают исключения

3. Невнимательные:
• резюме не открывается
• примеры работ не открываются (или открываются поломанными)

Плюсы (выделить отклик в «интересные»):
1. Есть желательные скилы: БЭМ/BEM, Sass/Scss, Grunt/Gulp в резюме
2. Есть Github-аккаунт
3. Участие/победа в профессиональных конкурсах типа UAWebChallenge, школьных олимпиадах по информатике и т.д.
4. Письмо с резюме удобно читать: примеры работ – ссылки на сайты (а не архивы), а резюме – в PDF.
5. Необычное, выделяющееся резюме (например сопроводительное письмо сверстано как html)
6. Айтишное образование: ХИРЭ, ХПИ, ХАИ + компьютерный факультет
7. Возраст до 25 (это джуниор, не забывайте!)
8. Резюме написанное живым языком, а не штампами, с описанием «что делал/что изучаю/чего добился», а не списком ключевых слов
9. Наличие увлечений

Примеры хорошего:
• Написано что кандидат изучает сейчас, что получается классно, а что хочется лучше изучить, чем ему хотелось бы заниматься на новой работе
• Информация о сделанных проектах, что делал и как, чем гордится в них
• Профиль на LinkedIn — будет плюсом
• Какие книги читал, какие блоги читает, на какие конференции ездит — это говорит о многом.

Total Commander compare by content line breaks bug

total commander synchronize directoriesОдин из моих любимых инструментов под Win – Total Commander. Особенная любовь у меня к нему за Инструменты→’Синхронизировать каталоги’, это очень удобная утилита для сверки SVN<>FTP, для поиска различий между версиями проекта в разных папках, ну в общем сами понимаете что может делать мощный инструмент синхронизации файлов с подкаталогами.

И есть в нём такой прикол-баг: когда сравниваете по содержимому файлы в ТС, он пишет про некоторые файлы что они разные, а кликаешь на сравнение их по содержимому – видишь что отличий нет. Они одинаковые по содержимому, но в них разный формат переносов строк, поэтому чуть разный размер и тотал считает их разными. А вам-то нужны только те которые по-настоящему разные!

Есть решение!

A configuration option to ignore linebreaks when synchronizing directories having text files:

  1. First check the “by content” option, then click on >>, and then choose the file types (e.g. *.txt *.htm *.html or just *).
  2. Then choose the only available compare plugin, tc -> compare as text.

Then TC checks the number of line breaks – if the 1st file size minus the number of line breaks equals the 2nd file size, TC assumes that the files are identical (differing only in the line breaks).

avast! 8 and SSL Thunderbird bug

Столкнулся с проблемой – avast! 8 не даёт получать почту по SSL. У меня Thunderbird с portable-профилем и мыло на сервере с самоподписанным сертификатом.
Пробовал пофиксить согласно рекомендаций на оффсайте: avast! 8.x: Some mail clients can show warnings that the mail server certificate is invalid when you send and receive e-mails. Непомогло.
Снимать галочку ‘Scan SSL connection’ в настройках антивируса не хотелось.

Вот что помогло:

  1. Переустановка avast! с админскими правами
  2. Удаление сертификата avast! из Options→’Advanced’→’Certificates’→’View Certificates’ с табов Authorities и Servers в Thunderbird

BEM: Откровения принявших веру

bem-ten-commandmentsВпервые о независимых блоках я услышал от Харисова на UAWeb’2008. Мы все сталкивались с проблемой каскада, и наверно многие приходили в итоге к стилям а-ля
.result .albums .album .buy
чтобы создать контекст и работать внутри него.

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

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

Вот типичный пример неправильного кода

Типичного кода, который верстальщики считали хорошим, и к которому многие приходили независимо друг от друга (жизнь вынуждала):
independent-blocks-by-cascade

Это не BEM!
Это не независимые блоки.
Я читал все статьи, все доклады по BEM, ездил на субботники, но был слеп.

Юра Ткаченко сказал мне – «старина, я вижу тут структуру, но это не АНБ, и ничего общего с ним не имеет».

Я смотрю на это сейчас и думаю – ну блин, и правда как можно не видеть очевидного!

Если просто их скопировать – они будут без конфликтов и с дефолтным оформлением элементов. Им нужно создать (скопировать) контекст. Им нужно создать вокруг них, выше, те же самые блоки с такими же классами. Если тебе нужно перенести блок на другую страницу – тебе нужно создать такие же родительские блоки. Или нафигачить кучу бессистемных multiple classes.
Тех самых, вы их прекрасно знаете:

  • тех, без которых не работает каскад ниже,
  • тех, когда никто не знает какой и зачем нужен,
  • когда не трогают старые multiple-классы потому что боятся. И пишут новые и новые, ведь нужно перебивать специфичность!
  • когда <body class="inner single-column registration thx> – это только начало, а с выходом в продакшен энтропия увеличится.

Я был из тех кто «BEM – это классная идея, но это чересчур, так категорично не надо, надо чуть по-другому, под себя…»

И уходил от базовых правил, от тех что составляют BEM.

Нет, нельзя быть немножко беременным! BEM – это большая методология с большим выбором вариантов. Там есть и light и hard, но нельзя нарушать базовые принципы, главные из которых:

  • отсутствие стилей вне блоков
  • и нигде не описанный из-за очевидности, а надо бы! – Каскад должен использоваться только для элементов, не для блоков! Максимум каскад блоку для модификации от контекста, но это лишь когда «чуть-чуть»… и (опять это нигде не говорится) – главное – когда этот блок не будет никуда копироваться второй раз. Когда не надо будет взять «вот тот блок что модифицирован от контекста и положить ещё куда-то» и да, ещё чуть-чуть поправить. И здравствуй ад.

Мне потребовался долгий путь чтоб понять что каскад зло

Когда Виталя писал про АНБ, меня аж передёргивало (как и многих поборников семантики тогда). Я написал что

но сам не понимал насколько в точку попал.
Каскад был придуман для текста, там он хорош, а для больших сайтов – это ад, каскад больших сайтов похож на то как если бы в программировании всё писалось внутри одной функции с кучей goto.

А семантика – она может быть не только в используемых элементах, но и в именах классов. И BEM-иерархия классов – это новый уровень семантики.

Моим коллегам потребовалось 2 месяца чтоб принять BEM в сердце

И ещё чуть-чуть времени для того чтоб понять суть (тут уже я сыграл роль евангелиста).

Я выдал задачу Nov 21. 2012 – верстаем новый сайт, делаем строго в АНБ-нотации, вот доки от Яндекса – читайте.
Вначале были от них слова о том что «BEM – это огромный шаг назад», что «куда меня потом возьмут, ни на одну нормальную работу не возьмут после такого», мол только и буду уметь что каждому элементу классы задавать.

Прошло 2 месяца. И с промежутком в 5 дней я получил в скайп два сообщения от ребят, которым вместе дал верстать первый проект по канонам BEM.

«Я понял, чем так хороши независимые блоки.
И надо срочно переходить всем на этот метод вёрстки, потому что у меня тут просто ад.»
— Валера, Thursday, January 17, 2013 3:23PM

«Я понимаю прелесть АНБ
с каждой правкой по %projectName% я понимаю это все больше и больше =)»
— Паша, Tuesday, January 22, 2013 2:46PM

Важно понимать что BEM – это не bem-tools.

Это основа будущей статьи на Хабр о «BEM для атеистов», где я приведу конкретные примеры, расскажу о вопросах с которыми сталкивались при внедрении, о найденный ответах, о там как поняли как же писать код, и главное – как использовать BEM в рамках аутсорс-веб-студии, у которой не один большой проект, а куча разных, совсем не связанных, на разных движках и вёрстка нужна не на сегодня и даже не на вчера, а внезапно.