объяснялка

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

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

К сожалению, отличить эти две ситуации в IT неспециалисту не просто.

Оценить скорость работы в IT, её объем — очень трудно.

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

> Очень классное исследование про врачей хирургов. Камеры записывали видео операций. Отличить хорошего хирурга от плохого может любой. У хорошего хирурга швы аккуратненькие, рука будто летает по полю. И пациенты выздоравливают лучше.

Почему ломается инженерная культура? Я знаю две основные причины:

1. Руководители не дают времени на наведение порядка. Вина в таком случае обычно не только на руководителе, но на и на инженере, который не смог донести важность _рефакторинга_ (это термин для наведения порядка в IT). Классический рецепт катастрофы: продакт знает, каких изменений хочет в продукте, а про технологии понимает мало, умеет убеждать; технари плохо доносят необходимость постоянных инвестиций в наведение технического порядка. Говорить с бизнесом о своей работе понятным языком — часть профессиональной компетенции программиста. 🧨 Быстрый способ: не доверять программистам, считать, что они идиоты и/или не иметь с ними диалога.
2. Технари недостаточно компетентны и оказываются погребены под сложностью монстра, которого сами соорудили. Бонус очки, если инженер имеет завышенную самооценку и/или боится признаться в ошибке.

——

Что делать?

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

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

Мой рецепт — избавиться от самых замученных и добавить «свежую кровь». Людей, которые ещё не привыкли мириться с проблемами. Людей, у которых есть четкий мандат и кредит доверия на то, чтобы привести дела в порядок.

———

Мне везло работать в компаниях, где с инженерной культурой всё ок. Сделать в Pure классно — для меня профессиональный вызов. Интересно и сложно.

Бывший главный юрист ФБР поддерживает невзламываемое шифрование! ШОК ВИДЕО (на самом деле длиннющая статья в lawfare).

Пятница вечер, все дедлайны сожжены, в воздухе висит упадок. Ловите длинный пост про шифрование и безопасность.

✻✻✻

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

iMessage, WhatsApp и Signal работают на другом принципе: переписка шифруется так, что владельцы сервисов не могут прочитать наши сообщения даже если захотят. Система можно дать сбой из-за ошибки программирования, но их исправляют при нахождении. Широкого распространения этих принципов защиты информации опасаются силовики.

Они даже страшный термин придумали — «going dark», для описания ситуации, когда из-за правильного использования шифрования правоохранители не имеют даже теоретической возможности прочитать переписку преступников.

✻✻✻

Автор статьи руководил попыткой правительства США заставить Apple разблокировать айфон убийцы из Сан-Бернардино. Та юридическая и пиар баталия с Apple прервалась, когда израильская компания взломала для ФБР айфон через ошибку в коде iOS.

Еще не придумана схема, которая одновременно надежно защищает переписку хороших людей и при этом позволяет властям выборочно вскрывать переписку потенциальных преступников. Я сомневаюсь, что такая схема вообще может существовать. Если информацию может прочитать кто-то кроме выбранного вами получателя - то рано или поздно ее получат хакеры и/или государства-противники. То есть речь идёт о сознательном компромиссе. Что для нас важнее - защита от хакеров или доступ правоохранителей при необходимости расследования?

Дополнительная сложность (будто их мало): если США законодательно запретят своим компаниям делать невзламываемое шифрование, то люди начнут пользоваться продуктами китайского и русского производства. Тогда Штаты потеряют те возможности перехвата и анализа метаданных, которые у них есть за счёт того, что большинство популярных интернет-сервисов американские и подчиняются их законам.

Автора статьи очень пугают устройства Huawei и китайские хакеры. Хорошее шифрование - единственная надёжная от них защита.

✻✻✻

Обычно, невзламываемое шифрование поддерживают хиппи, последователи киберпанка и прочие программисты. Эту же статью написал топовый американский правоохранитель. Большое дело!

Классная история и повод рассказать про взломы паролей понятным языком.

Историки взломали пароль Кена Томпсона из 1980-х! Томпсон — живая легенда (ru), создатель операционной системы Unix (предок Linux).

Дело в том, что в 1980е создатели Unix раздавали хэши (шифрованные отпечатки) своих паролей вместе с копиями операционной системы. Как так получилось?

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

Чтобы защитить пароль от утечки, мы храним не сами пароли, а их отпечатки (хэши). При попытке входа система подсчитывает хэш введённого пароля и сравнивает его с сохранённым. Хороший хэш устроен так, что по нему нельзя угадать пароль.

И все же, есть один гарантированный способ восстановить пароль зная его хэш: для этого нужно посчитать хэши всех возможных паролей. Тот, чей хэш совпал с нашим и есть искомый пароль. «Против лома нет приема», по английски - brute-force attack, по русски брутфорс или просто «перебор».

Именно отсюда происходят советы по хорошим паролям (я ненавижу формы регистрации не меньше вашего):

