Якщо подивитися на останній подкаст прискіпливо — як інженер, а не як глядач, — відчувається доволі сильна різниця в якості між нашими з Максом картинками. Трошки дратує, якщо чесно.
В першому випуску різниця ще більша, але це тому, що я його записав в OBS з дефолтними налаштуваннями, а там якісь 2 мбіта були. Але перед другим я сів, поекспериментував з якістю, визначив, що після 30 мбіт різниці не побачиш, і... ну ось маємо, стало краще, але не стало офігенно!
Чи це Sony a6400 настільки якісніше знімає відео, ніж Fujifilm X-S10? Ні. Ну тобто виходить що так, але ні.
Різниця в тому, що a6400 здатна записувати відео на карточку скільки заманеться, аж поки карточка не скінчиться, тож Макс має змогу записати на камеру. А в X-S10 є обмеження на 30 хв... :( Тому мій вибір був — писати в OBS, бо через 30 хв камера вимкнеться, а в OBS буде писати, доки не перегріється (тобто годинами, доки на вулиці не літо).
Тож я сів поколупатися з OBS'ом сьогодні, і зрозумів, що якості, яку можна порівняти з камерою, чекати не можна. Неважливо, який енкодер юзати — епловський хардварний, x264, av1. Неважливо, чи то OBS, чи QuickTime, чи Ecamm Live. Бітрейт в 100 мбіт, як в камери (точніше 130 ABR) — пофіг. Відео з камери (з фуджика, маю на увазі) — чітке, аж тріщить, а з OBS наче й кльово все, коли окремо дивишся, а в порівняні — мило. :( Ще й в червоне трохи завалює, а з камери з кольорами все норм — а я думав, що то баланс білого провтикує (хоча він в мене зафіксований).
Може то Camlink 4K таке робить, теж незрозуміло. Швиденько жодного огляду на ютубі не знайшов, де б хтось казав — а от ця штука передає відео краще за камлінк. А шкода, замінити камлінк було б дешевше, ніж камеру. :)
Не знаю, що робити: чи то писати на камеру кусками (але хтозна, коли вона тоді перегріється), чи то забити... міняти її я зараз все одно не поміняю. :)
В першому випуску різниця ще більша, але це тому, що я його записав в OBS з дефолтними налаштуваннями, а там якісь 2 мбіта були. Але перед другим я сів, поекспериментував з якістю, визначив, що після 30 мбіт різниці не побачиш, і... ну ось маємо, стало краще, але не стало офігенно!
Чи це Sony a6400 настільки якісніше знімає відео, ніж Fujifilm X-S10? Ні. Ну тобто виходить що так, але ні.
Різниця в тому, що a6400 здатна записувати відео на карточку скільки заманеться, аж поки карточка не скінчиться, тож Макс має змогу записати на камеру. А в X-S10 є обмеження на 30 хв... :( Тому мій вибір був — писати в OBS, бо через 30 хв камера вимкнеться, а в OBS буде писати, доки не перегріється (тобто годинами, доки на вулиці не літо).
Тож я сів поколупатися з OBS'ом сьогодні, і зрозумів, що якості, яку можна порівняти з камерою, чекати не можна. Неважливо, який енкодер юзати — епловський хардварний, x264, av1. Неважливо, чи то OBS, чи QuickTime, чи Ecamm Live. Бітрейт в 100 мбіт, як в камери (точніше 130 ABR) — пофіг. Відео з камери (з фуджика, маю на увазі) — чітке, аж тріщить, а з OBS наче й кльово все, коли окремо дивишся, а в порівняні — мило. :( Ще й в червоне трохи завалює, а з камери з кольорами все норм — а я думав, що то баланс білого провтикує (хоча він в мене зафіксований).
Може то Camlink 4K таке робить, теж незрозуміло. Швиденько жодного огляду на ютубі не знайшов, де б хтось казав — а от ця штука передає відео краще за камлінк. А шкода, замінити камлінк було б дешевше, ніж камеру. :)
Не знаю, що робити: чи то писати на камеру кусками (але хтозна, коли вона тоді перегріється), чи то забити... міняти її я зараз все одно не поміняю. :)
Ефективність сервісу
Колись існувала мантра про те, що програмісти значно дорожчі за залізо, і не треба думати про залізо. Але в якийсь момент, особливо для бізнесів, де багато безоплатного навантаження (наприклад, для Твіттера) — це стає болісно. І от один екс-твіп (tweep — так кличуть себе працівники Твіттера) пише, чому ж вони сиділи на власному залізі: бо потреби Твіттера у 500 тисяч серверів виходить занадто дорого навіть з величезними знижками! Типу 300 мільйонів доларів на місяць.
Їх співробітники обходяться дешевше! 7 тисяч людей з медіаною в 150к (візьмемо із запасом) — це мілліард на рік, а клауд тоді виходить в 3.6 млрд на рік!
Так от, мене якось дуже вразила кількість у 500 тисяч серверів, і я пішов копатися. Наче у 2 кварталі 22 року DAU (це daily active users) у Твіттера було 237 млн людей. Це виходить всього лише 500 людей на сервер?!
Так-так, я розумію, що там не тільки сервера, які обслуговують людей, це і всілякі сховища даних, аналітичні приблуди, он там чувак згадує кластер Presto на 1000 нод.
Але в Касті — вибачте, не буду розкривати цифри, бо вони вже якби не мої — ефективність виходить приблизно в 30 раз вище. Навіть якщо я помиляюся з оцінками кількості серверів, то це в 10-20 разів більше народу на 1 сервер. Це теж включно з усілякими серверами для аналітики, еластіксьорчі для пошуку і для логів (окремо) тощо.
Але є ще цікаві моменти:
• Так, Каста технічно — непогана, але не неймовірна: мені здається, що за останні 3 роки сервіс сповільнився десь у 2-3 рази. Стало більше можливостей, коду, даних, десь якісь оптимізації провтикалися. Я думаю що за 2-3 місяці сфокусованої роботи (і може переходу на веспу ггг) можна було б повернути частково.
• Сервери Касти — це типу 4-8 ядер і 64-128 Гб оперативки.
• Що складніше, Каста чи Твіттер? Мені здається, що при інших рівних 1 користувач єкомерса створює більше навантаження. Тим чесніше це порівняння.
Тобто реальна різниця між тим що є і тим що має бути мінімум два порядки. Що робили всі ті тисячі програмістів?.. Невже ніхто не хотів зекономити грошей на чергову тисячу додаткових програмістів (насправді не тисячу, а 20 тисяч?) — і отримати якийсь цікавий бонус у процесі?
Ден Луу написав тред, який же Твіттер технологічно офігенний. Але мені здається, що ця метрика, хоч і недосконала, але при такій різниці це вже показник. А інженери у Твіттері просто розважалися, а не робили щось корисне. Фу на них.
Колись існувала мантра про те, що програмісти значно дорожчі за залізо, і не треба думати про залізо. Але в якийсь момент, особливо для бізнесів, де багато безоплатного навантаження (наприклад, для Твіттера) — це стає болісно. І от один екс-твіп (tweep — так кличуть себе працівники Твіттера) пише, чому ж вони сиділи на власному залізі: бо потреби Твіттера у 500 тисяч серверів виходить занадто дорого навіть з величезними знижками! Типу 300 мільйонів доларів на місяць.
Їх співробітники обходяться дешевше! 7 тисяч людей з медіаною в 150к (візьмемо із запасом) — це мілліард на рік, а клауд тоді виходить в 3.6 млрд на рік!
Так от, мене якось дуже вразила кількість у 500 тисяч серверів, і я пішов копатися. Наче у 2 кварталі 22 року DAU (це daily active users) у Твіттера було 237 млн людей. Це виходить всього лише 500 людей на сервер?!
Так-так, я розумію, що там не тільки сервера, які обслуговують людей, це і всілякі сховища даних, аналітичні приблуди, он там чувак згадує кластер Presto на 1000 нод.
Але в Касті — вибачте, не буду розкривати цифри, бо вони вже якби не мої — ефективність виходить приблизно в 30 раз вище. Навіть якщо я помиляюся з оцінками кількості серверів, то це в 10-20 разів більше народу на 1 сервер. Це теж включно з усілякими серверами для аналітики, еластіксьорчі для пошуку і для логів (окремо) тощо.
Але є ще цікаві моменти:
• Так, Каста технічно — непогана, але не неймовірна: мені здається, що за останні 3 роки сервіс сповільнився десь у 2-3 рази. Стало більше можливостей, коду, даних, десь якісь оптимізації провтикалися. Я думаю що за 2-3 місяці сфокусованої роботи (і може переходу на веспу ггг) можна було б повернути частково.
• Сервери Касти — це типу 4-8 ядер і 64-128 Гб оперативки.
m6dg.12xlarge
, яких треба 500 тищ — це 48 ядер і 192 Гб оперативки. Просто інший рівень взагалі.• Що складніше, Каста чи Твіттер? Мені здається, що при інших рівних 1 користувач єкомерса створює більше навантаження. Тим чесніше це порівняння.
Тобто реальна різниця між тим що є і тим що має бути мінімум два порядки. Що робили всі ті тисячі програмістів?.. Невже ніхто не хотів зекономити грошей на чергову тисячу додаткових програмістів (насправді не тисячу, а 20 тисяч?) — і отримати якийсь цікавий бонус у процесі?
Ден Луу написав тред, який же Твіттер технологічно офігенний. Але мені здається, що ця метрика, хоч і недосконала, але при такій різниці це вже показник. А інженери у Твіттері просто розважалися, а не робили щось корисне. Фу на них.
X (formerly Twitter)
★ ★ ★ ☆ ☆ but can’t dance off it on X
for people blathering about “just put twitter in the cloud” we tried that. i was there. so just to put some numbers out there, let’s assume aws gave you a 60% discount. now you’re talking approximately 500,000 m6gd.12xlarge systems (new hw was bigger). that’s…
Тут друзі Севи (брата мого) зробили цікавий девайс для військових, дистанційний підривач. Поки вони його сертифікують і проходять всю офіційну бюрократію, в них намалювалися вже замовлення на комплекти від 4 бригад. Але щоб все це виготовити — треба гроші, причому прям 240 тисяч гривень на все про все.
Вони, нажаль, якихось прямих виходів на волонтерів не мають, і тому фінансування досі не змогли знайти.
От ми і придумали попросити гроші у вас. 😁 Але щоб воно було цікавіше і зрозуміліше, то ми зробимо стрім завтра ввечері, де обговоримо що вони взагалі зробили і як воно працює, проблеми створення заліза (і мілітарного, і цивільного), і взагалі, думаю, ще зачепимо питання мілітарі-стартапів.
Тож ставте собі нагадування в календарі: 29 листопада о 18:00. І поширюйте теж, будь ласка, бо дуже потрібні гроші. 😁
P.S. Це вже наступний рівень від кавунів, працюємо над черешнею. 😏
P.P.S. Це я розраховую, що відключення світла та інтернету не завадять.
Вони, нажаль, якихось прямих виходів на волонтерів не мають, і тому фінансування досі не змогли знайти.
От ми і придумали попросити гроші у вас. 😁 Але щоб воно було цікавіше і зрозуміліше, то ми зробимо стрім завтра ввечері, де обговоримо що вони взагалі зробили і як воно працює, проблеми створення заліза (і мілітарного, і цивільного), і взагалі, думаю, ще зачепимо питання мілітарі-стартапів.
Тож ставте собі нагадування в календарі: 29 листопада о 18:00. І поширюйте теж, будь ласка, бо дуже потрібні гроші. 😁
P.S. Це вже наступний рівень від кавунів, працюємо над черешнею. 😏
P.P.S. Це я розраховую, що відключення світла та інтернету не завадять.
YouTube
Військове залізо і стартапи
Давайте пообговорюємо військове залізо і заодно на нього зберемо грошей. :) Мої друзі зробили дистанційний підривач. Поки вони його сертифікують і проходять всю офіційну бюрократію, в них намалювалися вже замовлення на комплекти від 4 бригад. Але щоб все…
Через дві хвилиночки починаємо https://www.youtube.com/watch?v=BdFeoPiUxpA
Якщо вам лінькі майже півтори години дивитися, то можна просто відправити грошей 😁 https://send.monobank.ua/jar/2TjAfFFkRP
Сумарний прогрес, з пейпалом єтц: https://solovyov.net/donate/progress?embed=1
Якщо вам лінькі майже півтори години дивитися, то можна просто відправити грошей 😁 https://send.monobank.ua/jar/2TjAfFFkRP
Сумарний прогрес, з пейпалом єтц: https://solovyov.net/donate/progress?embed=1
YouTube
Військове залізо і стартапи
Давайте пообговорюємо військове залізо і заодно на нього зберемо грошей. :) Мої друзі зробили дистанційний підривач. Поки вони його сертифікують і проходять всю офіційну бюрократію, в них намалювалися вже замовлення на комплекти від 4 бригад. Але щоб все…
З часом до кожної людини приходить внутрішня потреба вчити. Я вирішив одразу почати зі складних матерій, та й показати, як же ж нормально написати FizzBuzz.
P.S. Коменти на ютубі чекають вас. 😁
P.S. Коменти на ютубі чекають вас. 😁
YouTube
Хакни співбесіду
Є одна неймовірно крута тактика для проходження співбесід, але компанії намагаються сховати від нас правду. Я розкрию всі секрети проходження співбесід і навчу програмувати за 10 хвилин, без реєстрації та СМС! Дивися до кінця, щоб дізнатися всі секрети.
…
…
Треба сказати, що chat.openai.com — це прям нормальна розвага. :) Не впевнений, скільки ще чекати, поки воно замінить куски м'яса, але gzozizg дає можливість посміятися нормально 🤣
За результатами мого відео про типізацію Павло Коломієць запропонував мені зробити стрім — завтра (вівторок 6 грудня) о 18:00. Ну щоб він мене трохи роздуплив за нормальну типізацію, щоб я більше не згадував джаву і го у фразах про статичну типізацію. 😁
Паша, якщо ви його не знаєте, довго робив цікаві речі в Evo (в prom.ua тобто), а останні три роки — ото час летить 😵💫 — працює над EdgeDB. Тобто очевидно, що розмова може збиватися трохи в Rust, але ми будемо намагатися бути цивілізованними. 😁
Збираємося обговорити цікавішу статичну типізацію, яку популярізують Rust та TypeScript, підходи до обробки помилок, до серіалізації, чому в нових мовах рідко є наслідування, про іммутабельність та чи може бути динамічно типізована системна мова тощо.
Ну й заодно ми позбираємо трохи грошей — бо на минуломі стрімі зібрали половину. Я дуже дякую всім, хто долучився, і дуже прошу порозповсюджувати посилання на стрім: тема буде цікава, а свіжа кров (у сенсі свіжі гроші) нам дуже б не завадила. :)
Паша, якщо ви його не знаєте, довго робив цікаві речі в Evo (в prom.ua тобто), а останні три роки — ото час летить 😵💫 — працює над EdgeDB. Тобто очевидно, що розмова може збиватися трохи в Rust, але ми будемо намагатися бути цивілізованними. 😁
Збираємося обговорити цікавішу статичну типізацію, яку популярізують Rust та TypeScript, підходи до обробки помилок, до серіалізації, чому в нових мовах рідко є наслідування, про іммутабельність та чи може бути динамічно типізована системна мова тощо.
Ну й заодно ми позбираємо трохи грошей — бо на минуломі стрімі зібрали половину. Я дуже дякую всім, хто долучився, і дуже прошу порозповсюджувати посилання на стрім: тема буде цікава, а свіжа кров (у сенсі свіжі гроші) нам дуже б не завадила. :)
YouTube
Типізація: поговоримо строго
За результатами мого відео про типізацію Павло Коломієць запропонував мені зробити стрім. Ну щоб він мене трохи роздуплив за _нормальну_ типізацію, щоб я більше не згадував джаву і го у фразах про статичну типізацію. 😁
Посилання, згадані під час стріму:…
Посилання, згадані під час стріму:…
Через 5 хвилиночок стартуємо - https://youtu.be/oLWOD3vwX00
У вас все ще є можливість замутити чаю і покликати знайомих теж подивитися :-)
У вас все ще є можливість замутити чаю і покликати знайомих теж подивитися :-)
YouTube
Типізація: поговоримо строго
За результатами мого відео про типізацію Павло Коломієць запропонував мені зробити стрім. Ну щоб він мене трохи роздуплив за _нормальну_ типізацію, щоб я більше не згадував джаву і го у фразах про статичну типізацію. 😁
Посилання, згадані під час стріму:…
Посилання, згадані під час стріму:…
Вчора цікавий прикол був з банками. Я там на стрімі пару раз жалівся, що наче щось глючить і не всі пожертви видно — то я після стріма пішов розбиратися з кодом. Виявилося, що з кодом все ок (ну, я додатково пофіксив, щоб після рестарту воно не скидало прогрес бар, але то таке), а трабла в іншому місці.
Я пішов робити дві банки — за динамічну і за статичну типізацію — щоб вийшло як у збіра ДОУ розробники вс тестувальники (власне мені Юра і дав ідею). То банки я зробив, а потім перероблювати прогрес бар я трохи обламався, бо за 1 день це не дуже реалістично. 😁 Але! Я примудрився зберегти опис відео з цими двома банками, та й забув про це.
То глючило тому, що частина людей скидала на банки в описі, а частина по QR-коду. Другі трекалися, а перші — ні. 🤣
Проте цікаво, що за динамічні мови прислали 1.6к грн, а за статичні - 14к. :-) Не знаю, чи це репрезентативно, але можливо, що в цілому динамічна типізація менше захоплення викликає. Її використовують не тому, що пре, а як інструмент для досягнення мети.
Ну й очевидно дякую всім, хто долучився (і ще долучається, судячи з нотифікашок 😁) до збору, разом це вже вистачає на виробництво трьох комплектів девайсів, йуху!
Я пішов робити дві банки — за динамічну і за статичну типізацію — щоб вийшло як у збіра ДОУ розробники вс тестувальники (власне мені Юра і дав ідею). То банки я зробив, а потім перероблювати прогрес бар я трохи обламався, бо за 1 день це не дуже реалістично. 😁 Але! Я примудрився зберегти опис відео з цими двома банками, та й забув про це.
То глючило тому, що частина людей скидала на банки в описі, а частина по QR-коду. Другі трекалися, а перші — ні. 🤣
Проте цікаво, що за динамічні мови прислали 1.6к грн, а за статичні - 14к. :-) Не знаю, чи це репрезентативно, але можливо, що в цілому динамічна типізація менше захоплення викликає. Її використовують не тому, що пре, а як інструмент для досягнення мети.
Ну й очевидно дякую всім, хто долучився (і ще долучається, судячи з нотифікашок 😁) до збору, разом це вже вистачає на виробництво трьох комплектів девайсів, йуху!
Так, ну ви мож підписані, а мож не підписані, але очевидно посилання на третій епізод Startup talk треба запостити. :) Це я вперше публічно розповідаю про те, чим я займаюся зараз.
Не встиг власного анонса зробити, трохи іншими речами займався останні два тижні, але все в процесі. :)
Не встиг власного анонса зробити, трохи іншими речами займався останні два тижні, але все в процесі. :)
YouTube
Саня робить стартап – Startup talk #3
Обговорюємо uicol.com – новий проект Сані Соловйова. Що, для кого і чому.
*Автори*
Макс: https://twitter.com/maxua/
Саня: https://t.me/bitethebyte
*Зміст*
0:00 Інтро
1:18 Як Саня наважився робити стартап
5:54 В чому ідея uicol
9:43 Існуючі альтернативи…
*Автори*
Макс: https://twitter.com/maxua/
Саня: https://t.me/bitethebyte
*Зміст*
0:00 Інтро
1:18 Як Саня наважився робити стартап
5:54 В чому ідея uicol
9:43 Існуючі альтернативи…
Замітки
Панове, я поламана людина. Я використовую епловські замітки, бо в них кльово зберігати всілякі документи, щось надовго, малювати й взагалі вони нікуди не подінуться (це не точно, але все не точно).
Я використовую Bear.app, бо він швидкий, має шорткати та маркдаун. Ну і виглядає кльово.
Я використовую Ulysses, бо він вміє перевіряти граматику і публікувати в Ghost API — а я написав собі його імплементацію і так шлю пости сюди в телеграм.
Я використовую Notion, бо його просто шарити з іншими людьми, яких немає в екосистемі Епла.
Ну й авжеж трохи заміток валяються просто файлами, які я редагую Імаксом, але зазвичай це за програмування чи ще щось таке.
І було б непогано зібрати все докупи. Отак здалеку можна побачити що Одисей має найскладніші для інших фічі (публікацію і перевірку), але для заміток він якийсь поцоватий.
Не знаю рілі що робити. Приймаю всі поради для покращення життя, навіть поради спробувати ще щось. Тільки не згадуйте Craft, вони з Ноушеном зі своїми блоками замість абзаців незручні та відчуваються суперповільними. :(
P.S. Фоточка згенерована у https://z.lexica.art
Панове, я поламана людина. Я використовую епловські замітки, бо в них кльово зберігати всілякі документи, щось надовго, малювати й взагалі вони нікуди не подінуться (це не точно, але все не точно).
Я використовую Bear.app, бо він швидкий, має шорткати та маркдаун. Ну і виглядає кльово.
Я використовую Ulysses, бо він вміє перевіряти граматику і публікувати в Ghost API — а я написав собі його імплементацію і так шлю пости сюди в телеграм.
Я використовую Notion, бо його просто шарити з іншими людьми, яких немає в екосистемі Епла.
Ну й авжеж трохи заміток валяються просто файлами, які я редагую Імаксом, але зазвичай це за програмування чи ще щось таке.
І було б непогано зібрати все докупи. Отак здалеку можна побачити що Одисей має найскладніші для інших фічі (публікацію і перевірку), але для заміток він якийсь поцоватий.
Не знаю рілі що робити. Приймаю всі поради для покращення життя, навіть поради спробувати ще щось. Тільки не згадуйте Craft, вони з Ноушеном зі своїми блоками замість абзаців незручні та відчуваються суперповільними. :(
P.S. Фоточка згенерована у https://z.lexica.art
Драма з Твіттером мені так подобається, не можу навіть слова підібрати. Більшою частиною тим, що там абсолютно кошмарні обидві сторони. 😁
З однієї сторони є неймовірно неефективний Твіттер:
• Неефективно використовують залізо
• Мають неймовірну кількість неефективних людей (уявляю, що б сказав Кармак про Твіттер, хехех)
• Розкидуються грошима на всіляку фігню (типу тої історії, що їжу готувало більше людей, ніж приходило їсти)
• Має дуже поганий менеджмент (а що наколупав там Мадж — це взагалі 🤯)
• Розповідають, які вони круті технологічно, а потім з репорту Маджа і відгуками "та ми взагалі не наймали людей після Твіттеру" я прозріваю з їх хуцпи
З іншої сторони є абсолютно неадекватний Маск:
• Звільняє людей рандомом і намагається взяти їх на роботу назад через тиждень 🤣
• Видає взаємосуперечливі параграфи в найкращих традиціях Дональда Трампа (всім свободу слова, тільки забанимо тих, хто мене бісить, але разбанимо, якщо за них будуть волати, а ще забанимо всіх, хто згадує мастодон, але ні, вже не будемо)
• Приймає найефективніші продуктові рішення (типу галочки за 8 баксів)
Прямо змагання недолугих. Я вже навіть не знаю, чого я найбільше чекаю — чи як всі заспокояться, чи щоб воно все вже здохло, чи які взагалі є варіанти!
Маск там запостив голосування, чи потрібно йому залишити пост CEO. Хтось дуже проникливий пише: якщо всі будуть за, скаже що за кілька місяців знайде заміну; а якщо будуть проти, то каже що кілька місяців точно ще побуде, допоки почне шукати заміну. А чутки вже ширяться, що саудіти сказали йому знайти заміну собі для Твіттера і за допомогою опитувань він просто зберігає собі обличчя. 🧌
Не знаю, чи взагалі здатний Маск бути CEO, чи у SpaceX та Tesla йому пощастило з менеджерами, але зіткнення з іншою культурою йому дається максимально складно. Може тому, що він просто-напросто мудак.
З однієї сторони є неймовірно неефективний Твіттер:
• Неефективно використовують залізо
• Мають неймовірну кількість неефективних людей (уявляю, що б сказав Кармак про Твіттер, хехех)
• Розкидуються грошима на всіляку фігню (типу тої історії, що їжу готувало більше людей, ніж приходило їсти)
• Має дуже поганий менеджмент (а що наколупав там Мадж — це взагалі 🤯)
• Розповідають, які вони круті технологічно, а потім з репорту Маджа і відгуками "та ми взагалі не наймали людей після Твіттеру" я прозріваю з їх хуцпи
З іншої сторони є абсолютно неадекватний Маск:
• Звільняє людей рандомом і намагається взяти їх на роботу назад через тиждень 🤣
• Видає взаємосуперечливі параграфи в найкращих традиціях Дональда Трампа (всім свободу слова, тільки забанимо тих, хто мене бісить, але разбанимо, якщо за них будуть волати, а ще забанимо всіх, хто згадує мастодон, але ні, вже не будемо)
• Приймає найефективніші продуктові рішення (типу галочки за 8 баксів)
Прямо змагання недолугих. Я вже навіть не знаю, чого я найбільше чекаю — чи як всі заспокояться, чи щоб воно все вже здохло, чи які взагалі є варіанти!
Маск там запостив голосування, чи потрібно йому залишити пост CEO. Хтось дуже проникливий пише: якщо всі будуть за, скаже що за кілька місяців знайде заміну; а якщо будуть проти, то каже що кілька місяців точно ще побуде, допоки почне шукати заміну. А чутки вже ширяться, що саудіти сказали йому знайти заміну собі для Твіттера і за допомогою опитувань він просто зберігає собі обличчя. 🧌
Не знаю, чи взагалі здатний Маск бути CEO, чи у SpaceX та Tesla йому пощастило з менеджерами, але зіткнення з іншою культурою йому дається максимально складно. Може тому, що він просто-напросто мудак.
А ми новий випуск Startup Talk ще вчора опублікували, обговорили, як ми фейлили стартапні ідеї. :)
YouTube
Щось воно не полетіло — Startup talk #4
Обговорюємо власні ідеї, на які ми витратили час та енергію, а вони не полетіли.
Стаття Макса про Founder-Market Fit: https://newsletter.maxua.com/p/founder-market-fit
*Підходи*
які ми згадуємо у вступі:
Founder-market fit (Pmarca?)
Problem-market fit…
Стаття Макса про Founder-Market Fit: https://newsletter.maxua.com/p/founder-market-fit
*Підходи*
які ми згадуємо у вступі:
Founder-market fit (Pmarca?)
Problem-market fit…
Автоінкремент — відстій
Будь ласка, припинить виставляти автоінкрементні ідентифікатори назовні. В урлах, в API, будь-де. З ними погано все:
• Ти видаєш назовні дані про те, скільки в тебе цих сутностей. Можливо тобі взагалі це фіолетово, особливо під час розробки, але бізнес-сторона не скаже тобі дякую потім за те, що всі конкуренти в курсі, як добре йде твій бізнес.
• Ти даєш дуже простий інтерфейс для парсингу всіх даних від тебе: звичайним циклом можна забрати абсолютно все.
• Вони виглядають однаково. Коли в тебе багато сутностей і багато айдішників, в якийсь момент ти в них заплутаєшся. :)
• Жодної семантики в них нема. Коли починається якийсь дебаг з 10-20 різними типами сутностей і айдішників — голова закипає.
• Ти їх видаси у своєму JSON'і як числа і тоді шансів щось змінити в тебе буде обмаль. Трохи нижче про це напишу.
То що ж робити?
• Найкраще — то коли ти можеш виставити назовні щось семантичне, slug. Перетворити у латинку нижнім регістром заголовок поста, назву фільтра чи його значення — це все нескладно, і якщо кількість сутностей дозволяє, нормально працює унікальним ідентифікатором.
• Якщо назва не дозволяє унікальності, можна додати до неї айдішник. Так, першу проблему ти не закриваєш, але всі інші закриваєш.
• Нема якоїсь конкретної назви або треба щось коротке? Візьми hashids, вони закодують твої циферки і якусь сіль у не дуже довгий рядок, і імплементація настільки проста, що є фактично для всього. На додаток, якщо з імплементації вирізати можливість мати списки, то результат ще й трошки коротшим стає IIRC. Плюс можна дати власну абетку, щоб не було схожих літер і простіше було людям прочитати це (для нас цей кейс важливий був, коли люди дзвонили у кол-центр з номерами замовлень).
• Комбінація назви та hashids, щоб таки не палити айдішник назовні.
• Проблему з однаковим виглядом можна, для найважливіших кейсів, вирішити префіксом, або якимось форматом. В Амазона формат номера замовлення
• Якщо фантазії взагалі не вистачає, візьми UUID4. Так, він довгий, це неможливо сказати вголос іншій людині, ти їх не будеш розрізняти між собою, але ти хоча б закриєш перші дві проблеми та не будеш видавати зайвих даних на волю.
Про числа. Всі фронтендери поділяються на два типи: тих, кому пофіг на типізацію (жс), і тих, хто робить життя людей нестерпним (всі інші). Уявімо, що ви писали першу реалізацію якомога швидше і всюди повидавали айдішники. А потім захотіли з них переїхати на що завгодно: на префікси, на base64, на UUID. Але не можете, бо всі клієнтські апки ваші айдішники розбирають як число і строку туди не підкласти ніколи. Для міграції залишається дві опції — від'ємні числа і якась хитра арифметика (додайте трильйон і сподівайтеся що ваші клієнти розумініші за int32 🤣).
Тому ніколи — чуєте, ніколи — не віддавайте ідентифікатори як число. Зробіть
Найголовніше. Який би ти айдішник не згенерував, обов'язково запиши його в базу. Не треба оцих муток "я в апі розберу hashid назад у цифру і зроблю запит по ній", це, по-перше, довше, а, по-друге, ти задовбешся шукати руками в базі, логах та обмінах повідомленнями. Просто консистентно ідентифікуй всюди цю сутність її айдішником. Може і FK на цей айдішник варто робити, тут вже я не певен. :)
Будь ласка, припинить виставляти автоінкрементні ідентифікатори назовні. В урлах, в API, будь-де. З ними погано все:
• Ти видаєш назовні дані про те, скільки в тебе цих сутностей. Можливо тобі взагалі це фіолетово, особливо під час розробки, але бізнес-сторона не скаже тобі дякую потім за те, що всі конкуренти в курсі, як добре йде твій бізнес.
• Ти даєш дуже простий інтерфейс для парсингу всіх даних від тебе: звичайним циклом можна забрати абсолютно все.
• Вони виглядають однаково. Коли в тебе багато сутностей і багато айдішників, в якийсь момент ти в них заплутаєшся. :)
• Жодної семантики в них нема. Коли починається якийсь дебаг з 10-20 різними типами сутностей і айдішників — голова закипає.
• Ти їх видаси у своєму JSON'і як числа і тоді шансів щось змінити в тебе буде обмаль. Трохи нижче про це напишу.
То що ж робити?
• Найкраще — то коли ти можеш виставити назовні щось семантичне, slug. Перетворити у латинку нижнім регістром заголовок поста, назву фільтра чи його значення — це все нескладно, і якщо кількість сутностей дозволяє, нормально працює унікальним ідентифікатором.
• Якщо назва не дозволяє унікальності, можна додати до неї айдішник. Так, першу проблему ти не закриваєш, але всі інші закриваєш.
• Нема якоїсь конкретної назви або треба щось коротке? Візьми hashids, вони закодують твої циферки і якусь сіль у не дуже довгий рядок, і імплементація настільки проста, що є фактично для всього. На додаток, якщо з імплементації вирізати можливість мати списки, то результат ще й трошки коротшим стає IIRC. Плюс можна дати власну абетку, щоб не було схожих літер і простіше було людям прочитати це (для нас цей кейс важливий був, коли люди дзвонили у кол-центр з номерами замовлень).
• Комбінація назви та hashids, щоб таки не палити айдішник назовні.
• Проблему з однаковим виглядом можна, для найважливіших кейсів, вирішити префіксом, або якимось форматом. В Амазона формат номера замовлення
\d{3}-\d+-\d+
(вчіть регекспи), в Касти K[\d\w]+
, різне можна зробити. Це, до речі, дуже корисно для кількох найважливіших сутностей, коли вони регулярно вилазять в різних місцях, особливо у спілкуванні нетехнічних людей.• Якщо фантазії взагалі не вистачає, візьми UUID4. Так, він довгий, це неможливо сказати вголос іншій людині, ти їх не будеш розрізняти між собою, але ти хоча б закриєш перші дві проблеми та не будеш видавати зайвих даних на волю.
Про числа. Всі фронтендери поділяються на два типи: тих, кому пофіг на типізацію (жс), і тих, хто робить життя людей нестерпним (всі інші). Уявімо, що ви писали першу реалізацію якомога швидше і всюди повидавали айдішники. А потім захотіли з них переїхати на що завгодно: на префікси, на base64, на UUID. Але не можете, бо всі клієнтські апки ваші айдішники розбирають як число і строку туди не підкласти ніколи. Для міграції залишається дві опції — від'ємні числа і якась хитра арифметика (додайте трильйон і сподівайтеся що ваші клієнти розумініші за int32 🤣).
Тому ніколи — чуєте, ніколи — не віддавайте ідентифікатори як число. Зробіть
{"id": str(id)}
, тоді у вас будуть шанси у майбутньому. Тим паче якщо ви віддасте їх як число, якийсь дуже розумний™ фронтендер десь помітить закономірність і щось оптимізує. Чи то швиденько пагінацію свою намутить (до речі, використовуйте курсори), чи ще якоюсь арифметикою займеться (деякі події зі свого життя я навіть не хочу розповідати 😅).Найголовніше. Який би ти айдішник не згенерував, обов'язково запиши його в базу. Не треба оцих муток "я в апі розберу hashid назад у цифру і зроблю запит по ній", це, по-перше, довше, а, по-друге, ти задовбешся шукати руками в базі, логах та обмінах повідомленнями. Просто консистентно ідентифікуй всюди цю сутність її айдішником. Може і FK на цей айдішник варто робити, тут вже я не певен. :)
Давайте підсумки підведемо, мож хоч і не річні, але того збору на дистанційні підривачі, вам же ж напевно цікаво. :) Зібрали ми всі майже 222 тисячі гривень, що трохи менше 240к, яких, як ми намічали, було повинно вистачити на 4 комплекти — але завдяки тому шо ціни плавають трохи, плюс обсягам, плюс трохи закладеному запасу всіх цих грошей вистачило на все що спланували. :)
Тому всі комплектуючі їдуть (більшою частиною, я так розумію, вже приїхали), плати робляться, корпуси виробляються і взагалі скоро все буде готове. :) Lead time не 3 дні, короч, але й не рік. 😁
Дякую вам всім за участь! 🎉
Тому всі комплектуючі їдуть (більшою частиною, я так розумію, вже приїхали), плати робляться, корпуси виробляються і взагалі скоро все буде готове. :) Lead time не 3 дні, короч, але й не рік. 😁
Дякую вам всім за участь! 🎉