en
Feedback
Bite the Byte

Bite the Byte

Open in Telegram

Соловйов здорової людини! 🌐solovyov.net Архів каналу: solovyov.net/channel

Show more
3 357
Subscribers
-324 hours
-47 days
+330 days
Posts Archive
Через 5 хвилиночок стартуємо - https://youtu.be/oLWOD3vwX00 У вас все ще є можливість замутити чаю і покликати знайомих теж подивитися :-)

За результатами мого відео про типізацію Павел Коломієць запропонував мені зробити стрім. Ну щоб він мене трохи роздуплив за нормальну типізацію, щоб я більше не згадував джаву і го у фразах про статичну типізацію. 😁 Паша, якщо ви його не знаєте, довго робив цікаві речі в Evo (в prom.ua тобто), а останні три роки — ото час летить 😵‍💫 — працює над EdgeDB. Тобто очевидно, що розмова може збиватися трохи в Rust, але ми будемо намагатися бути цивілізованними. 😁 Збираємося обговорити цікавішу статичну типізацію, яку популярізують Rust та TypeScript, підходи до обробки помилок, до серіалізації, чому в нових мовах рідко є наслідування, про іммутабельність та чи може бути динамічно типізована системна мова тощо. Ну й заодно ми позбираємо трохи грошей — бо на минуломі стрімі зібрали половину. Я дуже дякую всім, хто долучився, і дуже прошу порозповсюджувати посилання на стрім: тема буде цікава, а свіжа кров (у сенсі свіжі гроші) нам дуже б не завадила. :)

Треба сказати, що chat.openai.com — це прям нормальна розвага. :) Не впевнений, скільки ще чекати, поки воно замінить куски м
Треба сказати, що chat.openai.com — це прям нормальна розвага. :) Не впевнений, скільки ще чекати, поки воно замінить куски м'яса, але gzozizg дає можливість посміятися нормально 🤣

З часом до кожної людини приходить внутрішня потреба вчити. Я вирішив одразу почати зі складних матерій, та й показати, як же ж нормально написати FizzBuzz.

Через дві хвилиночки починаємо https://www.youtube.com/watch?v=BdFeoPiUxpA

Тут друзі Севи (брата мого) зробили цікавий девайс для військових, дистанційний підривач. Поки вони його сертифікують і проходять всю офіційну бюрократію, в них намалювалися вже замовлення на комплекти від 4 бригад. Але щоб все це виготовити — треба гроші, причому прям 240 тисяч гривень на все про все. Вони, нажаль, якихось прямих виходів на волонтерів не мають, і тому фінансування досі не змогли знайти. От ми і придумали попросити гроші у вас. 😁 Але щоб воно було цікавіше і зрозуміліше, то ми зробимо стрім завтра ввечері, де обговоримо, чим воно цікаво і як працює, і, якщо залишиться час, то взагалі пообговорюємо питання мілітарі-стартапів. Тож ставте собі нагадування в календарі: 29 листопада о 18:00. І поширюйте теж, будь ласка, бо дуже потрібні гроші. 😁

Ефективність сервісу Колись існувала мантра про те, що програмісти значно дорожчі за залізо, і не треба думати про залізо. Але в якийсь момент, особливо для бізнесів, де багато безоплатного навантаження (наприклад, для Твіттера) — це стає болісно. І от один екс-твіп (tweep — так кличуть себе працівники Твіттера) пише, чому ж вони сиділи на власному залізі: бо потреби Твіттера у 500 тисяч серверів виходить занадто дорого навіть з величезними знижками! Типу 300 мільйонів доларів на місяць. Напевно всі їх робітники коштують дорожче (навіть якщо взяти медіану в 100k з прибиральницями, то на 7000 це 700 млн), але це той самий порядок грошей! Так от, мене якось дуже вразила кількість у 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 користувач єкомерса створює більше навантаження. Тим чесніше це порівняння. Тобто реальна різниця між тим що є і тим що має бути мінімум два порядки. Що робили всі ті тисячі програмістів?.. Невже ніхто не хотів зекономити грошей на чергову тисячу додаткових програмістів — і отримати якийсь цікавий бонус у процесі? Ден Луу написав тред, який же Твіттер технологічно офігенний. Але мені здається, що ця метрика, хоч і недосконала, але при такій різниці це вже показник. А інженери у Твіттері просто розважалися, а не робили щось корисне. Фу на них.

