.и в продакшен – Telegram
.и в продакшен
2.48K subscribers
9 photos
3 videos
107 links
Фаундер-технарь - канал основателя www.jitbit.com, Alexander Yumashev @jitbit

Как быть CTO/CEO одновременно, как растить bootstrapped-стартапы и прочая айтишечка.
Download Telegram
​​DHH изобрел <asp:UpdatePanel>
https://hotwire.dev/

Ден Абрамов пошел еще дальше и изобрел PHP:
https://reactjs.org/blog/2020/12/21/data-fetching-with-react-server-components.html

Шутки в сторону - я ужасно рад обоим новостям, маятник несется обратно к server-side рендерингу.
Вчерашний скандал в российском фейсбуке напомнил...

У нас была похожая история: фейсбук забанил наш домен и доступ к АПИ. Ничего пошарить нельзя, старые посты, комментарии и любые ссылки - удалены. Сработал какой-то модераторский machine learning. И наш безобидный SaaS-сайт, который раз в месяц пукает в фейсбук скучным постом с двумя лайками, вдруг пометился суровым клеймом "violating community standards".

Мы особо не парились, ибо от ФБ не зависим, но все-таки неприятно. А самый ужас в том, что связаться с Фейсбуком вообще нельзя. Никак. Каналы фидбэка просто отсутствуют.

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

Теперь самое интересное:

Есть компании, которые продают услугу «свяжем с живым человеком в ФБ».

Стоит это от 500 баксов. Просто завести тикет в поддержку. Как правило, это американские SMM-агентства, которые ведут жирных клиентов с большими бюджетами и за это ФБ выделяет им отдельного менеджера. И из всего этого они слепили такой полу-легальный сайд-продукт.

После такой апелляции через "медиатора" сайт, конечно, моментально разбанили. И подтвердили что глюканула ML - скорее всего потому, что была атака - ботнетом накликали абьюзов.

К чему я это все: если ваш бизнес целиком построен на piggybacking'е какой-то одной платформы - его легко за одну ночь превратить в тыкву.

Иногда случайно - этим летом, например, ютуб-боты заблокировали NASA-ролик запуска ракеты Falcon-9 потому что "обнаружили" в нем контент National Geographic

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

Так или иначе, вас могут закрыть.

Такая вот коррупция в век машинлернинга и блокчейна...

Same old shit: "правительства", "преступники", карательные органы и индустрия "помогаек", которые берутся "решить вопрос" за 500 долларов. Где-то я все это уже видел :) Все-таки раса гуманоидов обречена.
Извините, я на минутку.

Если вот такой запрос тупит:

SELECT ... WHERE Column=X OR AnotherColumn=Y

То вот такой будет летать:

SELECT ... WHERE Column=X
UNION ALL
SELECT ... WHERE AnotherColumn=Y

(но помните про дубли)

Тут, конечно, не канал про SQL и дазы банных. Но очень хотелось напомнить.

P.S. И вообще. Если у вас взрослая датабаза с дохреллионами записей - старайтесь без "OR" (анлесс у вас хорошо подобраны индексы именно под них). Особенно если этот "OR" относится к разным колонкам. Или вообще к разным таблицам внутри джойна. А если там еще и не простое "A=B", а всякие вычисления и "больше-меньше"... Планировщик не может адекватно оценить estimated rows, а это всегда заканчивается table scan/index scan (вместо index seek).
Ого, кажется, в новом MacBook Pro... НЕ БУДЕТ ТАЧБАРА! Господи, неужели. Перелезать, что-ли, обратно на Мак?

Также обещают вернуть MagSafe (!!) и сделать "прямоугольные" края (как у iPhone 12 и iPad Pro).

Ну и, конечно, M1.

https://9to5mac.com/2021/01/14/kuo-details-2021-macbook-pro-new-design-with-squared-off-sides-magsafe-connector-and-io-return-touch-bar-removed/
Кажется, это лучший пост про "делайте скучно и надежно", что я видел.

Software development topics I've changed my mind on after 6 years in the industry

Кратко, четко и 100% попадание по всем пунктам.
Неправильные бизнес-книги, которые учат молодежь полной херне:

Питер Тиль, "Zero to One".

