Bite the Byte – Telegram
Bite the Byte
3.09K subscribers
24 photos
2 videos
276 links
Соловйов здорової людини!

🌐solovyov.net

Архів каналу: solovyov.net/channel

Без реклами
Download Telegram
Тут друзі Севи (брата мого) зробили цікавий девайс для військових, дистанційний підривач. Поки вони його сертифікують і проходять всю офіційну бюрократію, в них намалювалися вже замовлення на комплекти від 4 бригад. Але щоб все це виготовити — треба гроші, причому прям 240 тисяч гривень на все про все.

Вони, нажаль, якихось прямих виходів на волонтерів не мають, і тому фінансування досі не змогли знайти.

От ми і придумали попросити гроші у вас. 😁 Але щоб воно було цікавіше і зрозуміліше, то ми зробимо стрім завтра ввечері, де обговоримо що вони взагалі зробили і як воно працює, проблеми створення заліза (і мілітарного, і цивільного), і взагалі, думаю, ще зачепимо питання мілітарі-стартапів.

Тож ставте собі нагадування в календарі: 29 листопада о 18:00. І поширюйте теж, будь ласка, бо дуже потрібні гроші. 😁

P.S. Це вже наступний рівень від кавунів, працюємо над черешнею. 😏

P.P.S. Це я розраховую, що відключення світла та інтернету не завадять.
🔥5712
Треба сказати, що chat.openai.com — це прям нормальна розвага. :) Не впевнений, скільки ще чекати, поки воно замінить куски м'яса, але gzozizg дає можливість посміятися нормально 🤣
😁31
За результатами мого відео про типізацію Павло Коломієць запропонував мені зробити стрім — завтра (вівторок 6 грудня) о 18:00. Ну щоб він мене трохи роздуплив за нормальну типізацію, щоб я більше не згадував джаву і го у фразах про статичну типізацію. 😁

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

Збираємося обговорити цікавішу статичну типізацію, яку популярізують Rust та TypeScript, підходи до обробки помилок, до серіалізації, чому в нових мовах рідко є наслідування, про іммутабельність та чи може бути динамічно типізована системна мова тощо.

Ну й заодно ми позбираємо трохи грошей — бо на минуломі стрімі зібрали половину. Я дуже дякую всім, хто долучився, і дуже прошу порозповсюджувати посилання на стрім: тема буде цікава, а свіжа кров (у сенсі свіжі гроші) нам дуже б не завадила. :)
🔥574
Вчора цікавий прикол був з банками. Я там на стрімі пару раз жалівся, що наче щось глючить і не всі пожертви видно — то я після стріма пішов розбиратися з кодом. Виявилося, що з кодом все ок (ну, я додатково пофіксив, щоб після рестарту воно не скидало прогрес бар, але то таке), а трабла в іншому місці.

Я пішов робити дві банки — за динамічну і за статичну типізацію — щоб вийшло як у збіра ДОУ розробники вс тестувальники (власне мені Юра і дав ідею). То банки я зробив, а потім перероблювати прогрес бар я трохи обламався, бо за 1 день це не дуже реалістично. 😁 Але! Я примудрився зберегти опис відео з цими двома банками, та й забув про це.

То глючило тому, що частина людей скидала на банки в описі, а частина по QR-коду. Другі трекалися, а перші — ні. 🤣

Проте цікаво, що за динамічні мови прислали 1.6к грн, а за статичні - 14к. :-) Не знаю, чи це репрезентативно, але можливо, що в цілому динамічна типізація менше захоплення викликає. Її використовують не тому, що пре, а як інструмент для досягнення мети.

Ну й очевидно дякую всім, хто долучився (і ще долучається, судячи з нотифікашок 😁) до збору, разом це вже вистачає на виробництво трьох комплектів девайсів, йуху!
😁2114
Так, ну ви мож підписані, а мож не підписані, але очевидно посилання на третій епізод Startup talk треба запостити. :) Це я вперше публічно розповідаю про те, чим я займаюся зараз.

Не встиг власного анонса зробити, трохи іншими речами займався останні два тижні, але все в процесі. :)
🔥501
Замітки

Панове, я поламана людина. Я використовую епловські замітки, бо в них кльово зберігати всілякі документи, щось надовго, малювати й взагалі вони нікуди не подінуться (це не точно, але все не точно).

Я використовую Bear.app, бо він швидкий, має шорткати та маркдаун. Ну і виглядає кльово.