Якщо подивитися на останній подкаст прискіпливо — як інженер, а не як глядач, — відчувається доволі сильна різниця в якості між нашими з Максом картинками. Трошки дратує, якщо чесно. В першому випуску різниця ще більша, але цетому, що я його записав в 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 таке робить, теж незрозуміло. Швиденько жодного огляду на ютубі не знайшов, де б хтось казав — а от ця штука передає відео краще за камлінк. А шкода, замінити камлінк було б дешевше, ніж камеру. :) Не знаю, що робити: чи то писати на камеру кусками (але хтозна, коли вона тоді перегріється), чи то забити... міняти її я зараз все одно не поміняю. :)

Можливо ви подумали, що то була одноразова акція, але ні — ми з Максом записали другий епізод Startup talk, і на цей раз дуже старалися не згадувати про Твіттер. 😁 Тож дивіться і не забувайте коментувати, цікава ваша думка, бо тема, здається, може зачепити всіх нас.

Переглядав анонси Cloudflare за минулий тиждень — в них був тиждень анонсів — і звернув увагу на те, що в них у беті з'явилися черги для воркерів, під назвою Queues (не так щоб вони були дуже вигадливі, але це точно краще за назви в AWS). Ну і все з ними наче нормально, черги й черги, не дуже там щось цікаве є — може ще будуть доробляти, не знаю. Пишу я цей пост через приклад, який вони там заюзали. Найпопулярніший сервіс генерації uuid4 в інтернеті — uuid.rocks — вирішив перевірити, чи вони справді унікальні UUID генерують. Через велике навантаження — до 80 тисяч запитів на день (вау, це майже один в секунду) — це було дуже нетривіально і вони заюзали чергу, щоб писати логи в сховище. Ну ясно що навантаження не так щоб mind-blowing, але ЛАДНО. uuid.rocks це якийсь крінж-фест. Обіцяють час відповіді, якщо ти їх з воркерів заюзаєш, близько 5 мс. 5 мс??? Це тупо вічність! Ладно, може в них якась фантастична логіка? Ха-ха: "uuid npm package". Капець, спільнота ноди вже майже до центру Землі добралося, тепер замість однорядкових бібліотек — однорядкові сервіси. "Powering multi-million dollar companies with over 20,000 UUID’s per day 💡" 🤦‍♂️ Руки чухаються зробити leftpad.rocks.

Як же я ненавиджу росію і росіян, террористів гнусних. Маю надію що після війни вони скотяться в кам'яний вік і вся їхня гнусна культура там згине к чортям собачім. 😡

Ілон продовжує постачати матеріал. Він робить ситуацію дивною — кожна тема, на яку він звертає увагу, варта того: Twitter Blue не мав ніякого сенсу, розробників у Твіттері забагато, менеджерів теж, воно повільне, є купа технічних проблем, "редагування зробити неможливо" тощо. При всьому цьому його методи роботи токсичні та неефективні. Про галочку у підписці ви напевно всі бачили істерику. Про звільнення ми з Максом обговорювали у подкасті і я писав минулий пост. Ну й от "Твіттер падла повільний!" Так, це робить мету для компанії дуже очевидною — доки він не напише інший твіт. Але воно таке ж саме токсичне, як і звільнення, і скоріш за все ще більше відлякне тих людей, саме які потрібні для виконання завдання. Інше питання, чи є там такі, чи може у них у всіх вивчена безпорадність, як ото у коментарях до цього твіта обговорювали "та щось таймлайн реально повільний" — "ну так всю команду моніторінга таймлайна ж звільнили". Вони що, руками той таймлайн моніторили? Всіх звільнили, тепер ніхто графіки знайти не може? Коментарі "проффесіоналів" під твітами Ілона доставляють не менше твітів самого Ілона. :)

