Игорь Савчук - Отъявленный программист: лайфхакинг из первых рук
Сверхмобильный образ жизни и национальный бэкграунд привносят определенную специфику в мои пристрастия: подобно тому, как вино и мясо любимо французами, в Америке при ее темпе жизни полстраны сидит на энергетиках типа колы. С недавних пор по моральным причинам я присоединился к бойкоту и перестал пить Coca-Cola, вместо нее я заказываю у организаторов выступлений оригинальную Pepsi (non-diet Pepsi), которую действительно очень люблю. Я сонный по психотипу человек, и пепси позволяет немного взбодриться для более живого общения. По этой причине все виды содовых диетических напитков не оказывают на меня нужного бодрящего эффекта, хотя я и пытаюсь избегать лишнего потребления сахара, выбирая более здоровую пищу. Что касается всего остального, в быту я веду скромный и нетребовательный образ жизни, и вряд ли про меня можно сказать, что я подвержен каким-то чрезмерным излишествам, в том числе в питании.
ПослесловиеЖелая в меру своих скромных сил спародировать добрую манеру Столлмана отсылать ссылки на «графическую иллюстрацию своих взглядов, чтобы сэкономить слова», для демонстрации общей простоты и нетребовательности Р. Столлмана я также приведу ссылку на ролик под говорящим названием: «Free software activist Richard Stallman eats shit» (другой вариант названия ролика: «Столлман ест свои ноги»). [https://www.youtube.com/watch?v=Rhj8sh1uiDY] На 01:44 минуте этот известный активист, ведя публичное выступление «на босу ногу», быстрым движением руки отдирает нечто налипшее на свою ступню и не глядя отправляет «это» себе в рот. Ролик набрал почти миллион просмотров — убежден, врожденная способность привлекать к себе внимание по любому поводу — неотъемлемая черта любого успешного общественного лидера. Открытость, нетребовательность в быту и прямота Ричарда искренне подкупают и как минимум вызывают добрую улыбку даже у окончательно «испорченных жизнью коммерческих программистов» типа меня.
ГЛАВА 2. Крис Касперски — Евангелие от Мыщъха
Крис Касперски (Николай Лихачёв) — популярный российский автор компьютерной литературы на русском и английском языках по информационной безопасности и низкоуровневому программированию. Реверсер, хакер и эксперт по информационной безопасности, известный в Рунете под ником «мыщъх». Считает работу смыслом своей жизни. Хобби и увлечения — астрономия, стрельба из оружия, коллекционирование монет.
Интервью взято в 2014 году.За свою жизнь на три страны я видел вживую множество гуру из мира больших ИТ — les monstres sacres («священных монстров»). Крис Касперски, также известный как Мыщъх, стоит особняком. Известный российский реверсер, кстати, не признающий себя программистом и хакером, — один из самых популярных авторов российской компьютерной литературы (для статистики: он «заточил» около 800 статей и больше 20 книг). Все — с приставкой «бывший». Сказать, что теперь у него сложно взять интервью, — не сказать ничего. Моя первая попытка два года тому назад оборвалась на полуслове. На этот раз получилось более удачно, и когда все «эксепшены» были аккуратно расставлены, Крис закурил свои любимые гаванские сигары, и мы начали этот длинный разговор об ИТ, Америке и его бренной жизни.
РестонУ каждой профессии, как и у человека, — свой рай обетованный. Для актеров это, безусловно, Голливуд. Для компьютерщиков подобным вожделенным пристанищем стала Кремниевая долина. Сразу оговорюсь: предлагаю отойти от более традиционного русского написания «Силиконовая долина», которая в самих США ассоциируется с «порнографически раем» в Сан-Фернандо. Впрочем, кроме раскрученной в медиа Кремниевой долины, в США есть еще одно место, не менее известное у бывалых айтишников в теме, — это Рестон (штат Виргиния). Об этом небольшом городке не принято рассказывать взахлеб, а толпы программистов, работающие там, не любят бахвалиться своим местом работы. Рестон — небольшой городок, типичное захолустье. Высокая трава по колено, всего одна дорога во внешний мир, несколько провинциальных магазинов натыканы прямо среди поля. За чертой города — бескрайний лес. На фоне типичной деревенско-лесистой местности можно заметить необычные вывески — тут представлены все без исключения американские ИТ-гиганты: Intel, Microsoft, Google, Symantec, PayPal, IBM, Dell, Juniper, Citrix и т. д. Oracle здесь вообще градообразующее предприятие со своей собственной центральной улицей — Oracle way. Чем же так примечательна эта деревня? В 20 минутах езды от нее — Вашингтон, политическая столица США. Там обитают основные заказчики и кураторы многочисленных местных ИТ-проектов, которые, чаще всего, не принято обсуждать в прессе. Здесь каждый стремится урвать свой кусок от бездонного федерального пирога — и именитые ИТ-компании, и, тем более, их многочисленные рабочие лошадки — программисты. Уже более шести лет Крис Касперски — один из колоритных обитателей Рестона. Несмотря на то что знакомые, встречая его на улице, панибратски приветствуют «Привет, Иисус!», от былой публичности не осталось ни следа. После последнего развернутого интервью пять лет назад у него были проблемы с работой, и «плохие парни» грозились депортировать его из США.
Про работуЧто ты сам можешь рассказать о своей работе? Надеюсь, это не ЦРУ? Мы, конечно, не ЦРУ, но уровень секретности у нас ничуть не хуже. Не люблю секретность. Не выдержал и написал на стене маркером в знак протеста:Everything is a secret. Everybody is an enemy. A cold war inside [censored]. Насчет врагов я, конечно, погорячился, но перед отбытием на «Black Hat» (в качестве зрителя) со мной провели инструктаж, потому как там шпион на шпионе. Здесь мы подходим к той грани, где мне приходится взвешивать каждое слово, поскольку оно идет в печать. А потому давайте сойдемся на формулировке: «На данный момент работаю в крупной американской компании на должности рядового инженера, занимаясь выполнением задач, поставленных руководством». Какая у тебя специализация? Поскольку в физическом труде меня заподозрить сложно, то, вероятнее всего, основной доход дают мозги на плодородной ниве информационной безопасности (ИБ). Поковыряем немного в плотной завесе секретности. Пару лет назад было много шума, типа ты там какой-то космический софт написал? Ох уж этот пытливый русский народ, блин. Там все засекречено. Но из того, что можно рассказывать (и что уже засветилось на конференциях), так это проекты для US FAA и US Air-Force. Писал модули детекции (HIPS) для обнаружения вторжений и атак как second in charge, то есть вся ответственность на мне. Эти модули работают в закрытой сети указанных организаций, физически отрубленных от Интернета, и там даже нормальных rfc’шных протоколов нет — все какой-то левый самопал, с которым приходится работать. Это, конечно, не совсем космос, но очень-очень близко к нему. Любые атаки (инсайдеров) тут — это очень критично. Касательно космоса — писал софт для одной организации для распознавания спутниковых фотографий. Но это скучно и к космосу имеет только опосредованное отношение. Применил уже давно разрабатываемую мной идею. Какова история этой идеи распознавания? Вся история развивалась примерно так. Специализируюсь в секьюрити, и вот мне предлагают принять участие в американской государственной программе (то есть практически бесплатно) по охоте на сайты с детской порнографией. Но ловить сайты по косвенным признакам (локациям доменных имен и прочим) уже пробовали — неэффективно. И тут меня осеняет, что «распознавание образов» как общая задача, действительно, требует искусственного интеллекта и многих лет упорной работы. А вот данную частную задачу можно решить на коленке буквально в сотне строк кода, анализируя видеопоток — порно или не порно (даже если видеопоток сильно пережат). Попробовали — получилось! Очень высокая точность! В распознавании «малвари» (а это моя основная узкая специальность) и изображений на первый взгляд мало общего, но существующие антивирусы работают по тому же принципу, который может быть адаптирован и для распознавания изображений, если не спускаться на уровень алгоритмов, а мыслить абстрактными категориями. Именно за счет этого достигается возможность распознавания новой «малвари» моим методом. Другая госпрограмма США работала со спутниками, меня спросили: а нельзя ли адаптировать твою порнотехнологию для наших целей на спутники (автоматическое распознавание заданных объектов на поверхности)? Решили попробовать. Получилось. Главное требование у всех — скорость. Большого ума от распознавалки не требовали, но она должна была работать так быстро, как это только возможно. Вот три этапа эволюции одной идеи. Кстати, сейчас на эту мою технологию начал поглядывать Google. Что такого принципиально нового ты смог предложить, если этим занимаются тысячи человек по всему миру? Цвет кожи (особенно детской) имеет достаточно специфичный оттенок, который предсказуемо «корежится» при пережатии в разные цветовые пространства. Сочетание цветов половых органов также специфично. Но это мы пока говорим про то, что есть на порно. А вот то, чего на нем гарантированно нет, позволяет однозначно отсеять кучу другого контента. Обычно в качестве критерия для поиска с переменным успехом искали лишь первую часть условия. У меня же эффективность значительно увеличивается использованием второй «исключающей» составляющей. Но даже в первой составляющей у меня есть определенные ноу-хау.А вообще, основные алгоритмы были лицензированы у Кэннона и только допилены под мое видение задачи. К примеру, мой вклад — там распознается не только свет, но еще и постановка освещения. В дешевом порно она очень характерна. Например, повсеместное мигание вспышек. Кстати, в момент вспышки мы получаем истинный цвет, решая проблему баланса. Короче, это как бы не распознавание изображения в классическом понимании, а распознавание конкретного вида контента. Скорость получилась офигительная, так как выполняются тривиальные операции, которые еще и легко параллелятся. Число ложно-позитивных и ложно-негативных срабатываний получилось даже лучше, чем изначально требовал заказчик. Да, кстати, вирусы у меня распознаются примерно так же. Тот же самый принцип в точности. Ищем в вирусах нечто такое, что встречается в них, но гарантированно отсутствует в остальных программах. Как я понял, твой успех был отчасти в том, что все пытались найти общее универсальное решение и впоследствии увязали в нарастающей сложности. Ты же решил узкоспециализированную задачу, зато смог это сделать эффективно и быстро. Немного отвлекаясь от основной темы, здесь мы снова возвращаемся к любимому тобой спору вокруг назначения языков C и C++. Каждый конкретный язык определяет мышление, хотим мы того или нет. Так вот, постоянно сталкиваюсь с тем, что «плюсовики» тяготеют к решениям в общем виде, в то время как «сишники» решают задачу в частном виде, что в разы быстрее. Одну текущую задачу сначала показали «плюсовику», спросив, сколько займет ее решение. Он сказал: «Здесь нужно писать могучий движок. Короче говоря, это проект на полгода». Его коллега-«сишник» поинтересовался: «А зачем?» Ведь поставленная задача укладывается в сотню строк кода! Ответ был ошеломляющим: «Ну и что, мы так и будем по сотне строк кода писать для решения частных задач, каждый раз, как они возникают?»