Проповедует революционность, инновационность и прочую "..ционность". Про умение заметить выигрышную идею, "перевернуть мир", "изменить будущее"... Ну и тд

Не верьте. Предпринимательство - это не про изобретение революционных велосипедов в вакууме, а про incremental changes и экспериментирование.

Ким Чен "Blue Ocean Strategy"

Если бы мне давали доллар каждый раз, когда стартапщики или VC-шники начинают бубнить про "голубые" и "красные" океаны...

Забудьте про океаны. Завоевание "голубого океана" - это долго, дорого и рискованно. Да и неспроста он голубой - скорее всего там просто нечего жрать. Ищите "розовые" океаны - там где уже есть доказанный спрос и тренд, но при этом есть underserved клиенты.

Уолтер Айзексон "Стив Джобс"
Джеффри Янг "iКона"
и вообще любая книга про SJ

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

Нет ничего хуже начальника-дибила, который решил, что он Стив Джобс.

Сунь-цзы "Искусство войны"

Популярна среди CEO-биохакеров и смузи-инвесторов с раздутым эго. В свое время было очень модно пробросить в разговоре "А вы читали Art of War? -О даааа, а вы? -О дааааа, и мы!"

Дальше разговор особо не клеился, ибо никто не мог внятно сказать, чем именно ему помог трактат о ведении боевых действий в Китае 2500-летней давности. Но очень хочется побыть императором.

Тут как со Стивом Джобсом - читать познавательно и жутко интересно, главное не применять на практике в отрыве от контекста. Луис Фелипе Сколари выиграл ЧМ 2002 не потому, что читал The Art Of War.

Саймон Сенек "Start with Why"

Вот Саймон вроде умный, а книга говно. Очередная романтизация техно-миллиардеров и попытка объяснить их успех задним числом.

Нельзя делать системные выводы, наблюдая аномалии

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

Прежде чем "менять мир" попробуйте выйти хотя бы на 1000 долларов в месяц.
👍2
​​Кстати, про тестирование гипотез и incremental changes.

Знаете, с какой идеи начался Netflix?

"Пришлите по почте прядь своих волос - и мы подберем вам формулу идеального шампуня!"

(господи, какой пиздец)

Попытайтесь представить путь, который проделала компания - от кастомных шампуней до "Queen's gambit".

Все потому, что Netflix одержима тестированием. В их манифесте 2009 года помимо всем надоевших "сотрудники могут брать отпуск сколько и когда хотят", есть знаменитое "ALWAYS BE TESTING"

Онлайн-прокат DVD-дисков ребята придумали случайно, когда ехали вдвоем на машине. И первое что они сделали - развернулись, погнали в супермаркет, купили болванку, нашли ближайшее почтовое отделение и сами себе ее отправили.

Заметьте - не бросились кодить и регать домены, а пошли тестировать гипотезу.

Причем, там же в супермаркете они поняли, что надо делать не онлайн-продажу, а именно прокат с месячной подпиской - чтобы уйти от прямой конкуренции с Amazon и Wallmart.

Каждый день на главной странице Netflix идут десятки А/Б тестов. В результате рождаются крышесносные фичи. Моя любимая - когда разным пользователям показывают разные tumbnail'ы одного и того же фильма. Если вам нравится Ума Турман - на афише Pulp Fiction будет Миа, если Джон Траволта - то Винсент.

Короче, идеальный пример бизнеса, который вдумчиво и осознанно двигается к завоеванию вселенной.
Срочно в номер: там, говорят, Notion упал и лежал 2 часа.

Походу, стартап с оценкой 2 миллиарда долларов просто забыл продлить домен. В зоне ".so" (это Сомали) пятидневный grace period, который закончится 17-го февраля, как раз через 5 дней.

UPD: ко мне в Твиттер пришел Notion и уверяет, что это не так. Штош... Не убедили. Подождем пост-мортем.
Когда DHH в очередной раз кидался какашками в Apple за комиссии аппсторов, к нему в Твиттер пришел Тоби Лютке, основатель Shopify.

И сказал, мол, да! Аппсторы отстой, Apple козлы, а Дэвид молодец.

