Игорь Луканин

Игорь Луканин

Темы
Неделя
Jul 5, 2021 → Jul 12, 2021

Архив недели @igorlukanin

Понедельник


Всем привет! 🤘 На этой неделе ваши твиттер-приёмники захватил я, Игорь Луканин @igorlukanin. Я работаю developer advocate в Cube.js @thecubejs, занимаюсь growth & DX и вставляю английские слова в русский текст. Подробнее обо мне: youtube.com/watch?v=3W40tB…

До Cube.js я недолго работал в JUG Ru Group @jugrugroup (и не успел испортить вашу любимую конференцию @HolyJSconf) и долго — в Контуре @konturtech, где вместе с @tenebricosa сделал лучшую в России команду, которая умеет говорить с разработчиками на их языке (change_my_mind.png)

Отдельной строчкой похвастаюсь, что в прошлом году я со-организовал совершенно космический (pun intended) 72-часовой контест @icfpcontest2020, о котором пару недель назад рассказывала Вероника @aminopyridin. Мы ещё к нему вернёмся!

Так что, если я однажды я наступил вам на ногу на конференции, задел чувства докладом или постом, либо если мы знакомы по любому другому поводу — передавайте приветы в реплаях 🧑‍🌾

🙀 О чём будем говорить на неделе? — Разработка опенсорсного продукта и почему вредно добавлять ".js" в его название — Как пандемия испортила Сан-Франциско, который вы видели в фильме Дудя про Долину — Почему финансовая независимость — это 🔥 (FIRE)

— Зачем участвовать в 72-часовом ICFP Contest 2021, если мелатонина и так не хватает — Как попасть на Байконур или мыс Канаверал и посмотреть на запуск ракеты-другой — (пора идти на митинг, потом допишу)

🔥Тред (Игорь Луканин)
Начнём с Cube.js и опенсорса! Cube.js — это API layer for data apps, который подключается к любым базам данных и без лишних церемоний даёт вам API, который можно встроить в приложение и дёргать с фронта. Даже если хочется 100 RPS, а в базе 10 миллиардов строк

Внутри мало магии, но много кода, который вы не захотите писать и поддерживать: генерация и выполнение SQL-запросов, несколько уровней кэширования, собственная супер-производительная база данных, REST API и клиенты для трёх фреймворков (прости, Svelte): github.com/cube-js/cube.js

Мой любимый публичный пример приложения, сделанного с помощью Cube.js — это корейский nftbank.ai. Всё метрики, графики и прочие визуализации данных, которые там есть, получают данные из Cube.js API.
notion image

А вообще у нас в Слаке slack.cube.dev тусят разработчики из Apple, Ericsson, Intel, Intuit, PayPal, Walmart, а также сотен небольших стартапов и компаний с менее громкими названиями, вроде Sveriges Television или ИТ-департамента штата Техас

Хотя аудитория у Cube.js глобальная и пользователи со всего мира, всегда приятно увидеть в Слаке русскоязычное имя или компанию. Уважаемые знатоки, внимание на экран, первый опрос:
🤔 77.2% Впервые слышу о Cube.js
🤔 22.1% Слышал о Cube.js
🤔 0.7% Использую Cube.js

С одной стороны, у Cube.js почти 11 тысяч звёзд на GitHub, с другой стороны — о нём нет ни слова по-русски. Удивлюсь, если второй вариант наберёт больше 5 % 😅

🔥Тред (Игорь Луканин)
@jsunderhood youtu.be/YcpYmPOTq98
Точно! Дима Пацура @ovrweb, который уступает первое место по коммитам в Cube.js только нашему CTO, недавно рассказывал о Cube.js в видео-подкасте «Цинковый прод». Внимание, 18+ 🚨 twitter.com/AntonOkolelov/…

Да, ещё в прошлом году был выпуск подкаста DevZen, уже без всяких новомодных скрин-шерингов: devzen.ru/episode-0310/

А кроме этого, на русском языке есть только статья в Forbes, ценная для любителей истории: forbes.ru/tehnologii/411…

@jsunderhood Какое у него преимущество перед graphql? Он делает схожый функционал, но о нем хотя бы люди слышали.
GraphQL vs. Cube.js! Отличный вопрос, ждал его 😅 Формально, сравнивать нельзя, потому что GraphQL — язык запросов и спека, а Cube.js — продукт. С какой реализацией GraphQL сравнивать? 🤷‍♀️ Вообще, в Cube.js может появиться поддержка GraphQL, почему нет: github.com/cube-js/cube.j… twitter.com/NikErmRnd/stat…

А если менее формально, то отличия такие: 🚀 Cube.js сделан быстрым из коробки; Cube.js, низкая latency и высокая concurrency — это синонимы 📊 Cube.js не подходит для CRUD; он даёт API только для чтения и ожидает, что вы будете выполнять аналитические запросы

Что такое «аналитические запросы»? Если не цитировать статьи про OLAP-кубы и multidimensional analysis из Википедии, то это такие запросы, где вас интересуют метрики (суммы, средние, перцентили) и где есть группировки, в том числе по времени

Если нужно написать движок для блога, то берите GraphQL-сервер, чтобы получать список постов и сами посты. А также берите Cube.js, чтобы показать самых активных комментаторов, графики просмотров постов и счётчики лайков