— не стоит использовать короткий пароль. При длине 1 для взлома нужно перебрать всего 26 вариантов (26 букв), при длине 2 вариантов — 26×26=676, при трех — уже 17 576 (26×26×26). Если у вас в пароле 8 букв — то это 208 миллиардов вариантов для перебора;
— заглавные буквы рулят! Добавление заглавных букв увеличивает число вариантов для 8 букв в 256 раз, до 53 триллионов.
— нельзя использовать как пароль слово из словаря. Слов очень мало — порядка 200 тысяч . Для перебора всех слов нужно в 800 миллионов раз меньше времени (ресурсов), чем для перебора случайных паролей длины 8.

☞ Попытки атакующих быстро перебрать много паролей и старания разработчиков сделать процесс перебора максимально долгим — одна из классических гонок вооружений. Существуют так называемые «радужные таблицы» предподсчитанных хэшей, которые существенно ускоряют процесс перебора вариантов. Для борьбы с использованием радужных таблиц придумали «соль)». ◼︎

Так вот, на прошлой неделе один энтузиаст подобрал пароль Томпсона найдя его хэш на винтажном диске — это заняло 4 дня непрерывной работы современной графической карты. Вычислительная мощь непредставимая 40 лет назад. Пароль был «p/q2-q4!», что на современный шахматный язык переводится «e2-e4» :)

🍒 Вишенка на торте — в публичную почтовую рассылку ответил сам Кен Томсон (!): «поздравляю». Через день в рассылку написал Роб Пайк — другая живая легенда: «во первых, я невольно подглядел пароль ещё в восмидесятых, а во вторых — взламывать пароли — безвкусно. Было безвкусно тогда, безвкусно и сейчас». У дедушек вечеринка 🎉

Ищете программиста? Я начинаю с того, что пишу описание вакансии, которое не стыдно показать классным кандидатам. Во время редактуры становится яснее, кто же нужен.

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

Вопросы, на которые я стараюсь ответить в тексте:
- для чего вы ищете человека
- с кем он будет работать
- кто будет пользоваться результатом его труда
- сколько вы хотите платить за работу
- есть ли какие-то особенные условия, о которых стоит знать?

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

Вот пример вакансии до и после редактуры.

Синтез речи и мимики лица по тексту, машинный перевод, чемпионство в шахматах и го, идентификация рака по рентгену точнее чем у опытных врачей — объем применений методов машинного обучения может создать иллюзию, что машины становятся умнее. Это не так. Можно натренировать стаю голубей отличать рак по рентгену в 99% случаев. Они не становятся от этого умнее.

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

Машины пока так не умеют. Задача «добраться до еды в реальном мире» слишком общая. В шахматах и даже в старкрафте речь идет о герметичной системе с довольно четкими правилами. Число возможных ходов ограничено. Вспомните пару анекдотов о смекалке. Они смешны, потому что решения часто парадоксальны и хотя понятны после озвучивания, догадаться до них «поступательным развитием» невозможно.

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

Спасибо Самеру Фатайри за наводку.

На алгоритме Диффи-Хеллмана держатся современная криптография и интернет.

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

Вот одна картинка, которая помогла мне понять принцип работы алгоритма. Перевод мой специально для мамы. Мама, ты поймешь 100%.

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

Не корите себя, если очень стараетесь понять что-то в разработке и не получается. Скорее всего, часть ответственности на учителе. Если речь о вашем разработчике — просите объяснить яснее, вы имеете право понимать.

Красноречивый наброс на скрам, мол, Agile > Scrum = 💩 и у всех прорывает.

Если вы ничего не поняли — это нормально. Фраза — практически тест на то, занимались ли бизнес-программированием в последние 5 (10?) лет.

Agile — идея (учение) о том, как правильно разрабатывать программы. Вот простой для понимания первоисточник, рекомендую: 12 заповедей (принципов) Agile (русский перевод). Оцените полет мысли, это практически госпел (понимаю, почему его так любит Герман Греф).

Я капитально упорот на идее servant leadership и работал исключительно в стартапах. Даже я чувствую иррациональный страх перед идеями Agile. Уровень страха нормальных менеджеров можно сравнить со страхом фарисеев перед идеями Христа, я думаю. Поэтому авторами Agile Manifesto был придуман SCRUM.

SCRUM — четко описанные процессы, где отдельный человек и даже продукт уже не так важны. Можно стать сертифицированным коучем SCRUM, есть курсы SCRUM, можно повесить себе шильдик «успешно внедрили и следуем СКРАМ» и т.д.

Разница между Agile и SCRUM — примерно как между учением Христа и табачным бизнесом РПЦ. Поэтому в классных компаниях ценят результат и людей, этот результат достигающих, а в стремных — «процессы». Аминь.

@pmdaily, что скажешь?

Microsoft и Sony объединят силы в создании облачной гейминговой платформе, будут вместе бороться с Google Stadia.

Microsoft и Sony — создатели и владельцы двух главных конкурирующих приставок — PlayStation и Xbox. Совместная работа — неслыханное дело.

Ох, жарко будет!

Ключевой вопрос в облачном гейминге — latency [wiki] (более узко — input lag [wiki]). Это важный в программирование, UX и управление термин, для которого я не знаю хорошего перевода на русский. Лучший аналог — время ожидания, задержка. Это время, которое игра НЕ отвечает на ваши действия.