(Shopify - это такой "хостинг" онлайн-магазинов. Любая домохозяйка может начать продавать там печеньки, а Shopify возьмет на себя ВСЕ - красивый сайт с корзиной, прием оплаты, доставку товара и тп. Компания сделала IPO, стоит 150млрд, выручка 2млрд в год)

Только вот у Shopify тоже есть свой аппстор. Где куча независимых программеров предлагают домохозяйкам свои маленькие плагины. Чтобы у печенек был крутой емейл-маркетинг, анонсы, умные "корзины" с апгрейдами, акциями и скидками и тп. Классная, кстати, ниша, я знаю пару ребят, которые зарабатывают несколько $миллионов в год.

Ну вы уже догадались, к чему все идет - Shopify в своем аппсторе берет с программеров 20%. А если вы, не дай бог, что-то продали в обход - вас не просто банят, а еще и берут недоимку за все годы "левых" продаж.

История интересна тем, что все эти shopify-apps, вообще-то, повышают выручку самого Shopify. Ибо большинство плагинов - это всякие напоминалки про abandoned carts, промо, апгрейды, реферальные программы и прочий маркетинг. Авторы приложений повышают выручку продавцов - а значит прибыль Shopify - но все равно должны 20%.

Чую, будет скандал 🍿🍿Зачем ты полез в Твиттер, Тоби?
​​Вчера занимался странным: отлаживал наш фронт на... смарт-ТВ.

Погодите, я все объясню.

Если в вашем продукте есть красивые графики (курсы акций/биткойнов, дашборды и прочий мониторинг), наверняка найдутся клиенты, которые захотят повесить эти картинки себе в офис - на стену, на большом экране. В Штатах это очень модно и молодежно. Кое-где в Европе тоже. Так что будьте готовы к тикетам "ой, а ваше приложение не заводится на телеке!!"

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

Короче, я пару часов возился с эмуляторами телевизоров (LG webos SDK, Samsung Tizen SDK, Philips и тп) и они все ужасны. Сначала ты качаешь 10гб какого-то говна, потом продираешься через инсталлеры, потом запускаешь эмулятор и... выясняешь что в нем нет веб-браузера и тд. и тп.

Лучше так: по спекам телека находим ОС, по ней - версию встроенного Chromium-движка, ставим эту версию локально и тестим. В нашем случае это оказался Chromium 51, который как-то криво ест secure-кукисы и поддерживает не весь ES6.

Гугл хранит все билды Хромиума за всю историю. Они portable, небольшие и быстрые (я аж всплакнул, каким быстрым был когда-то Хром)

Основной квест - найти номер нужного билда по номеру версии. Чтобы не лазить вручную по коммитам и тегам, добрые люди написали удобную тулзу (выбираем "мак/вин/линух", номер версии и получаем ссылку на скачивание)

PS. кто вспомнит, из какого фильма кадр - тот получит водокачку
Я как-то пропустил, а между тем MongoDB зарабатывает 700млн в год.

Я в шоке.

Та самая опенсорсная "монга", над которой все ржут и делают мемы про web scale, а некоторые вообще не считают полноценной базой данных - зарабатывает под миллиард. И это на диком росте - 40% в год.

Причем, большая часть выручки - ARR, то есть recurring revenue. Насколько я понял, львиную долю делает их SaaS-решение для управления инстансами в облаках AWS/Azure.

(ну и кстати, монга - единственный продукт, который умеет в кросс-облачные кластеры, т.е. "половина в Амазоне - половина в Azure")

Акции Монги (дада, у нее есть еще и акции, сам в шоке) за последний год выросли в три раза. С момента IPO - в восемь.

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

Теперь те, которые читать можно и нужно:

Clayton Christensen, "The Innovator's Dilemma"

Клейтон - великий. Профессор экономики в Гарварде, автор концепций "disruptive innovation" и JTBD - "jobs to be done". Стив Джобс когда-то признался, что Innovator's Dilemma - единственная бизнес-книга у него на полке.

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

Если лень читать целиком - вот полуторачасовой видос, где он проходится по всем своим теориям сразу,

Если даже это лень - тогда 4-минутный ролик, где он быстро рассказывает про JTBD на примере молочных коктейлей.

(Клейтон, к сожалению, недавно умер от рака. Я ужасно горжусь, что однажды был на его лекции - и как видите хвастаюсь этим при любом удобном случае)