Вот несколько демо-приложений, использующих Cube.js, чтобы доставлять данные на фронт: hacktoberfest.cube.dev, react-pivot-table-demo.cube.dev, bigquery-public-datasets-demo.cube.dev/#Russia

🔥Тред (Игорь Луканин)
@jsunderhood Какое у него преимущество перед graphql? Он делает схожый функционал, но о нем хотя бы люди слышали.
Вообще не ожидал, что примерно 25 % из вас слышали о Cube.js! Одна четвертая от популярности GraphQL, неплохо! 😱twitter.com/jsunderhood/st… twitter.com/NikErmRnd/stat…

@jsunderhood Сервер понятно. А чего клиент так дофига весит? bundlephobia.com/package/@cubej… bundlephobia.com/package/@cubej…
Что мы узнаём из этого твита про Cube.js, а что — про Bundlephobia: 🏋️‍♀️ Клиентская библиотека Cube.js может добавить в ваш бандл пару десятков килобайт кода 💣 Bundlephobia зачем-то пугает размером UMD-билда 💣 Bundlephobia не учитывает, что вы обязательно сделаете tree shaking twitter.com/subzey/status/…

Что мы не узнаём: ⁉️ Сколько должна весить библиотека-стройняшка ⁉️ Чем всё таки смотреть размеры пакетов, чтобы не делать выводы по размеру UMD-билда

У нас ведь опенсорс, верно? Вообще не откажемся от PR с github.com/ai/size-limit от @andrey_sitnik 🤗

@jsunderhood Узнал о Cube.js on @ovrweb. И что у вас огромная кодовая база на js, которую вы постепенно начали мигрировать на TS.
О да, год назад я сам не ожидал увидеть кодовую базу ТАКОГО РАЗМЕРА на кристально чистом JS. Это было очень бодрящее ощущение! А потом началось: @ovrweb смигрировал и добавил кучу кода на TS, в ту же монорепу положили базу данных на Rust... twitter.com/malafeev_en/st…

Иной день уже и не знаешь, в github.com/trending/ по какому из языков появится Cube.js. Последний раз это был как раз Rust

Идёт борьба не на жизнь, а на смерть!
notion image

Картинка в тему от @ovrweb из внутреннего Слака:
notion image

🔥Тред (Игорь Луканин)

Вторник


@jsunderhood Немного нескромный вопрос: а как Cube.js зарабатывает?
Мы делаем второй продукт, Cube Cloud, и рассчитываем, что часть пользователей Cube.js воспользуется им для разработки, хостинга, масштабирования и мониторинга приложений на Cube.js. Это облако, которая облегчает разработку и избавляет от необходимости поддерживать инфраструктуру twitter.com/myjsalterego/s…

Внимательный читатель спросит — а какой инфраструктуры? Несмотря на то, что вы можете запустить Cube.js локально через npx или, что лучше, через Docker, в продакшене Cube.js запускают и масштабируют как несколько микросервисов (минимум пять + Redis)
notion image

Но ещё до продакшна Cube Cloud может облегчить разработку. Пример: так же, как вы деплоите превью-билды сайта на Netlify, вы можете запустить столько превью-версий Cube.js API, сколько нужно. Где-то секунды по 3 на новую версию API

Посмотрите демку, не зря же я её записал!
notion image

Мы делаем второй продукт, Cube Cloud, и рассчитываем, что часть пользователей Cube.js воспользуется им для разработки, хостинга, масштабирования и мониторинга приложений на Cube.js. Это облако, которая облегчает разработку и избавляет от необходимости поддерживать инфраструктуру twitter.com/myjsalterego/s…
Какие ещё продукты с открытым кодом зарабатывают на облачных платформах для хостинга приложений? Давайте составим список! Кто ответит MongoDB и Atlas, пусть приготовится к вопросу, насколько опенсорсна лицензия SSPL 👹 twitter.com/jsunderhood/st…

Сейчас Cube Cloud в закрытом бета-тестировании — мы сами выбрали компании, которые его используют, и работаем над тем, чтобы у них был безупречный опыт. Для всех разработчиков Cube Cloud станет доступен осенью и, разумеется, там будет щедрый бесплатный план

🔥Тред (Игорь Луканин)
Что ещё отвечают на вопрос «откуда деньги, чтобы писать масштабный опенсорс»? За Cube.js стоит компания Cube Dev — американский стартап, в который поверили и инвестировали деньги американские венчурные фонды

Например, фонд BCV, который до этого поверил и инвестировал в SendGrid, Redis, Gradle, Hazelcast и другие компании, которые делают инструменты для разработчиков. Приятное соседство! baincapitalventures.com/portfolio/?sec…

Вот анонс нашего прошлогоднего раунда на TechCrunch: techcrunch.com/2020/09/29/cub…

Что ещё отвечают на вопрос «откуда деньги, чтобы писать масштабный опенсорс»? За Cube.js стоит компания Cube Dev — американский стартап, в который поверили и инвестировали деньги американские венчурные фонды
Больше всего меня мотивируют слова одного из со-основателей нашего стартапа: «У нас больше денег, чем времени, чтобы добиться успеха» 🙀 twitter.com/jsunderhood/st…

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