Я використовую Ulysses, бо він вміє перевіряти граматику і публікувати в Ghost API — а я написав собі його імплементацію і так шлю пости сюди в телеграм.

Я використовую Notion, бо його просто шарити з іншими людьми, яких немає в екосистемі Епла.

Ну й авжеж трохи заміток валяються просто файлами, які я редагую Імаксом, але зазвичай це за програмування чи ще щось таке.

І було б непогано зібрати все докупи. Отак здалеку можна побачити що Одисей має найскладніші для інших фічі (публікацію і перевірку), але для заміток він якийсь поцоватий.

Не знаю рілі що робити. Приймаю всі поради для покращення життя, навіть поради спробувати ще щось. Тільки не згадуйте Craft, вони з Ноушеном зі своїми блоками замість абзаців незручні та відчуваються суперповільними. :(

P.S. Фоточка згенерована у https://z.lexica.art
13😁4🤯2
Драма з Твіттером мені так подобається, не можу навіть слова підібрати. Більшою частиною тим, що там абсолютно кошмарні обидві сторони. 😁

З однієї сторони є неймовірно неефективний Твіттер:

Неефективно використовують залізо
• Мають неймовірну кількість неефективних людей (уявляю, що б сказав Кармак про Твіттер, хехех)
• Розкидуються грошима на всіляку фігню (типу тої історії, що їжу готувало більше людей, ніж приходило їсти)
• Має дуже поганий менеджмент (а що наколупав там Мадж — це взагалі 🤯)
• Розповідають, які вони круті технологічно, а потім з репорту Маджа і відгуками "та ми взагалі не наймали людей після Твіттеру" я прозріваю з їх хуцпи

З іншої сторони є абсолютно неадекватний Маск:

• Звільняє людей рандомом і намагається взяти їх на роботу назад через тиждень 🤣
• Видає взаємосуперечливі параграфи в найкращих традиціях Дональда Трампа (всім свободу слова, тільки забанимо тих, хто мене бісить, але разбанимо, якщо за них будуть волати, а ще забанимо всіх, хто згадує мастодон, але ні, вже не будемо)
• Приймає найефективніші продуктові рішення (типу галочки за 8 баксів)

Прямо змагання недолугих. Я вже навіть не знаю, чого я найбільше чекаю — чи як всі заспокояться, чи щоб воно все вже здохло, чи які взагалі є варіанти!

Маск там запостив голосування, чи потрібно йому залишити пост CEO. Хтось дуже проникливий пише: якщо всі будуть за, скаже що за кілька місяців знайде заміну; а якщо будуть проти, то каже що кілька місяців точно ще побуде, допоки почне шукати заміну. А чутки вже ширяться, що саудіти сказали йому знайти заміну собі для Твіттера і за допомогою опитувань він просто зберігає собі обличчя. 🧌

Не знаю, чи взагалі здатний Маск бути CEO, чи у SpaceX та Tesla йому пощастило з менеджерами, але зіткнення з іншою культурою йому дається максимально складно. Може тому, що він просто-напросто мудак.
💯32😁52
Автоінкремент — відстій

Будь ласка, припинить виставляти автоінкрементні ідентифікатори назовні. В урлах, в API, будь-де. З ними погано все:

• Ти видаєш назовні дані про те, скільки в тебе цих сутностей. Можливо тобі взагалі це фіолетово, особливо під час розробки, але бізнес-сторона не скаже тобі дякую потім за те, що всі конкуренти в курсі, як добре йде твій бізнес.
• Ти даєш дуже простий інтерфейс для парсингу всіх даних від тебе: звичайним циклом можна забрати абсолютно все.
• Вони виглядають однаково. Коли в тебе багато сутностей і багато айдішників, в якийсь момент ти в них заплутаєшся. :)
• Жодної семантики в них нема. Коли починається якийсь дебаг з 10-20 різними типами сутностей і айдішників — голова закипає.
• Ти їх видаси у своєму JSON'і як числа і тоді шансів щось змінити в тебе буде обмаль. Трохи нижче про це напишу.

То що ж робити?