April Dunford, "Obviously Awesome"

Неплохая книга про позиционирование - что у вас за продукт, на кого рассчитан, и почему подойдёт лучше всех. Про то, почему позиционирование - это круто, а "product-market fit" - это базворд и фуфло.

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

Но как только вы его сформулируете - жить сразу станет легче, на всех фронтах. Какие фичи добавлять в продукт? Что писать на сайте? Какую ставить цену? С какого конца разгребать беклог? Ноль вопросов, все понятно.

Это как масло в двигателе. Мотор не крутит, поршни не толкает. Но без него - не поедет.

Опять же, если лень читать, погуглите видосы Эйприл, у нее много.

Gabriel Weinberg "Traction"

Гейбриел - основатель поисковика DuckDuckGo. Книга - просто маст для всех, кто собрался "пилить свой стартап".

Четко, понятно и максимально приземленно про Самый Главный Вопрос - "где же, сука, брать клиентов??"

Какие бывают каналы привлечения (их всего 19), стратегии и тактики. Для каждого "канала" Гейбриел пригласил известного спеца в этой нише и методично его допросил.

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

PS. на амазоне есть еще одна книга "Traction" от какого-то другого чела, не промахнитесь. Смотрите имя автора внимательно.

Ben Horowitz "The Hard Thing About Hard Things"

Да да, тот самый, который "Andreessen Horowitz", отстаньте.

(A&H - это фонд, который вырастил Facebook, Airbnb, Twitter и черт знает что еще)

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

Реально стоит прочесть. Особенно если у вас УЖЕ есть бизнес и УЖЕ стоят задачи "как нанимать", "как управлять", "где не облажаться", что такое "Peacetime CEO / Wartime CEO" и тп.

Если еще что-то вспомню, напишу.
Лет 15 назад я работал обычным разрабом в маленьком банковском холдинге. Нас с напарником было всего двое "погромистов". В перерывах между написанием кода и SQL-запросов мы чинили принтеры и обжимали джеки (до сих пор помню эту долбаную мантру "оранжевый-белозеленый-синий-белосиний...")

При этом в соседней комнате сидели Настоящие Разработчики. У них были большие зарплаты и к ним никого не пускали. Они писали Великую Систему - ее никто не видел, но когда-нибудь она заменит "все то говно" на котором банк работает сейчас. В Великой Системе планировалось сразу все - от банковских транзакций до закупок туалетной бумаги.

Шли годы, а систему никак не дописывали. Мы с напарником тем временем заговнокодили примерно весь холдинг: автоматизировали документооборот, трекинг внутренних задач, написали десяток говносайтов на PHP и даже интернет-банк на C#. А дизайн всего этого мы рисовали в пиратском фотошопе.

При этом привитое на мехмате чувство прекрасного позволяло нам почти не создавать техдолг - каким-то чудом.

Тру-разработчиков через несколько лет выгнали всем отделом.

Очень хочется на этом закончить - красивым выводом про Д'Артаньяна и пидорасов. Но тру-разработчики не виноваты. Гемор взаимодействия "между бизнесом и разработкой" - он, сука, вечен. Даже Самат с Федей болтали про это целый час

Причина проста - все программисты страдают комплексом демиурга. Не "комплексом бога" в нарциссическом смысле, а именно обсессивно-демиургическим - мы хотим УПРАВЛЯТЬ МИРАМИ.

Это нормально. И даже неизбежно - мы работаем в сложных воображаемых вселенных. Вселенные затягивают. Мы хотим строить большие миры "шобы как Гугл", и этими мирами мы будем увлеченно рулить. Не мешайте нам.

Есть много способов с этим бороться. Но все они вертятся вокруг одного - надо доставать программистов из воображаемых вселенных за уши.

Можно нанять в штат психолога, как в сериале "Billions", а можно ввести хаки "dogfooding" или "all hands support", или наглядно показывать impact... Короткий видеоролик, где пользователь тыкает плод работы программиста - творит чудеса. Короче, любой ценой сокращать дистанцию с реальным миром. Миллион есть способов. Дерзайте-гуглите.

Еще можно решить эту проблему на этапе найма - просто нанимайте больше девушек. Я серьезно, у них реально нет этих дурацких personality disorders. А если уж собеседуете парня, особенно недавнего студента, тогда так:

