объяснялка

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

Я в этой связи вспоминаю, как правительство США пыталось запретить публичное распространение криптографии, которую они не могли взломать.

Правительство классифицировало стойкие алгоритмы как вооружение и запрещало их экспорт.

Например, в середине 90-х, было две разных версии браузера Netscape: одна с нормальным 128-битным шифрованием, доступная только в США и Канаде, а остальной мир должен был довольствоваться 40-битным шифрованием.

Активисты, которые боролись с этим безумием, в числе прочего, распространяли алгоритмы и даже исходники RSA и PGP в виде книги. Потому что книги защищены первой поправкой к конституции США о свободе слова.

Вот активистская футболка тех времен, с алгоритмом RSA и крупным предупреждением «эта футболка классифицируется как вооружение и не может быть экспортирована из США или показана иностранцу».

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

Современный реактивный двигатель — настоящее произведение искусства, рукотворное чудо нашей цивилизации. Это как пройти мимо Мона-Лизы.

А потом сижу в кресле и чувствую, как эта махина толкает нас вперед с такой силой, что мы взлетаем.

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

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

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

Ради такого и работаем! Новый эпизод на всех платформах и на ютубе: https://youtu.be/yNAeKVG7rIQ

В контексте падения облаков, чем они лучше/хуже собственного железа?

Можно подумать, что я буду сейчас писать про отказоустойчивость. На самом деле, если ваш проект будет лежать, когда лежит весь GCP или AWS, — то для 99% проектов это абсолютно нормально, такие события происходят раз в несколько лет и длятся не больше пары часов. Мы ведь не кислородными масками управляем, верно?

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

И вообще, у многих проектов нет даже регулярных бэкапов баз данных, а регулярно тестируют план восстановления в случае аварии основного сервера вообще единицы (не спрашивайте, не расстраивайте вашего сисадмина).

Главное преимущество облаков в сравнении с «реальными серверами» — возможность быстро масштабироваться, то есть сегодня у тебя один сервер обрабатывает 1000 пользователей, завтра проект завирусился на миллионы, и ты за пару минут запускаешь десятки, сотни серверов.

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

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

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

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

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

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

А если вдруг ваши счета за облака станут заметными, — то во-первых, поздравляю, это значит у вас есть пользователи! Во-вторых, переехать на свое железо в эти дни проще, чем когда-либо.

Пример: классно наблюдать, как последние 3 года создатель важного фреймворка Ruby on Rails и культовой системы управления проектами Basecamp Дэвид Хейнемейер Ханссон (DHH) планомерно перевозит свои продукты с миллионами пользователей из облаков на собственные серверы.

Они объявили о планах выхода из Амазоновского облака AWS ещё в октябре 2022. На тот момент, они платили за Амазону 1,5 млн долларов в год! Для начала, они купили себе физических серверов на полмиллиона долларов (всего треть годового чека за облака!)

В июне 2023 объявили об успешном перевозе всех вычислений, а недавно купили специализированное железо для хранения данных и мае наконец перевезли хранилище файлов из AWS S3.

Другой яркий пример, с которым я сталкивался лично, — это стоимость трафика для медиа-проектов. Трафик в облаках для популярного медиа может стоить десятки тысяч долларов, и такой же объем можно обработать десятком арендованных серверов по 40 баксов каждый. Экономия в 100 раз. Но это всё имеет смысл только на масштабе. Так выпьем же за то, чтобы было на чем экономить!

Опора для коллег

Важная функция руководителя — быть опорой для коллег. Когда прод лежит, а сроки горят — тимлид должен приносить в команду спокойствие, а не тревогу. Когда прибыль падает, и CEO топчет ногами — COO должен поддерживать коллег, а не грозить всех уволить. Когда инвесторы отказываются от раунда, CEO должен верить в будущее, а не пропадать из офиса с бутылкой.

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

Самое сложное в том, что надо не просто демонстрировать спокойствие и искриться улыбкой, а действительно быть таким внутри, иначе люди быстро распознают хуйню и станет только хуже. Это довольно сложная работа — чтобы выполнять её в собственных бизнесах, мне понадобилось 10 лет ежедневного руководства командами и 5 лет психотерапии. До сих пор есть, куда расти.

