Есть у меня один pet-проект - GeoPuzzle. Вот настоящий чемодан без ручки - и закрыть жалко, всё-таки 10k человек в месяц играют, и развивать времени нет. А ещё он постоянно ломается. Нет, не из-за кода, а из-за новых внешних ограничений.
Изначально там были гуглокарты - с ключиком, всё красиво. Но внезапно оказалось, что при ~5k человек в месяц лимиты в $200 на карты заканчиваются. Ну ладно, отключаем ключик и показываем карты в режиме разработчика.
В этом году я репостил статью как дышать, а не задыхаться. Там была интересная мысль про то, как заставлять себя делать больше. Всё очень просто - публично пообещайте что-то сделать к определённому времени. Я попробовал и поставил над собой эксперимент длиной 8 месяцев. О результатах и выводах далее чуть подробнее.
Начало 🔗Итак, в чём состоял эксперимент? Я захотел проверить на сколько хватит моих сил - физических и моральных. Но по итогу выяснилось, что есть ещё и коммуникативные.
Это было интересное время, которое никогда больше не повторится. То время, когда интернет раздавали по талонамкарточкам, и берегли каждую минуту в сети. Самым популярным сайтом для меня тогда был локальный форум http://forums.kuban.ru, где обсуждали вообще всё. И незаменимой была программа Teleport Pro, которая скачивала локально в фоне страницы, чтобы можно было их почитать спокойно в оффлайне. Там я познакомился с программистом из Уралсиба, который был для меня гейм-дилером. Он мне давал копировать диски с интересными играми: Baldur’s Gate, Neverhood, Петька…
В последнее время в моём инфополе появилось много шума вокруг нового типа интерпретатора в Python: tail-calling. Я посмотрел PR на Github, из которого понял, что [[clang::musttail]] должен ускорить рантайм на 5%.
Ещё я почитал Соболева, но понял только то, что эта инструкция генерирует вызов метода в asm-коде как jmp, а не call, то есть экономит один стэк-фрейм — посмотреть можно тут. Но почему эти инструкции в данном случае эквивалентны и сработают в CPython — непонятно.
Волею судеб я снова стал ходить на собеседования, и хочу поделиться некоторыми наблюдениями. На этот раз речь про энтерпрайзные компании, в которых должен быть выстроен процесс найма.
Скрининг 🔗Всё начинает с него, и тех-скрининг становится нормой. Рекрутер прям на первом звонке задаёт каверзные вопросы и сверяется со шпаргалкой. Например:
как остановить контейнер? неизменяемые типы данных в python? какой pid у ядра linux? как расшифровывается CAP и PACELC? … Тинькофф пошёл ещё дальше и создал целую платформу с небольшими кусками кода, который можно запускать.
Прошёл следующий курс на Skillbox, который называется “Основы генетики”. Если честно, то немного разочарован. Нет на мой взгляд самого интересного: генной инженерии, CRISPR/CAS9, расшифровки ДНК, сборки вакцины от COVID и т.п. С другой стороны он именно что про основы. Если вы не прогуливали биологию в школе и хоть как-то следите за генетикой, то найдёте для себя мало нового. Тем не менее, что я узнал:
пол у других животных может быть абсолютно по-разному спроектирован (Y-хромосома не обязательно отвечает за мужской) при кодировании мРНК репликация идёт только от 5’ к 3’ основаниям понимание статистики в генетике крайне необходимо как устроен горизонтальный перенос генов между бактериями и растениями мне интересно больше изучение генотипа и микробиологии, нежели фенотипа Из плюсов хочется отметить хорошо сделанные слайды и, пожалуй, раскрытие темы основ генетики.
За свои 15+ лет в разработке я понял, что чуть ли не половина времени уходит на коммуникацию. И хотя в основном я работаю в IDE, общения всё равно достаточно много. Дейли, груминги и прочие scrum-ритуалы; выяснение требований у заказчика; обсуждение MR и архитектуры… Просто обратите внимание сколько времени вы пишете код, а сколько общаетесь с коллегами.
В распределённой команде коммуникация становится в несколько раз сложнее. Там нет встреч у кулера, общих обедов, курилок и т.
Пользуясь возможностью, стал проходить курсы Skillbox. В первую очередь для общего развития, и начал с истории. Мне интересна эта наука, потому что позволяет понять почему что-то появилось в нашей жизни именно в таком виде; что повлияло и какие были предпосылки. Это даёт представление как о границах применимости инструмента или понятия, так и о его актуальности. Возможно, наша жизнь настолько изменилась, что пора бы уже этот атавизм и отбросить.
Начал с курса “Мир Страдающего Средневековья”.
Просто добавляйте по одному слову… 🔗То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать.
По мотивам моего доклада на PyCon “Контейнеризация Python без боли”. На своей практике я постоянно сталкиваюсь со спорами какой базовый образ лучше использовать для проектов: alpine или debian. Аргументы есть и у той, и у другой стороны, но мне это настолько надоело, что я решил сам разобраться и наконец-то поставить точку. В конце концов “В наше время верить нельзя никому, даже себе. Но мне - можно.” (с)
Сравниваем базовые образы alpine и debian 🔗Перед тем, как мы перейдём к специфике запуска python-проектов под alpine, давайте заглянем под капот базовых образов и сравним что они нам предлагают.