Если у вас есть R&D - нанимайте отличников. А если бизнес, стартапы, деньги и жиза - нанимайте двоечников.

Двоечники круты. Просто попытайтесь представить, насколько двоечнику сложнее было закончить ВУЗ. Насколько сильнее он прокачан. Насколько крутой у него "ownership mindset", "problem-solving skills" и вот это все.

Двоечник до часу ночи где-то тусил, потом бухал, потом почему-то репетировал с группой на "базе", потом заснул на остановке, а утром пришел на третью пересдачу и СДАЛ ЕЕ.

Его выгоняли, отчисляли, выселяли из общаги, отчитывали в деканате, на горизонте была армия - а он все равно, сука, закончил. Бегал за преподами, договаривался о пересдачах, защищал себя на комиссиях... Софт-скиллы и устойчивость к стрессу - уровня "бог". А еще он быстро въезжает во все новое, ибо первый раз открывает учебник строго за день до экзамена.

Нанимая людей в тот банк мы всегда аккуратно выясняли - ну как там вообще в ВУЗе? Не был ли на грани вылета? Не уходил ли в "академ"? Не резался ли сутками в "Контру" вместо лекций? ...А то мы как раз такого ищем...
​​Первый раз за 20+ лет я купил "не ноутбук".

Ребята, это снос башки. Я в шоке, как продвинулась индустрия десктопов с момента, когда я последний раз произносил слова "материнская плата".

Произносил презрительно скривившись, конечно. Ибо трушные пацаны юзают только Макбуки. Да и не царское это дело - ковыряться отвертками в железках. У нас, в конце концов, модный стартап, а не "горбушкин двор".

Между тем десктопы стали красивыми и бесшумными. Крутые кейсы, каленое стекло, светящиеся вентиляторы, водяное охлаждение, видеокарты размером с кирпич... И конечно RGB-великолепие от которого вытекают глаза.

Я раньше все это видел только на канале "Linus Tech Tips".

А тут подумал - все равно уже тыщу лет живу со всем "внешним". Моник, клава, микрофон, опутанная проводами док-станция... И ноут, который красиво стоит на подставке в закрытом состоянии. Мне же повезло иметь полноценный домашний офис, где можно закрыться от троих детей и собаки... Короче, все сходится. Надо брать.

Конфиг: nVidia RTX 3070. Плюс какие-то малозначительные железки вокруг.

Ну и, конечно, RGB-великолепие. С прозрачными стенками и вытекающими глазами.

Юнит-тесты пролетают за две минуты. а стейджинг-база влезает в память целиком. Но кого я обманываю - все это делалось ради 350 fps в каунтер-страйк.

Когда началась пандемия, мы с друзьями/коллегами придумали раз в неделю собираться на приватном csgo-сервере. Ну не в зуме же болтать, ей-богу... И оказалось, что это лучший тимбилдинг в мире.

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

...А главное, вся эта лошадиная моща стоит дешевле моего ноутбука раза примерно в полтора.

Плюсы:
- стационарность. Как ни странно, это плюс. Встал из-за стола - работа закончилась. Никаких "доделаю на диване" или "покодю на кухне".
- невзъебическая моща, модульность и никакого троттлинга. Плюс это отличная DIY-игрушка и бесконечная кроличья нора. Любители дронов и домашних пекарен меня поймут.

Минусы:
- стационарность (опять же). Рабочий ноутбук все же оставьте, пригодится.
- нужно просторное рабочее место

В общем, я снова счастливый 17-летний задрот. Рекомендую.

UPD. черт, забыл для фото включить RGB-великолепие на мышке! Прастити, переснимать лень, и так полдня на столе убирался...
👍1
Минутка tech porn.

У нас огромная multi-tenant реляционная база данных. Таблицы по 200 ГБ - рехнуться, если честно. При этом для multi-tenant архитектуры мы юзаем самую тупую модель - "Pool" - это когда во все таблицы добавляется ключик "tenant_id". Модель неэффективная, но зато простая в реализации и поддержке.

(кстати у AWS пролетала классная дока про дизайн multi-tenant систем, где разобраны все варианты, мастрид для всех CTO)