Это время, которое проходит между нажатием на кнопку и отображением действия на экране (или звуком в динамиках, и говорят, что задержка в человеческом мозге для аудио ниже, чем для видео). Консенсус, кажется [wiki], в том, что задержка больше 200 миллисекунд (1/5 секунды) мешает играть, а задержка в 60 мс малозаметна. Средняя игра на приставке имеет задержку в 67-133 миллисекунды. Прямо сейчас мой рижский домашний интернет достукивается до ближайшего сервера гугла за 15 миллисекунд (8.8.8.8, благодаря сетевой магии этот адрес почти всегда отвечает ближайшим сервером). RTT (время туда-обратно) = 30 миллисекунд. Звучит реалистично!

Вы не поверите, но для российских игроков даже тут в дело вступает Роскомнадзор. Захотят ли Google и Sony держать эти серверы в России? Как отразятся на игре дополнительные задержки, если ближайшие серверы будут в Европе?

Возможность не покупать приставку и поиграть немножко в AAA-эксклюзивы [wiki] меня лично очень привлекает. Это как не покупать машину и кататься на Яндекс.Такси. Наконец-то!

Амнезия Гелл-Мана: «Я читаю статью в газете на тему, в которой являюсь экспертом. Журналист не знает базовых фактов и путает причину со следствием. Но стоит мне начать читать статью на тему, в которой я не разбираюсь, как я думаю, что журналист понимает, о чем он пишет».

Факт: Apple управляет стором и сам же выставляет приложения в нем; налицо конфликт интересов, который ярко проявился в случае со Spotify.

Журналистика от New York Times: «Apple Cracks Down on Apps That Fight iPhone Addiction» [Apple наступает на приложения, борющиеся с телефонной зависимостью].

Айфоны безопаснее Android потому что каждое приложение для айфона проходит ручной контроль сотрудниками Apple. Ни одна программа не может вылезти из своей «песочницы» и украсть данные или нагадить другому приложению.

С такими телефонами нельзя сделать некоторые интересные вещи, но они безопаснее и их сложнее сломать (защита от дурака).

Порой, компаниям нужно обойти эти защитные механизмы на устройствах сотрудников. Ожидается, что этим занимаются специалисты, понимающие, что они делают и зачем. Специально для них разработаны Configuration Profiles которые позволяют мониторить трафик, управлять другими программами, сбрасывать пинкод и даже удаленно очищать устройство (часть Mobile Device Management), и Developer enterprise program, в котором нет никаких ограничений на то, что будут делать программы.

Приложения «родительского контроля» из статьи NYTimes использовали эти корпоративные механизмы, получали контроль над устройствами обычных людей (детей, в том числе). Это прямое нарушение правил апстора.

Насколько я понимаю, Apple закрывали глаза на нарушения, пока у них не было адекватной замены, да и внимания к ним было мало. Потом они сделали родной Screen time (экранное время) и случился скандал с фейсбуком.

Пока Apple каленым железом выжигает такие программы из апстора — я буду рекомендовать журналистам и политическим активистам использовать айфоны.

Касперский, кстати, в марте подал жалобу на Apple в ФАС на эту же самую тему — их приложение Kaspersky Safe Kids использовало Configuration profiles для мониторинга трафика и контроля приложений, Apple потребовал это прекратить.

P.S. Хотел поделиться скриншотом своего Screen time, но открыл, ужаснулся и застыдился. Загляните в свой, можете найти много интересного.

Нашёл классный способ выбрать по одному представителю из группы в SQL.

SQL — cтруктурированный язык запросов, изначально — SEQUEL, «структурированный английский язык запросов» к базам данных родом из 1974го (да, IBM). Почти все технари и аналитики на нем описывают, какие столбцы и строки из таблиц мы хотим получить, как их отфильтровать, отсортировать и преобразовать.

В SQL мы описываем не что сделать, но какой результат мы хотим получить (декларативная парадигма программирования). Большинство программирования в мире происходит по-другому: мы перечисляем компьютеру, какие шаги нужно выполнить (императивная модель). Переключиться на другой режим мышления непросто. Порой при написании большого запроса я чувствую, что «мозги скрипят» - как при решении математической задачи.

Умение пользоваться различными парадигмами, осознанно выбирать более подходящую в данный момент — то, что отличает по-настоящему крутого специалиста. Учите SQL! В конце концов, думать над запросами просто приятно :)

Продакты и аналитики! Научитесь SQL и сможете сами, без программиста отвечать на многие вопросы про проект.

Вот четыре супер классных интерактивных курса (бесплатно без СМС): побогаче, полапидарнее, с довольно сложными задачами в конце и очень красивыми фабулами.

В мои годы таких курсов не было, так что я учился по официальной документации PostgreSQL. Это один лучших технических текстов, что я видел (хороший русский перевод).

На сладкое для заинтересованных:
- хороший туториал по написанию своей базы данных, где разобраны основные концепции на примере клона SQLite;
- доклад создателя SQLite о том, как работают базы данных (ютуб): подача так себе, но в теме чувак разбирается очень хорошо, поэтому интересно.