Хотите испытать на себе?
🤔 24.5% Хочу в компанию поменьше
🤔 17.0% Хочу в компанию побольше
🤔 33.5% Мне и сейчас комфортно
🤔 25.0% Уже ничего не хочу

I tried to run the same SQL report in Mode and in the BI tool I built with @thecubejs. It’s 96 lines of SQL. Results return 180k rows. Mode took 1.5h before I just closed the window, Cube took ~35 seconds. A materialized view could have sped up Mode by a lot—but still, wow.
Производительность — это когда ты укладываешься в 35 секунд против полутора часов twitter.com/benjaminsehl/s…

@jsunderhood Для ленивых значит. И перформанс хороший. Ох уж эти сказочники..
К. О. врывается в чат: любой инструмент, от каменных орудий приматов до софта из категории developer tools, увеличивает продуктивность своих пользователей и перераспределяет их время twitter.com/vesti_s_polej/…

@jsunderhood Зато в корпорации не надо жопу рвать. У вас как переработки оплачиваются?
Интересно, что такое «переработка» в мире удалённой и асинхронной работы? twitter.com/unetwarm/statu…

@basvasilich Цель стартапа — не просто расти, а быстро расти. Есть много причин: со временем меняется рынок, привычки аудитории и мотивация команды, развиваются конкуренты; фонды хотят возврата инвестиций в предсказуемые сроки, а не «когда-нибудь».
Краткое введение в стартапы и венчурные инвестиции 💵 twitter.com/jsunderhood/st…

Примерно в этой статье в конце я говорю именно об этом: habr.com/ru/post/435878/ twitter.com/jsunderhood/st…
Почему большая часть софта из категории developer tools, который вы встраиваете в свои продукты, является опенсорсным? (Спойлер: из-за нас, разработчиков.) twitter.com/reinforced_sc/…

Мы, разработчики, не рискуем без веских причин использовать в своих продуктах инструменты с закрытым кодом. (Если вы недавно выбрали Oracle вместо Postgres и вас удерживают силой, подмигните.)

Мы часто готовы стерпеть это для инструментов, которые не встраиваем (например, Postman) и для облачных сервисов (например, npmjs.org). Но встроить в продукт что-то с закрытым кодом???

А если компания, разработчики, мейнтейнеры или марсиане (pun intended) перестанут разрабатывать такой инструмент и фиксить в нём баги???11 🙀 Тут-то открытый код и поможет! Найдутся люди и компании, которые поддержат. А ещё мы сами починим баг и пришлём PR

Это абсолютно валидные рассуждения, и это одна из сильнейших причин, по которой компании даже не думают сейчас о том, чтобы выпускать developer tools с закрытым кодом

Поэтому мы пользуемся developer tools с открытым кодом, а компании выбирают из двух моделей монетизации — open core или SaaS: en.wikipedia.org/wiki/Business_…

Опрос! «Я разрабатываю продукт, который зависит...»
🤔 10.2% От облачного сервиса
🤔 4.7% От тула с закрытым кодом
🤔 29.7% От тула с открытым кодом
🤔 55.5% От воли божьей

🔥Тред (Игорь Луканин)

Среда


Опрос! «Я разрабатываю продукт, который зависит...»
Любопытные результаты! Практически у всех билды сбилдятся и деплои задеплоятся при недоступности npmjs.org, GitHub и Docker Hub? 😅 twitter.com/jsunderhood/st…

Всем привет! 🤘 На этой неделе ваши твиттер-приёмники захватил я, Игорь Луканин @igorlukanin. Я работаю developer advocate в Cube.js @thecubejs, занимаюсь growth & DX и вставляю английские слова в русский текст. Подробнее обо мне: youtube.com/watch?v=3W40tB…
Пора рассказать, чем я занимаюсь в Cube.js @thecubejs — и переходить к другим темам! 🐢 Что такое «growth & DX» и под каким номером это проходит в МКБ-11? twitter.com/jsunderhood/st…

Cube.js — опенсорсный продукт, который можно найти на GitHub и без затей им воспользоваться. Как многие догадались — или знают на своём опыте — «можно» даже близко не значит «так и будет»

А как посчитать, сколько разработчиков знают о продукте? Глобальную популярность сложно измерить напрямую, но количество звёзд на GitHub — это очень хорошая прокси-метрика для глобальной популярности

Сейчас у Cube.js примерно 11 тысяч звезд. Невероятно, но на всём GitHub меньше 2000 продуктов у которых столько же или больше! А теперь поищите «stars:>20000» — и вы неприятно удивитесь: github.com/search?q=stars…

Если хотите улучшить настроение и напомнить себе, что фронтенд доминирует, перепроверьте, что в первой десятке всё ещё @vuejs, @reactjs и @getbootstrap

Когда со-основатели Cube.js два года назад выложили его код на GitHub, один продолжил программировать, а другой стал добиваться, чтобы о Cube.js узнали. Например, писал «программные» статьи и раскладывал их по укромным уголкам интернета: cube.dev/blog/design-de…

А вот один из ранних запусков на Product Hunt: producthunt.com/posts/cube-js (На этом месте пора вставить карандаш в кассету и быстро перемотать на два года.)

🚀 Growth. Моя команда помогает новым разработчикам узнать о Cube.js и решить свои задачи с его помощью. В основном мы добиваемся этого через контент-маркетинг — не триггеритесь на слово «маркетинг», лучше подумайте, что такое «контент» 😉