Все тормозило и заикалось. Клиенты бесились, сервера перегревались. Задачи типа "получить запись по ID" работали нормально, но любой список типа "непрочитанные письма за сегодня" в многотерабайтной базе начинает жестко тупить. Даже с правильными индексами. Один жирный клиент с дохреллионом записей притормаживает мелких клиентов, у которых данных совсем мало. Надо что-то делать.

И тут нам пришло Великое Озарение [sarcasm], которое рано или поздно приходит любому DBA - о том, что основная работа всегда ведется с "верхушкой" данных. А огромный "long tail" всегда лежит мертвым грузом и нахуй не нужен юзается только в отчетах.

Первая мысль - надо сделать "вертикальный" партишенинг. Т.е. "старые" данные спихивать куда-то за горизонт (на отдельный диск или даже сервер), а "активные" данные держать где-то под рукой.

Мысль правильная, но нет.

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

Я уже слышу крики из зала: "шардинг", "кликхаус", "разделяй OLTP и DWH". И прочий оверинжиниринг. Сразу нет. У нас есть self-hosted версия, которая должна заводиться в один клик даже у домохозяек. Хотелось простой хак, который решит все проблемы одной строчкой.

И тут я случайно вспомнил про офигенный читкод - фильтрованные индексы. Ведь по умолчанию индекс делается по всей таблице. Но зачем, если можно индексировать только 0.1%?

В коде любого CRUD-приложения, в бизнес-логике всегда есть признак, который отличает "старые" данные от "новых". Ну типа "статус проекта = сдан". Или "статус заказа = обработан". И это условие уже есть в большинстве ваших SELECT'ов. В нашем случае это был "статус тикета = закрыт".

Что делает DBA-джун? Создает индекс по этой колонке. Чтобы, значит, поиск незакрытых тикетов был быстрым и классным.

CREATE INDEX myIndex
ON messages (processed)

Что делает прошаренный DBA-синьор? Создает еще "filtered index" с этим условием

CREATE INDEX myIndex
ON messages (column1, column2...)
WHERE processed = 0 --вот так

И следит, чтобы это условие было в селектах.

В результате даже в многотерабайтной базе мы имеем маленький быстрый индекс всего в десятки мегабайт (!), который всегда показывает на самые последние данные. Как только данные перестают удовлетворять признаку - они из индекса улетают. Сами.

Когда мы прикрутили первый фильтрованный индекс и стали смотреть статистику использования, мы офонарели - SQL Server бросил все дела, и стал жадно его жрать. Приложение ускорилось в разы, нагрузка на проц снизилась на 80%. Посмотрите график - до и после внедрения только ОДНОГО пробного индекса.

Наш бд-сервер имеет всего 4 ядра и 32 гига памяти, при этом запросто тянет базу в несколько терабайт и сотни тысяч DAU. У нас в команде есть негласный челлендж - сколько можно протянуть на этом железе без апгрейдов? Уже годы держимся))

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

PS. "Filtered/partial index" есть в SQL Server, PG и в Монге. В мускуле есть воркераунд

PPS. есть нюанс, кстати. Когда делаете filtered index, обязательно включайте фильтрованную колонку в "include". Так мы заставляем сервер поддерживать "статистику" по колонке. Без статистики все это великолепие работать не будет, сервер индекс не заметит.

CREATE INDEX myIndex
ON Messages (Column1, Column2...)
INCLUDE (Processed) --важно
WHERE Processed = 0
"Copy-paste driven development" выходит на новый уровень:

https://copilot.github.com/

P.S. Анонс тут

P.P.S. помните, MS вложила в OpenAI миллиард долларов и получила эксклюзивные права на GPT-3? Это, видимо, первые плоды. Теперь код за нас пишет машина.

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

Джоел в легендарном посте Things you should never do в свое время сформулировал фундаментальную проблему всей разработки:

Писать код проще, чем читать

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

Во-первых, ребята, очнитесь. Время дизайнера не «дешевое», это самое дорогое время, которое в разработке продукта вообще может быть. Всем глубоко пофиг и насрать, что там у их ежедневных программ под капотом: лапша, не лапша, монолит или микросервисы, электрон или позитрон, json или xml, хаскель или джаваскрипт, стратегия или фабрика. Вот серьезно, мем с Райаном Гослингом, объясняющим девушке на вечеринке.