• Найкраще — то коли ти можеш виставити назовні щось семантичне, slug. Перетворити у латинку нижнім регістром заголовок поста, назву фільтра чи його значення — це все нескладно, і якщо кількість сутностей дозволяє, нормально працює унікальним ідентифікатором.
• Якщо назва не дозволяє унікальності, можна додати до неї айдішник. Так, першу проблему ти не закриваєш, але всі інші закриваєш.
• Нема якоїсь конкретної назви або треба щось коротке? Візьми hashids, вони закодують твої циферки і якусь сіль у не дуже довгий рядок, і імплементація настільки проста, що є фактично для всього. На додаток, якщо з імплементації вирізати можливість мати списки, то результат ще й трошки коротшим стає IIRC. Плюс можна дати власну абетку, щоб не було схожих літер і простіше було людям прочитати це (для нас цей кейс важливий був, коли люди дзвонили у кол-центр з номерами замовлень).
• Комбінація назви та hashids, щоб таки не палити айдішник назовні.
• Проблему з однаковим виглядом можна, для найважливіших кейсів, вирішити префіксом, або якимось форматом. В Амазона формат номера замовлення \d{3}-\d+-\d+ (вчіть регекспи), в Касти K[\d\w]+, різне можна зробити. Це, до речі, дуже корисно для кількох найважливіших сутностей, коли вони регулярно вилазять в різних місцях, особливо у спілкуванні нетехнічних людей.
• Якщо фантазії взагалі не вистачає, візьми UUID4. Так, він довгий, це неможливо сказати вголос іншій людині, ти їх не будеш розрізняти між собою, але ти хоча б закриєш перші дві проблеми та не будеш видавати зайвих даних на волю.

Про числа. Всі фронтендери поділяються на два типи: тих, кому пофіг на типізацію (жс), і тих, хто робить життя людей нестерпним (всі інші). Уявімо, що ви писали першу реалізацію якомога швидше і всюди повидавали айдішники. А потім захотіли з них переїхати на що завгодно: на префікси, на base64, на UUID. Але не можете, бо всі клієнтські апки ваші айдішники розбирають як число і строку туди не підкласти ніколи. Для міграції залишається дві опції — від'ємні числа і якась хитра арифметика (додайте трильйон і сподівайтеся що ваші клієнти розумініші за int32 🤣).

Тому ніколи — чуєте, ніколи — не віддавайте ідентифікатори як число. Зробіть {"id": str(id)}, тоді у вас будуть шанси у майбутньому. Тим паче якщо ви віддасте їх як число, якийсь дуже розумний фронтендер десь помітить закономірність і щось оптимізує. Чи то швиденько пагінацію свою намутить (до речі, використовуйте курсори), чи ще якоюсь арифметикою займеться (деякі події зі свого життя я навіть не хочу розповідати 😅).

Найголовніше. Який би ти айдішник не згенерував, обов'язково запиши його в базу. Не треба оцих муток "я в апі розберу hashid назад у цифру і зроблю запит по ній", це, по-перше, довше, а, по-друге, ти задовбешся шукати руками в базі, логах та обмінах повідомленнями. Просто консистентно ідентифікуй всюди цю сутність її айдішником. Може і FK на цей айдішник варто робити, тут вже я не певен. :)
47💯17🔥10
Channel photo updated
Оце я розумію! Хоча здається трійки попереду не вистачає, а? :) Було б як у Back Orifice (я тоді в 99 перший раз це зустрів).

Пс сорі за повторні нотіфікашки, шарити в канал не можна, бо телеграм бо зна шо робить.
🔥34🤯1
Давайте підсумки підведемо, мож хоч і не річні, але того збору на дистанційні підривачі, вам же ж напевно цікаво. :) Зібрали ми всі майже 222 тисячі гривень, що трохи менше 240к, яких, як ми намічали, було повинно вистачити на 4 комплекти — але завдяки тому шо ціни плавають трохи, плюс обсягам, плюс трохи закладеному запасу всіх цих грошей вистачило на все що спланували. :)

Тому всі комплектуючі їдуть (більшою частиною, я так розумію, вже приїхали), плати робляться, корпуси виробляються і взагалі скоро все буде готове. :) Lead time не 3 дні, короч, але й не рік. 😁

Дякую вам всім за участь! 🎉
🔥7812
LLMs заходять у нашу реальність просто як шквал і ютуб завалений враженнями людей, які спробували ChatGPT. Було б непогано поговорити трошки глибше за перші враження?

Тож ми з Олексієм Орєшко обговоримо, як воно працює, чому раптово так круто, і які можуть бути наслідки. Олексій працює над LLMs (Large Language Models) у Google і загалом займається ML вже скоро 10 років — так що буде цікаво. :)

Так що готуйте вільний вечір на завтра (3 січня) о 19:00 за Києвом, ми чекаємо вас і ваші питання. І не забудьте відправити лінку друзям. :)
🔥532🤯2😁1