Иногда это длинный туториал, помогающий решить практическую задачу («как нарисовать сводную таблицу с помощью AG Grid, если у меня React?»), где, как в «Ёлках» Бекмамбетова, внезапно появляется Cube.js: dev.to/cubejs/react-p…

Иногда это такой же длинный туториал, скорее расширяющий кругозор и удовлетворяющий любопытство («Какие такие публичные датасеты про ковид и что там написано?»): dev.to/cubejs/using-b…

Иногда это публикация в стиле «Обзор Х в 202Х» году — но знали бы вы, НАСКОЛЬКО такой контент популярен. Отличный пример от @NKakuev: cube.dev/blog/dataviz-e…

А иногда это целый сайт («Как выбрать библиотеку для визуализации данных?»), полезный для сообщества и экосистемы вокруг Cube.js: awesome.cube.dev

Понятно, что бывают и доклады на митапах или конференциях: perconaliveonline.sched.com/event/io7y/low…

Хотя какие это доклады, даже по сцене не пройтись, как в старые добрые...
notion image
notion image

Другой способ помочь росту Cube.js — приносить пользу опенсорсным продуктам, которые используют вместе с Cube.js. Да-да, мы коммитим в другие опенсорсные продукты, потому что нам и нашим пользователям от этого будет лучше

Кул стори! Весна 2021 года, у самой популярной в мире библиотеки для рисования графиков (Chart.js) выходит новая мажорная версия, а мейнтейнер её враппера для самого популярного в мире фреймворка (React) уже не очень тратит время на его разработку. Кровь, кишки, форки... 😰

Может быть, это не был бы второй leftpad, но сотни тысяч разработчиков призадумались бы при переезде со второй версии Chart.js на третью. Однако приходит @Leonid_frontend из моей команды, переписывает враппер, релизит новую версию, уезжает в закат 😎

👩‍💻 DX, это который developer experience. Согласитесь, было бы нелепо рассказывать разработчикам о Cube.js, если бы пользоваться им было сложно и неудобно. (Сомневаетесь? Похоже вы рекламировали товары, которых не купить в «чёрную пятницу».)

Моя команда бережно присматривает за всеми каналами, куда могут прийти разработчики с вопросами о Cube.js. Прежде всего за Slack, Stack Overflow и GitHub. Отвечаем, пишем примеры кода, советуем, поддерживаем морально 🤗

Сейчас в slack.cube.dev больше 3500 разработчиков, и знали бы вы, какое это счастье. Это бесконечный поток фидбека, который можно использовать для улучшения продукта. (Не закрывайтесь от своих пользователей, будьте ближе к ним.)

Моя команда превращает фидбек в идеи и предложения по улучшению Cube.js, с которыми сможет работать продуктовая команда. Если фичи просто нет, предложим обходной путь и напишем пример кода

🔥Тред (Игорь Луканин)
Другой способ помочь росту Cube.js — приносить пользу опенсорсным продуктам, которые используют вместе с Cube.js. Да-да, мы коммитим в другие опенсорсные продукты, потому что нам и нашим пользователям от этого будет лучше
Хотите коммитить в фронтенд-опенсорс фулл-тайм в моей команде? Напишите мне на igor@cube.dev 🙃 twitter.com/jsunderhood/st…

Четверг


Пора в Екатеринбург на @icfpcontest2021! Это будет незабываемый контест, и вам обязательно нужно поучаствовать 😇
notion image

Завтра расскажу, зачем и почему, а пока запишите в календарь даты (пятница -> понедельник) и почитайте статью @xoposhiy, 12-кратного участника и однократного со-организатора (в прошлом году): habr.com/ru/company/skb…


🙀 О чём будем говорить на неделе? — Разработка опенсорсного продукта и почему вредно добавлять ".js" в его название — Как пандемия испортила Сан-Франциско, который вы видели в фильме Дудя про Долину — Почему финансовая независимость — это 🔥 (FIRE)
А что не так с ".js" в названии продукта? Всё хорошо, но в дикой природе наблюдаются два спецэффекта 😬 twitter.com/jsunderhood/st…

Обновляли сайт и проверяли, как его понимают пользователи. Многие, увидев ".js" и графики, считали, что перед ними ещё одна библиотека для визуализации данных. А мы, на секундочку, делаем API и агностицизм по отношению к визуализации данных — одна из наших главных фичей

Общались с пользователями из компаний с высокой нагрузкой. Многие, увидев ".js", были заранее скептически настроены по отношению к производительности. А это, на секундочку, одна из главных фичей

В общем, убрали мы ".js" с сайта. Тем более, что уже четверть кодовой базы на Rust и будет только больше 🙃

🔥Тред (Игорь Луканин)
🚀 Growth. Моя команда помогает новым разработчикам узнать о Cube.js и решить свои задачи с его помощью. В основном мы добиваемся этого через контент-маркетинг — не триггеритесь на слово «маркетинг», лучше подумайте, что такое «контент» 😉
А вы едите корм своей собаки? Разумеется, все просмотры контента, конверсии и воронки тщательно записаны и показаны в приложении, написанном на Cube.js 😎 twitter.com/jsunderhood/st…