Після історій про скорочення у Твіттері Сева дуже вдало сформулював питання, яке стоїть перед Ілоном: як змусити компанію трансформуватися. Твіттер затовстий, «10 менеджерів на 1 програміста» — та й програмістів занадто багато. І суперповільний: роками розповідають про те, як складно зробити редагування (як воно взагалі публікує щось, це ж капець, не інакше як десь магічне звірятко допомагає). І це з точки зору бізнесу все погано, а для виконавців все дуже комфортно: дохід непоганий, напружуватися особливо не треба. Але ж зазвичай в компаніях є ядро, яке працює, а є баласт, просто у Твіттера співвідношення не 1:1, а 1:666. Як виявити людей, які можуть працювати? Ми як обговорювали, майже одночасно прийшли до висновків, що треба організувати команду, яка працює за своїм графіком: за тиждень зробіть фічу, або гудбай. Мені зараз спало на думку, що можна як з Алібабою: береш 2+ людини, даєш їм набрати команду, хто перший зробив, той залишається в компанії. Змагання, кризовий стан, всі діла. 😁 Здається трошки більш раціональним, ніж «всіх найнятих у парні дні місяці звільняємо», чи який там в нього підхід.

Ой, в мене там опублікувалося відео на каналі по таймеру, а пост в телеграм я забув написати. 🤣 Тема складна, але я намагався зробити якомога конкретніший висновок! 😁

Ми з Максом Іщенко записали подкаст з думками про те, що ж Ілон Маск творить з Твіттером. Велкам послухати. :-) Прикол: ми записували у п'ятницю, а сьогодні можна вже в твіттері наблюдати, як деякі прогнози збуваються.

Twitter, Twitter Ілон Маск з Твіттером зараз трошки як у пісні Рамштайна: Zwitter, Ich bin in mich verliebt. 🤣 Такі чудеса творить, це капець. Всі ці "роздрукуйте код", "знищіть все що роздрукували" — наче виявити обсяги кода, які люди коммітили за останній місяць, не можна зробити простим шел-скріптом... Публічне приниження всього, що відбувається у компанії, імхо, не пройде повз. Маск наче в позі "зараз скинемо баласт з компанії", але по факту буде прямо навпаки — підуть адекватні люди, а залишаться ті, кому йти нема куди. Може він намагається розраховувати на те, що при декларації "ми скидаємо баласт" у всіх кльових чуваків буде піднесення моралі типу "нарешті стане вільніше дихати"? Але ж не з таким підходом, хаха. Тому здається, що Твіттеру кірдик. Може не повноцінний, але якесь згортання у розмірах його чекає. Я тут прочитав цікаву теорію про те, що вся ця історія — це спосіб монетизувати акції Тесли. Тесла має неймовірно завищену оцінку, і Маск можливо не проти якось з того мати трохи зиску. Очевидно, якщо він прямо піде продавати акції, ринок запанікує і тій оцінці прийде гаплик. Тож він купляє Твіттер (теж по не дуже адекватній ціні) за залог акцій Тесли — причому влаштовує виступ із судом, де його прямо змушують це зробити, і тепер ці акції пішли у рахунок купівлі по доволі привабливому курсі. І якщо він вийде з Твіттера через рік-другий по оцінці в 5-10 млрд доларів, то зовні буде виглядати "ну ти Ілон лоханувся", а по факту це непогане хеджування від того що акції Тесли колапсують. Але повернемося до Твіттера: трохи шкода, що так відбувається. Я згоден з Маском, що компанія дуже роздута і взагалі імхо вона вже з десяток років активно воює з Твіттером-явищем, і нічого в неї не виходить. 😁 Шкода, що Ілон такий, і замість приводити компанію до тями, він активно демонструє власне невігластво.

Хто не знає історію — приречений тупити, коли про неї запитають! Тож я вам зняв відео про історію контроля версій, але зовсім не подробне і взагалі сфокусоване на тому, як з‘явилися на світ гіт та меркуріал. Я доволі непогано пам‘ятаю ті події та ще й освіжив пам‘ять, полиставши лкмл, тож майже гарантую абсолютну точність. 🤣 https://youtu.be/6HQZhSHgf8U