А на то, как продукт выглядит и как работает – нет, не пофиг. Неправильно поставленная кнопка может буквально разорить компанию. Сложная навигация — похоронить продукт. Неприятный визуал — сдержать рост. Я уж не говорю про просранные пользовательские сценарии или, прости господи, про левую идею продукта.

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

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

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

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

Во-вторых, по фактам. У любой программы, которой вы пользуетесь, есть интерфейс. Да, даже у CLI утилит.

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

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

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

Или все-таки заморочитесь и сделаете нормально, чтобы люди могли пользоваться вашей программой не превозмогая себя, не вопреки?

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

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

Между тем Кортланд Аллен позвал в свой подкаст "Indie hackers" Андрея Азимова - живущего на Бали парня, который кодить почти не умел и продукты делал настолько "на коленке", что волосы шевелятся.

Когда он писал свою тулзу "year in progress" - Андрюха не знал, как сделать в макоси прогресс-бар. Поэтому он нарисовал сто (!) картинок от 1% до 100% и написал сто if-ов

if (x==1) нарисовать 1.gif

(это буквальная цитата из его рассказа, я так ржал, что почти врезался в человека на пробежке)

От такого кода у любого уважающего себя синьора, конечно, вытекут глаза. Андрей, между тем, зарабатывает $10к в месяц, выигрывает "ProductHunt Maker of the Year" и сам над собой хохочет.

Когда он строил какой-то очередной сайт-поделку, он не умел в базы данных. Поэтому засунул все в google sheets и за пару дней наговнокодил скрипт (на php конечно) который забирает контент по API и пихает в HTML. После чего почесал репу и создал из этого красивый продукт https://www.sheet2site.com/

(на этом месте вытекли глаза не только у сеньоров, а вообще у всех продактов/стартаперов)

И знаете, все маркетологи мира очень ему благодарны. Поправил табличку - сайт обновился. Никаких тебе логинов, вордпрессов, CMS-ов или, простигосподи, маркдауна с джемстеком, тейлвиндом и деплоем в клаудфлер через git (это я сейчас описал реально популярный сетап для статических сайтов, если что).

Просто дай права на гугл-доку, выбери шаблон - и все, забирайте готовый сайт. Свободная касса.

P.S. подкаст тут (там сверху ссылки itunes/spotify и тд.) - он на английском, но Андрей говорит очень понятно с нашим родным акцентом. Реально послушайте, вдохновляющая, добрая и открытая история. А Андрюхе респект и лучи поддержки. 🎉

UPDATE: Sheet2Site недавно был продан. Учитывая выручку (120к в год) и текущие мультиплкаторы (4-5х), продан где-то за 400-500тыс.

Ма. Ла. Дец.
Ну когда же, когда же облачные провайдеры понизят цены на траффик? Ведь они берут за него почти в 80 раз больше себестоимости, ало?

НИКОГДА.

Высокие цены за траффик - это не способ заработать. Это способ удерживать клиентов внутри walled garden.

Нефиг строить кросс-облачные решения.

Нефиг юзать внешние сервисы, ищи аналог внутри продуктовой линейки AWS/Azure/GCP.

А главное, нефиг мигрировать между облаками. Хочешь перегнать свой петабайт из AWS в Azure? Плати 100тыс долларов ($0.10 * 1000000gb).

А то ишь, развелось вас, умников... Тут вам не DigitalOcean.

Вот CloudFlare хоть и раскричался на весь хакерньюс - а все равно, суки, за свой "Argo" берут те же 10 центов за гиг. Как и GCP. Как и Azure. Как и AWS.

Именно поэтому, кстати, игровые компании не сидят в этих ваших облаках, а юзают старый добрый colo. Та же Майнкрафт-сетка, говорят, жрет 3-5 петабайт в месяц. Это ж... Это ж... (считает нолики на калькуляторе)... это ж почти полмиллиона долларов в месяц только за траф.

Кто-то пошутил, что в жизни компании есть три стадии: (1) свои железки (2) миграция в облако (3) миграция обратно на свои железки. Самые умные доходят до 4й стадии - становятся облачным провайдером сами.
👍1