Пора в Екатеринбург на @icfpcontest2021! Это будет незабываемый контест, и вам обязательно нужно поучаствовать 😇 pic.twitter.com/7HqL2pIq7x
Итак, что такое ICFP Programming Contest? А что такое ICFP, зачем вообще программистам соревнования, не лучше ли полежать на диване ⁉️ twitter.com/jsunderhood/st…

International Conference on Functional Programming — международная конфа по функциональному программированию. Там не объясняют, как делать reduce с промисами, а рассуждают о будущем языков программирования. Лет через 15 оно придёт в наши языки, главное к тому времени не выгореть

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

ICFP Contest — это командное (зови своих бро и сис) соревнование на 72 часа (будет время и подумать, и покодить, и — ха-ха! — поспать). Главная особенность: каждый год задания разные и никто не знает, что будет в очередном году. Полная неизвестность и бездна

We welcome new people joining ICFP Programming Contest this year and all seasoned participants as well. Let's pause for a second and recall the joy of ICFP Contests 1998 thru 2019 🎉 This year's website is worth looking at too: icfpcontest2020.github.io/#/ pic.twitter.com/LcKLERD4YH
Вот, почитайте, о чём были контесты с 1998 по 2019. Разгибание оригами? Гексагональный тетрис в мире Лавкрафта?? Виртуальная машина упавшего на Землю инопланетянина??? twitter.com/icfpcontest202…

Начало контеста обычно выглядит так: несколько тысяч разработчиков рефрешат страницу контеста, судорожно скачивают PDF-ку страниц на 40, начинают читать. Слышны вскрики прозрения, прерываемые стонами осознания, что не всё так просто. Через час начинаются робкие попытки писать код

Пятница


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

Почему многие участвуют в ICFP Contest несколько лет подряд? Потому что адреналиновые наркоманы. Это очень лёгкий и приятный способ за 72 часа получить столько эмоций, что хватает на следующий год — и ещё остаётся

Какие наши доказательства? Вот несколько фотографий в жанре «нерд-вечеринка» с моих прошлых контестов:
notion image
notion image
notion image
notion image

«Ну дак ваще, зарешали?!» — я ж говорю, адреналин так и хлещет 🦸
notion image

А вот как выглядят интерфейсы, который мы собираем на коленке во время контеста. Во-первых, это 2D- или 3D-визуализаторы, чтобы понимать, что вообще делают наши алгоритмы. Можно написать с нуля:
notion image

Можно пройтись напильником и захачить визуализатор от организаторов. Вот сюда @nanot1m впилил паузу, перемотку и ещё примерно половину проигрывателя из YouTube, чтобы остальным в команде было полегче:
notion image

Во-вторых, это дашборды со статистикой, чтобы понимать, сколько заданий решили, какая версия алгоритма лучше других, обгоняем ли соперников (нет)
notion image
notion image
notion image
notion image

Посмотрим, что я сделаю в этом году для своей команды. Фронтендер так фронтендер, тоже профессия! 🙃
notion image

🔥Тред (Игорь Луканин)
Во-вторых, это дашборды со статистикой, чтобы понимать, сколько заданий решили, какая версия алгоритма лучше других, обгоняем ли соперников (нет) pic.twitter.com/dzKFd9NR4l
Если ваш алгоритм называется не fast-parallel-deep-walk-2-False v1, у вас нет шансов. (Ох, сколько шуток было в том году про «глубокого волка».) twitter.com/jsunderhood/st…

А в прошлом году я не участвовал в ICFP Contest... потому что я его со-организовывал! 😎

Минутка самолюбования: в разные годы ICFP Contest организовывали команды из MIT, Harvard, Oxford, Microsoft Research, а в прошлом году, внезапно, ребята из @konturtech, где-то in the middle of the Urals en.wikipedia.org/wiki/ICFP_Prog…

Как так вышло? Сейчас будет очень важный лайфхак: ЗА СПРОС НЕ БЬЮТ В НОС. Мы каждый год, после каждого контеста, писали емейлы: «А дайте нам организовать!!1» Два года назад нам ответили и дали организовать контест людям не из академии, а из индустрии. Это, конечно, было ошибкой

Знали бы вы, как сильны традиции в ICFP Contest. Не раскрывать задание до начала, выдавать его в виде 40-страничной PDF-ки, общаться с участниками в IRC, принимать решения в ZIP-архиве с бинарниками или верстать сайт контеста таблицами — это норма!

В прошлом году мы решили пошатнуть статус-кво. Во-первых, у нас был JetBrains Mono и эмоджи на сайте! icfpcontest2020.github.io/#/

Во-вторых, мы придумали и разыграли за две недели до контеста предысторию об уральском астрономе Иване Зайцеве @ivanzaitsev85, который выращивает петунии на балконе, но внезапно получил сигналы из космоса youtube.com/watch?v=EjL-5E…

Hi folks. We've prepared a great contest for you! However its not as exciting as what's happening to our friend Ivan Zaitsev. So we're throwing out what we've prepared for the contest and asking you to focus on helping Ivan. We'll put this on the contest website soon
В-третьих, у нас не было 40-страничной PDF-ки с заданием. Хуже того, у нас вообще не было задания. В начале контеста мы объявили, что никакого задания не будет, и мы просим всех помочь Ивану Зайцеву расшифровать инопланетные сигналы twitter.com/icfpcontest202…