Така цікава параллель сьогодні в голову прийшла! Значить думка нумеро уно: чому в Україні рівень сервісу вищий за європейський (що регулярно зараз обговорюють)? Моя ідея була така: в Україні через низький рівень заробітних плат багато людей, яким хочеться жити трошки краще, були вимушені стартувати власні невелички бізнеси. І ці бізнеси через конкуренцію були вимушені підвищувати рівень сервісу, що тягне за собою все навколо. Думка нумеро дуо: якось попались на очі роздуми про те, що MAANA (це те що FAANG, хехе) збирає всіх розробників з ринку і займає їх неймовірно важким і непродуктивним процесом, саме щоб програмісти не робили стартапів, які прийдеться купляти за значно більші гроші (Фігма особливо згадується), або які взагалі будуть загрожувати існуванню компанії. Схожі процеси наче, правда?

Фреймворки та дискусії в інтернетах Зраночку прочитав статтю про те що фреймворки це погано. Автор в деяких місцях має погляд з трохи іншої точки зору, ніж я, але більшою частиною дуже правий. А потім я відкрив коментарі на хакер ньюз і там... в основному приколупування один до одного до інтерпретації слів. Типу чувак пише «без фреймворку в тебе апка стане фреймворком», і там тупо війна за те що таке фреймворк. Якийсь хлоп нарешті пише: фреймворк це штука яка викликає твій код, на відміну від бібліотеки, яку викликаєш ти. Обов‘язково знайшовся чудік звернути увагу, що бібліотеки на жсі це фреймворки, бо вони приймають колбеки. 🙄 Дискусії текстом з незнайомими людьми такі продуктивні... Звичайний срач з нулем корисної інформації. 🧐 Моя думка в тому, що фреймворк — це милиця для моменту, коли в тебе не вистачає досвіду написати без нього. А коли є або час розібратися, або досвід — береш потрібні бібліотеки та й будуєш. Бо коли одна з бібліотек перестає влаштовувати, ти її замінюєш. А коли якийсь аспект фреймворку перестає влаштовувати, ти в основному плачеш — бо заміна потребує і більше роботи, і більше сміливості. 🧱 А якщо в тебе в апці народилося щось схоже віддалено на фреймворк — то є серйозні шанси, що тобі просто так і треба було, вірно? Плюс воно не фреймворк, це твій код, який піддається змінам, інспекції й таке інше. 👩‍💻 Єдиний аргумент за фреймворки в довгу — це за людей, яких ти наймаєш. На популярний фреймворк типу джанги-ларавелі-спрінга ти можеш знайти програміста на ньому. Імхо це погано і я б волів працювати з програмістами з ширшим світоглядом, ніж програмістом на фреймворку. Це якесь штучне обмеження прям з цитати Хайнлайна «спеціалізація — це для комах». Тож розширюйте світогляд, панове! (мало не написав «свідомість», ггг)

‌Я вже й забув про це, але нарешті команда Go наважилася виправити найпотворнішу семантику цикла for, коли змінна з посиланням на сутність всередині циклу має одне й те саме посилання (pointer), а змінюється вміст по цьому посиланню. На практиці це означає, що при копіюванні даних (ну коли примітивні типи юзаєш, типу числа чи строки) — все нормально, а при використанні посилання — код не робить те що ти очікуєш. Це трохи типу такого в джаваскрипті:
for (var i = 0; i < 5; i++) { 
  setTimeout(function() { console.log(i)}, 10);
} 
Коли тільки починаєш програмувати, не дуже очевидно, що воно 5 разів залогає цифру 5. В Go, насправді, все ще трошечки гірше, бо мова нижче рівнем і вони в якості западла приводять отаке:
var all []*Item
for _, item := range items {
 all = append(all, &item)
}
Типу у цьому випадку в масиві all буде виключно останній item, повторений len(items) раз. Ну це очевидно критичне западло, і якщо почитати далі опис проблеми, можна вразитися, як неочевидно ця поведінка триггериться. Код, в якому вона є, і в якому нема, візуально один від одного не відрізниш взагалі. Я радий, що хоча б у 2022 році команда Go нарешті роздуплилася і змінює мову так, щоб це призводило до простішого коду, а не до простішої імплементації компілятора — незважаючи на їх заяви, вони історично частіше схилялися до другого. Сішарп мав таку саму історію і роздуплився на 10 років раніше. :) Вражає, що обговорення повно народу, які страждають, що мова стане простішою для розуміння. Схоже що луддитство викоренити неможливо. 🤣