Мой идеал спокойствия — Людвиг Быстроновский, арт-директор, с которым я когда-то давно работал в студии. Судя по его рассказам (посмотрите его цикл лекций о шторме) — человек довольно взрывной внутри. Несмотря на это, всегда когда у меня случался полный пиздец (а в клиентской работе полные пиздецы случаются раз в неделю), если на проекте был Людвиг — я успокаивался гораздо быстрее. Он не применял никаких специальных инструментов — просто спокойно разговаривал о проблемах. Наверное это работало где-то на уровне химии и языка тела, не знаю. Часто мне даже не надо было с ним разговаривать — я садился писать ему письмо и, даже не дописав, понимал что делать. Сейчас я стараюсь быть таким же для своих коллег — давать уверенность и спокойствие, что бы ни происходило в бизнесе.

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

Доменам .io ничего не грозит в ближайшие 5 лет. Не поддавайтесь панике!

Произошло следующее: Великобритания пообещала вернуть архипелаг Чагос в индийском океане Маврикию.

В результате квази-государственное образование под названием «Британская Территория в Индийском Океане» прекратит свое существование, а вместе с ней на покой отправится и ее доменная зона .io. Но бояться нечего.

После того, как передача состоится (а точной даты еще нет), произойдет цепочка технических событий: международная организация стандартизация ISO обновит свой список кодов государств ISO 3166 — именно там определен код IO, после чего вступит в действие регламент администрации адресного пространства интернета IANA (она отвечает в том числе за домены), согласно которому прекратится регистрация новых адресов в этой зоне. В правилах указано, что по умолчанию существующие домены должны работать еще 5 лет. При потребности регистратор может продлить этот срок до 10 лет.

При этом, учитывая то, что в этой зоне зарегистрированы многие популярные сайты, её вообще могут сделать исключением и сохранить навечно. В конце-концов, доменная зона .su работает до сих пор.

Подробная и довольно увлекательная статья об этом на английском — тут.

Меня зовут Самат, мне 35 лет и пару месяцев назад я научился точить ножи.

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

Оказывается, это легко, быстро и дешево. Схема следующая:

1. Покупаешь на амазоне или алиэкспрессе «алмазный точильный камень». На самом деле это не камень, а супер плоская железка, на которую нанесен тонкий слой алмазной крошки. Отличается тем, что не нуждается в особом уходе и живет практически вечно. Бывает разной агрессивности — нам нужна 200/400 — это грубая поверхность, которая съедает металл очень быстро. Стоит 20 баксов.

2. Ставишь нож на камень и выставляешь угол, на который будешь точить нож — можно с помощью пирамидки, которая идет в комплекте, можно тупо палец подставить. Важно не менять этот угол в процессе заточки, для этого фиксируешь запястье, а ещё лучше двигаться всем телом, зафиксировав руку целиком. Водишь ножом по камню туда-обратно, сильно не давишь. Камень съедает метал ножа. Проведя ножом по камню 5-10 раз, можно почувствовать, что с обратной стороны ножа, по всей его режущей кромке появляется заусенец. Увидеть его без лупы нельзя, а вот почувствовать пальцем — легко. Главное вести пальцами не вдоль кромки ножа, а поперек — не то палец порежете.

3. Теперь поворачиваем нож другой стороной и повторяем операцию. После того, как и с первой стороны появился заусенец — поздравляю, мы выставили режущую поверхность (на второй стороне заусенца уже нет — его съел камень). В этот момент нож супер острый — можно проверить это, разрезав им листок бумаги или даже волос (можно побрить волосы на руках, магия:)

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

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

6. После этого хорошо бы заполировать достижение повторением всей процедуры на коже, покрытой пастой ГОИ — получается как наждачная бумага, только супер мелкая и гибкая. Она позволяет убрать остатки заусенцев. Кожа, закрепленная на деревяшке и паста к ней стоят ещё долларов 20.

7. Всё, у нас супер острый нож, который долго не будет тупиться.

Никакой магии, никакого секретного знания, передающегося из поколения в поколение.

Первый раз это у меня заняло час. Теперь — пару минут. И это медитативный процесс, но не потому, что занимает часы, а потому что сразу виден результат труда — очень приятно.

Всему этому я научился у простого американского парня Outdoors55. Вот 5-минутное (!) видео, где кроме наглядной демонстрации процесса, автор показывает чудеса макро-съемки, демонстрируя тупой нож, заусенец, процесс его удаления и получившуюся режущую кромку ножа крупным планом.

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