Сигналы были декодированы в виде нескольких десятков монохромных картинок, но что с ними делать — никто не знал: message-from-space.readthedocs.io/en/latest/cond…
notion image
notion image
notion image
notion image

Участники были в ярости. Если не все, то многие. Тут надо отдельно сказать, что мы хорошенько постарались с рекламой контеста. В нём участвовало 500 команд со всего мира, это где-то 1500-2000 человек

Но мы знаем, что такое сострадание, поэтому вместо IRC мы собрали участников в Discord. Вот где была жизнь и бурлили эмоции!
notion image
notion image
notion image

Примерно через 4 часа все сообщения были коллективно декодированы, получилась кое-какая спецификация задания и участники начали кодить. Кажется, эти несколько часов стоили нам примерно половины команд

Thank you! 🥰 With substantial help of early adopters, we've battle-tested the submission system and prepared starter kits for 20+ languages (including Clojure, Factor, Elixir, Haskell, Common Lisp, OCaml, R, and Crystal): github.com/icfpcontest202…
Какие ещё были инновации? Мы сделали заготовки кода на 20+ языках и принимали решения ПО ПУШУ В РЕПОЗИТОРИЙ вместо бинарников в ZIP-архивах twitter.com/icfpcontest202…

Во время контеста мы регулировали сложность для «средней команды». То алгоритм-подсказку на несуществующем языке программирования опубликуем, то серию видеоуроков на YouTube youtube.com/watch?v=Jfd20w…

Tournament TV of ICFP Contest 2020 is live! twitch.tv/icfpcontest2020 pic.twitter.com/5rgr4dXX39
Когда команды научились сражаться друг с другом, летая вокруг квадратной планеты, мы запустили Twitch-трансляцию сражений! Во-первых, это весело. Во-вторых, можно было шпионить и реверс-инжинирить поведение соперников twitter.com/icfpcontest202…

А когда контест закончился, записали выбивающее слезу видео и попрощались с участниками youtube.com/watch?v=O_14Oc…

Позже мы ещё по фану сделали 3D-визуализации финальных сражений между победителями youtube.com/watch?v=s8fMN5…

А через месяц после контеста выступили на @icfp_conference и рассказали, как всё прошло youtube.com/watch?v=iL8Q0u…

The task-specification for #ICFPC2020 (icfpcontest2020.github.io/#/post/2048) is itself so complicated that I think I'll end up just trying to decode what is the problem that has to be solved here. 😕 I wish we had the simpler task-specifications of yore.😞 #ICFPC #Programming #Aliens
А теперь слово участникам! twitter.com/rmathew4tw/sta…

#ICFPC2020 это старый добрый ICFPC. 15 часов с начала контеста, а я всё ещё ничего не понял.

First 48 hours of #ICFPC2020 pic.twitter.com/yWQ6E98cE2

Выбираем стратегию из «работает тупо» и «тупо не работает» #ICFPC2020

Боремся с переполнением стека увеличением стека #ICFPC2020

Изобрели структуру данных «как бы дерево» #ICFPC2020

#icfpc2020 - an insane 6 in 1 combo for the same price (72h) 😱: quests in VM (2006), decoding images (2007), orbital mechanics (2009), de-obfuscation (2010), lambda calculus (2011), controlling multiple bots (2018). We only got to AI part 🚀🛸 at T-12h..

🔥Тред (Игорь Луканин)
Для меня — да и, скорее всего, для всей команды — организация @icfpcontest2020 была самым большим в жизни вложением сил в волонтёрскую активность. Мы коллективно потратили несколько человеко-лет, но всё таки сделали свою «вмятину во вселенной»

Как так вышло? Сейчас будет очень важный лайфхак: ЗА СПРОС НЕ БЬЮТ В НОС. Мы каждый год, после каждого контеста, писали емейлы: «А дайте нам организовать!!1» Два года назад нам ответили и дали организовать контест людям не из академии, а из индустрии. Это, конечно, было ошибкой
А всё началось с обычного желания не просто поучаствовать в контесте, а сделать лучше. Да, раньше организовывали всякие MIT и Microsoft Research, но вдруг и у нас будет шанс? twitter.com/jsunderhood/st…

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

Если эта нехитрая схема «хватай шанс и пробуй» вдохновит хоть кого-нибудь на что-нибудь, я буду очень рад. (Ещё надеюсь, Эминем не засудит меня за плагиат Lose Yourself.)

А если вы почитали это всё и попробуете сегодня поучаствовать в @icfpcontest2021 — моей радости не будет предела
🤔 4.5% Участвую
🤔 63.6% Не участвую
🤔 31.8% Я и так уже супер-стар

🔥Тред (Игорь Луканин)
А если вы почитали это всё и попробуете сегодня поучаствовать в @icfpcontest2021 — моей радости не будет предела
А если не будете участвовать в @icfpcontest2021, то всё равно никуда от него не денетесь 😂 Я придумал минимум два способа пошатнуть статус-кво этого коллективного аккаунта! twitter.com/jsunderhood/st…

Ещё не поздно высказать всё, что вы об этом думаете:
🤔 18.2% 😀
🤔 45.5% 😱
🤔 36.4% 🤬

🙀 О чём будем говорить на неделе? — Разработка опенсорсного продукта и почему вредно добавлять ".js" в его название — Как пандемия испортила Сан-Франциско, который вы видели в фильме Дудя про Долину — Почему финансовая независимость — это 🔥 (FIRE)
Отстаю от графика! twitter.com/jsunderhood/st…

О чём говорим дальше?
🤔 31.8% Сан-Франциско в пандемию
🤔 54.5% Инвестиции и FIRE
🤔 13.6% Ракеты и космодромы

🤑 Финансовая независимость, инвестиции и движение FIRE. Начну с самого лучшего вопроса: «Кем вы себя видите через 5 лет?» 😂 Ну правда, у вас есть план на жизнь?
🤔 4.4% На всю жизнь
🤔 10.3% На 10 лет
🤔 32.8% На два года
🤔 52.6% Дед, прими таблетки

Для меня удивительно, что у половины нет вообще никакого плана. «Алису в стране чудес» читали? — Скажите, пожалуйста, куда мне отсюда идти? — А куда ты хочешь попасть? — ответил Кот. — Мне все равно, — сказала Алиса. — Тогда всё равно, куда идти, — заметил @bunopus 🐱

@jsunderhood Я в России живу. Какой план? Я похож на буржуя?
«Не жили богато, нечего и начинать» — это тоже план. Но если он вас куда-то приведёт, то только случайно twitter.com/unetwarm/statu…

Зачем планировать, если всё равно не получится выполнить план на все 142 %? Если вы считаете это аргументом, то я надеюсь, что вы не применяете его, когда архитектурите системы и пишете код

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

Причём тут деньги и финансовая независимость? Я родился в 1989 году и красочно помню, как делил редкий сникерс на 12 частей. Сейчас мои небогатые родители — пенсионеры далеко за МКАД, и я на их примере вижу, что на государство, особенно российское, полагаться не могу

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

Здоровье и капитал — это ресурсы, которые обеспечат вам будущее. Пропустим спорт и книгу о здоровой и вкусной пище, перейдём сразу к деньгам. Так что такое «движение FIRE»?

Financial independence, retire early — это две цели: не зависеть финансово от других людей или от работы по найму; иметь возможность заниматься тем, чем хочешь. Самый понятный способ добиться FIRE — иметь пассивный доход. Например, очень часто — от инвестиций в ценные бумаги

🔥Тред (Игорь Луканин)

Понедельник


@jsunderhood расскажи про свое распределение активов или в целом про свою инвестиционную стратегию
💵 Первый шаг на пути к финансовой независимости — не тратить больше, чем зарабатываете. Если у вас «не сходятся концы с концами», нужно пересмотреть доходы и расходы. Так как этот аккаунт для айтишников, оставим за фигурной скобкой вариант, когда дохода недостаточно для жизни twitter.com/i_told_ya/stat…

Мне помогает планирование: я знаю, какие расходы у меня обязательные (например, заплатить за квартиру или подписку на GitHub), а какие — важные (например, подарки себе или путешествия). Это избавляет от внезапных расходов, ведь вы уже запланировали всё важное

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

Я накапливаю и инвестирую минимум 35 % дохода уже несколько лет подряд. За это время мой доход вырос в несколько раз, а привычка — одна и та же

Накапливайте в той валюте, в которой планируете тратить. Это называется «не брать страновые риски». Меня не вдохновляет график курса рубля к доллару, поэтому рублёвых накоплений у меня нет

Дальше придётся научиться инвестировать и «опережать инфляцию». Что это значит? Если сегодня вы купили яблоко за 100 рублей, а рублевая инфляция 10 % в год, то через год вы заплатите за то же яблоко 110 рублей. А если 100 рублей пролежали год под подушкой, вы стали на 10 % беднее

Чулок, подушка, а также банковские вклады и депозиты, как правило, не обгоняют инфляцию. Это означает, что придётся инвестировать в ценные бумаги: облигации, акции, фонды. Историческая долларовая инфляция — 2 %, а доходность американского рынка акций — около 8 %. Подходит!

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

Например, в середине и конце 2020 году куча начинающих инвесторов пришла на фондовый рынок, как в России, так и в других странах. Экономика восстанавливалась после пандемии и почти получили двузначную доходность в процентах. Легко посчитать себя гуру-инвестором на пустом месте

Старайтесь всегда быть более осторожными, чем хочется. Вы не в казино, а обеспечиваете своё будущее. Накопите и инвестируйте первый миллион рублей, потом второй. Дальше обойдётесь без советов. Двигайтесь шаг за шагом! 🐢
notion image

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

Знаете, какой кайф видеть, как вам «просто так» приходят деньги и ваш капитал растёт? А потом вы увидите, что этот рост со временем ускоряется, и сможете посчитать, когда ваш пассивный доход и терпение сделают вас финансово независимыми

😬 Всё это звучит сложно, непонятно и вызывает дискомфорт? Да, понимаю. Учить TypeScript, наверно, было так же. Но какая альтернатива? Не думать об этом, чтобы оно «как-нибудь само»? На кону будущее и благополучие самого дорогого для вас человека — вас самих. Позаботьтесь о себе