Вот за таких авторов я люблю интернет.

Что отличает хорошие команды разработки от плохих?

Единого правильного ответа нет — команда это инструмент решения задач бизнеса и каждой задаче свой инструмент. А еще это вопрос ценностей.

Для меня в разработке важны два принципа, из которых можно вывести все остальное:

1. Заинтересованность в конечном результате. Способность и настроенность не «работу делать», а «получать результат, двигаться к результату». Не путать с горящими глазами! Восторженность не обязательна, но безразличие опасно.

2. Предсказуемость. Раньше я называл это «способность выполнять обещания», и это простой критерий, но как и любую формальную метрику его можно обмануть — например, не давать обещаний. И очень уж фонит трудным детством в казанских кварталах: «пацан слово дал» и вот это все. Предсказуемость включает в себя выполнение данных обещаний, но еще и прозрачность, проактивное обсуждение возникающих трудностей (а они точно будут), формирование реалистичных ожиданий.

А что для вас главное в разработке? Интересно, будут ли отличаться ответы разработчиков и продактов, бизнеса? Пишите пожалуйста в чатик @ctodailychat или в личку @samatg

Как незаметно ускоряется интернет или история с цифровыми полтергейстами.

Случайно наткнулся на то, что теперь сайты открываются не только по IP-адресам, указанным в A и AAAA записях, но и по адресам, указанным в SVCB-записях в DNS.

Это новый тип DNS записи (type 65), при наличии которой, свежие браузеры (Safari, например) сразу открывают сайт по https, а точнее — по QUICK, причем используют ключ шифрования из DNS. Такая схема работы ускоряет первое открытие сайтов на существенные десятки, если не сотни миллисекунд (а также сильно мешает Роскомнадзору) и Cloudflare уже публикует эту запись для всех своих клиентов (рекомендую их объяснение протокола, RFC не простой).

Обнаружил я это, когда пытался заблокировать себе некоторые сайты на компьютере, чтобы не заходить на них бездумно. Обычно я заношу их в /etc/hosts, а тут для некоторых сайтов именно в Сафари это не работало. Похоже на историю с полтергейстами, но к счастью, после некоторого поиска нашелся ответ на StackOverflow, который расставил всё по местам и напомнил об SVCB.

Для меня это ещё одно доказательство того, что не-профильные части бизнеса стоит делегировать профессионалам. Мало кто из «обычных админов» сайтов использует эти новые протоколы — все ведь работает и по-старинке. А если используешь Cloudflare для хостинга сайтов — то получаешь все эти десятки, если не сотни довольно неочевидных оптимизации в комплекте. Примерно как когда заказываешь у нас разработку.

Ах да, если хотите заблокировать себе какие-то сайты на компьютере под маком — то рекомендую Little Snitch Mini — это прекрасная утилита, которая показывает, к каким сайтам подключаются программы на вашем компьютере и позволяет блокировать их одним кликом (1,5 евро в месяц). Аналог под Windows — NetLimiter.

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

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

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

Для обоих систем доступны два основных метода интеграции:

1) Попроще, когда вы вставляете их формочку на сайт или в приложение буквально добавлением одной строки в код, с возможностью немного менять цвета;

2) Посложнее, когда интеграция требует бо́льшего программирования, но и возможностей для кастомизации формы на порядок больше.

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

Отдельное внимание обратите на защиту от фрода. Незащищенные платежные формы используют кардеры для проверки ворованных реквизитов банковских карт. Владельцы ворованных карт могут потребовать вернуть их деньги через свой банк, и за каждый такой возврат (chargeback) вас оштрафуют на 15 долларов. Можно попасть на сотни и даже на тысячи долларов.

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

Есть сотни узкоспециализированных провайдеров, которые лучше подойдут при большом числе транзакций, если у вас какой-то особенный бизнес (знакомства, например) или необходимо принимать физические карты, но это уже совсем другая история 💸

«Простота — это великая добродетель, но она требует напряженной работы, чтобы её достичь и образование, чтобы оценить. И к сожалению, сложность продается легче.» — Дейкстра.

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

Кажется, что раз решение сложное — то в него вложено больше труда и значит оно должно быть лучше.

Это, конечно, не так. Процитирую Паскаля: «если бы у меня было больше времени, я бы написал письмо покороче».

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

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

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