🔥Тред (Игорь Луканин)
@Dmitry1228 @jsunderhood От «простого накопления» этот концепт отличается тем, что предлагает инвестировать в активы с положительной на длинном промежутке реальной доходностью (т.е. сверх инфляции). Норму сбережения (скорость достижения цели) каждый выбирает сам.
Вы и ваша битва против инфляции длиной в жизнь 🥊 twitter.com/qbit86/status/…

@Dmitry1228 @jsunderhood согласно правилу 4%, вам нужно накопить и инвестировать 25 годовых окладов
Если хотите разобраться, о каких 4 % говорит этот господин, почитайте Инвестопедию: investopedia.com/terms/f/four-p… twitter.com/i_told_ya/stat…

Кстати, отличная штука! Когда пойдёте работать в стартап и вам предложат «долю в компании», тоже почитайте, там интересно и неожиданно: investopedia.com/terms/e/eso.asp

@qbit86 @jsunderhood Т.е. от простого накопления этот концепт отличается тем, что проповедует сокращать все расходы до уровня прожиточного минимума. Чтобы быстрее начать жить на уровне этого минимума без обязательств перед условным работодателем. Так?
Если слова «сокращать расходы» звучат для вас как что-то плохое, вот другой способ думать об этом. Ваши расходы и уровень счастья связаны нелинейно. Второе растёт медленнее второго. Тру стори 💯 twitter.com/Dmitry1228/sta…

Для меня удивительно, что у половины нет вообще никакого плана. «Алису в стране чудес» читали? — Скажите, пожалуйста, куда мне отсюда идти? — А куда ты хочешь попасть? — ответил Кот. — Мне все равно, — сказала Алиса. — Тогда всё равно, куда идти, — заметил @bunopus 🐱
Хочу посоветовать книжку про планы на жизнь и тайм-менеджмент, изданную в 1974 году: «Даниил Гранин — Эта странная жизнь». В Советском союзе писали про тайм-менеджмент, когда это ещё не было модно! twitter.com/jsunderhood/st…

Журналист Гранин рассказывает историю учёного Александра Любищева, который спланировал свою жизнь и придерживался плана больше 50 лет. Там «всё не так однозначно», но меня каждый раз вдохновляет, как читаю

🚀👩‍🚀 Одно из моих хобби — интересоваться освоением космоса. Давайте быстро расскажу, как посмотреть на запуск ракеты. Раньше это было очень просто, теперь из-за пандемии посложнее, но это временно. Зачем? Потому что это интересно!

Легче всего попасть на Байконур в Казахстане и в Kennedy Space Center в США. Гуглите «туры на Байконур» — я ездил с ребятами, у которых слово «космодром» в доменном имени. Чтобы попасть на мыс Канаверал, покупайте билет на сайте KSC Visitor Complex

Увидите что-то такое: instagram.com/p/BkTShCLHIbM

Вот ещё несколько фоточек для привлечения внимания:
notion image
notion image
notion image
notion image

Вот подкаст, где я рассказывал про поездки на космодромы: beardycast.com/podcast/tbbt/t…

Хотел в этом году попасть на Байконур на запуск модуля МКС «Наука» на очень красивой ракете «Протон» — но из-за пандемии космодром закрыли для туристов. Возможно, это будет последний запуск «Протона» 😬

А ещё планирую попасть на запуск Falcon Heavy от SpaceX, когда возвращаются на землю три ускорителя первой ступени! Надо успевать, а то Маск доведёт до ума Starship и выведет Falcon Heavy из эксплуатации 🙂

Вот вам ещё мой доклад про космос и жизнь разработчиков — и будем считать, что про ракеты я рассказал: youtube.com/watch?v=Bne_3r…

🔥Тред (Игорь Луканин)
Пора рассказать, чем я занимаюсь в Cube.js @thecubejs — и переходить к другим темам! 🐢 Что такое «growth & DX» и под каким номером это проходит в МКБ-11? twitter.com/jsunderhood/st…
Тред тредов на неделе @igorlukanin: — что такое Cube.js: twitter.com/jsunderhood/st… — Cube.js или GraphQL: twitter.com/jsunderhood/st… — почему developer tools выкладывают в open source: twitter.com/jsunderhood/st… — маркетинг и developer experience в Cube.js: twitter.com/jsunderhood/st…

А в прошлом году я не участвовал в ICFP Contest... потому что я его со-организовывал! 😎
— время и деньги в технологических стартапах: twitter.com/jsunderhood/st… — соревнования для программистов и участие в ICFP Contest: twitter.com/jsunderhood/st… — организация ICFP Contest: twitter.com/jsunderhood/st…

🚀👩‍🚀 Одно из моих хобби — интересоваться освоением космоса. Давайте быстро расскажу, как посмотреть на запуск ракеты. Раньше это было очень просто, теперь из-за пандемии посложнее, но это временно. Зачем? Потому что это интересно!
— планы на жизнь и финансовая независимость: twitter.com/jsunderhood/st… — первые шаги к финансовой независимости: twitter.com/jsunderhood/st… — как увидеть запуск ракеты: twitter.com/jsunderhood/st…

Ну что ж, пока! 🤘 С вами был @igorlukanin из @thecubejs — и я надеюсь, что это была необычная неделя 🥱😉 Напишите мне фидбек в реплаях, интересно же!

Ссылки