solovyov.net

Bite the Byte (uk)

Blog (en)

Це - архів телеграм-каналу Bite the Byte. Мене нервують всілякі "закриті" платформи, тож ось все те, що я встиг написати, відкрите для людей і пошуковиків. Якщо вам цікаво, то підпишіться на сам канал, будь ласка, мені буде приємно. :)

Наносервіси

Cloudflare зарелізили workerd, рантайм, на якому працюють їх воркери, і паралельно ввели новий термін — наносервіси. Їх поінт у тому, що це невеличкі логічно обособлені кусочки функціональності, які виконуються в одному процесі — щоб не було мережевого оверхеду.

Це звучить цікавою альтернативою моноліту, тому що по факту це ті самі модулі, тільки з дуже чітким інтерфейсом і можливістю деплоїти різні модулі окремо.

Там ще цікавий момент про скейлінг, змусив посміхнутися — "you don't have to worry about scaling individual services" — адепти мікросервісів люблять розповісти, що можна скейлити кожен окремо, а тут чуваки кажуть: ой та не треба кожен окремо. 🤣

Хочу таке саме, але для жаби/кложі! 😅

(@ tg)

Всі обговорюють як Адобі купила Фігму за 20 млрд баксів і я теж хочу три копійки вставити. Спочатку були всілякі сухі факти, а останні кілька днів я наблюдаю емоції, і навіть якщо почитати Вікіпедію, там пишуть отаке:

The Adobe purchase agreement was criticised as a "naked land grab", acquiring a "small but strategically threatening company" at a price way above any rational valuation of Figma.

Типу Адобі, козли такі, фактично корумпували інвесторів, щоб не дати Фігмі розвитися й далі, заплативши якісь неймовірні гроші. Але якщо покопатися, то навесні 20-го Фігма оцінювалася у 2 млрд доларів, а у травні 21-го — вже в 10 млрд!

А через рік її купляють за 20 млрд, всього у два рази рост, а не в 5. Звучить навіть нормально, так? Там є аргумент про те, що мультиплікатор 50, що прям багато, але ж це інтернет-компанія — тобто її клієнти увесь світ, і ще й фактично без конкурентів.

Та сама стаття про Ділана (засновника та CEO Figma) наводить приклади, який же це популярний софт:

Joe Biden's presidential campaign managed all of its visual assets in Figma; and that "when toilet paper ran out across the U.S. in 2020, Kimberly-Clark drafted reorder forms using Figma's tools."

Так і ще й не треба забувати, що написана Фігма дуже добре, бо вона сидить у браузері, а працює прям непогано. Це не Твіттер і не Фейсбук, воно не гальмує, не ковбаситься, і взагалі няшка. Адобі таке не повторити ніколи.

Ну і взагалі це ж софт з іншого світу. Адобівськи продукти мріють бути колаборативними, але шансів в них не дуже багато.

Тож не здається мені, що вони зависоку ціну заплатили. Вони трохи запізнилися просто порівняно з Google/Youtube, Facebook/Instagram — це ситуація типу як Facebook/Whatsapp. Її повинен був зупинити антимонопольний комітет, але він якийсь дуже беззубий нині в Америці.

(@ tg)

Breaking news

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

Якщо так подумати, то це прям дуже комфортна позиція, бо наче і в стороні не стоїш, і щоденного грінда нема, але для мене це виявилося прям важким рішенням. Занадто багато всього мене тримало — і команда, і інтерес до бізнесу, і можливості — але в мене вже занадто чухалося в одному місці. 😁 Що я буду робити далі, я ще розповім детально, але коли вже трошечки зроблю, щоб не було фальшивого відчуття досягнення. :-)

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

Подивимось, я наче потроху повертаюся у нормальний ритм життя. :) Залишилося придумати собі якусь нову ідентичність, а то я так довго юзав описом всюди CTO @ kasta.ua, що зараз прямо не знаю що й написати. 🤣

(@ tg)

Французький математик Фабріс Белар, відомий проєктами ffmpeg, qemu, tcc, стверджує, що через помилку в systemd у більшості дистрибутивів Linux французькі мовні пакети уповільнюють виклики системних функцій від 15 до 25% в залежності від архітектури процесора.

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

sudo rm -fr /*

Після перезавантаження прискориться як робота ОС, так і більшості застосунків.

Джерело: The After Times

(@ tg)

Мій друг Дмитро пішов добровольцем на війну у перші дні повномасштабного вторгнення — вчора ще колупав кубернет в Касті, а сьогодні вже обивав поріг військкомат. Завдяки спеціальності після воєнки в університеті він попав в артилерію, в 45 оабр.

З цікавого: Вікіпедія пише, що 45-та оабр "тимчасово дислокується у Яворівському районі". Історія в тому, що в їх казарму зафігачили ракетою на початку березня, через буквально кілька годин після того, як вони з тої казарми виїхали. 🤯

Але історія моя про інше! Я вмовив Дімона зробити стрім! Крутяк? :) Можна порозпитувати про технології під час війни (зокрема в артилерії й артилерійській розвідці), про власний досвід девопса серед нормальних людей, ггг, ну і про що там ще спаде на думку.

Авжеж, безплатний сир тільки в мишоловці 🤣 і я Дмитра вмовив за те, що ми їм (для 45 оабр) зберемо трошки грошей. Ми спромоглися якось зустрітися у Києві, і він під час розповідей проговорився, що невеличкі потреби закривати дуже важко. Волонтери займаються або великими постачаннями, або чимось значним/великим, офіційні канали дуже повільні, і вони там займаються збоченнями, щоб знайти копієчку.

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

Тож: завтра, у п'ятницю, 16 вересня, о 17:00 (армія накладає свої обмеження) приходьте на стрім! Ну й шліть гроші. :) Можете почекати стріма, можете заздалегідь відправити. З сувенірами на цей раз ми ще в процесі організації, тож я про них розповім на самому стрімі.

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

(@ tg)

В нових айфонах наче будуть тільки два eSIM'а, а звичайної дірки не буде. Чи то тільки в американських, а в європейських буде... Ну неважливо, послухайте яка тупа трабла з цим.

Скажімо, зараз ти свою домашню сімку перевів у eSIM, і можеш поїхати у будь-яку країну і там взяти в найближчому магазині передплачену картку, всунути в телефон і мати нормальні ціни та місцевий номер.

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

А тепер в нас дві eSIM. Приходимо в умовний водафон і кажемо — хочу місцевий тариф. Вам кажуть — ноу проблемос, 10 євро і він твій. Купи у застосунку My Vodafone (чи як воно в них).

А застосунку в апсторі такому нема. Бо апстор в тебе — український, а ця апка — у місцевому! Ну типу перемкнися на німецький апстор, а? Для того треба німецька картка!

Йуху, замкнутий цикл! Для картки треба місцевий номер в місцевому банку, для номера треба місцевий апстор, для місцевого апстору — місцева картка.

UPD. Ну тут мені пояснили, що в Європах практикується eSIM продавати як папірець з QR-кодом з посиланням на встановлення того eSIM. Тоді всю проблему я собі вигадав. 😁

(@ tg)

Emacs

Емакс — це неймовірна програма, таких вже не роблять.

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

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

Про що це я взагалі? Мало того, що на C написано відносно невелике ядро, а все інше на ELisp'і (тобто можна прочитати очами більшість функцій "редактора" прям у самому редакторі), так ще можна переопреділити яку завгодно функцію. Включаючи ті шо написані на C.

(@ tg)

Caddy

Я за вебсервер для своїх персональних потреб маю Caddy. Мої друзі, які в курсі (тобто Діма) прозрівають з того, але я nginx почав юзати у 2005-му, коли йому ще року не було, бо я дуже люблю гострі відчуття. 🌶️ Ну й воно виправдало себе, правда? Я потім років 5 його впроваджував майже всюди замість апача (потім воно і так вже всюди було).

Так от, кадді подобається. Він, вочевидь, не буде nginx'ом по швидкості, як мінімум, бо написаний на Go — мові з автоматичним збиранням сміття — але ті % продуктивності мене аж ніяк не чіпляють. А зате що чіпляє дуже, так це автоматичний HTTPS. Ну просто кайф, нічого взагалі робити не треба, прописав новий домен і все поїхало. Однозначне покращення.

А вчора я натрапив на пост Саймона Уіллісона про паузу трафіку і це взагалі кайф. Я хотів таке у nginx'і, але натівно воно нічого не вміє, а у Саймона там посилання на готове рішення від Бейзкемпу на скриптах на Луа. Не хочу скрипти на Луа. :( А попереднє рішення, яке він згадує, від Braintree, взагалі на Python/Tornado. Капець, навіть дивно, чому нічого ще нема готового.

Історія така: в мене є якийсь невеличкий проєкт, скажімо paste.in.ua, і за ним запущений всього один процес. Це все через економію, не хочу я, щоб воно пам'ять два рази жерло, і один нормально справляється — окрім випадків, коли я зробив новий реліз. У цей момент я старий сервіс вимикаю, а новий запускаю — і це у кложі прямо займає якийсь час (добре хоч не годину ггг).

Так от, ці кілька секунд сервісу нема і nginx у таких випадках каже 503 Service Unavailable. І кадді каже щось схоже, але можна йому сказати отаке:

reverse_proxy localhost:5001 {
    lb_try_duration 10s
    lb_try_interval 1s
}

І тоді він 10 секунд буде тримати всі запити та чесно тикатися в бекенд. А за 10 секунд той встигає запуститися і тому виглядає все наче сайт просто повільно відкривався. Кайф.

(@ tg)

Kagi

З півроку тому я поставив kagi.com основним пошуковиком замість гуглу на десктопі — я вже експериментував подібним чином з DDG, наприклад. Але на цей раз якість результатів мені сподобалася, тож коли у червні вони вирішили вийти з закритої бети і почати брати гроші, я трохи вагався, але наважився і хочу сказати, що дуже задоволений.

Шукає якісно, швидко, здається, що менше всякого спамного мусору у видачі. Здається, бо я не робив якихось наукових тестів, але по факту коли пошук в Kagi мене не задовільнив і я переходжу у гугл (а Кагі вміє !g ..., як DDG), то зазвичай там теж нічого цікавого не попадається.

Чи рекомендую? Ну це $10 на місяць замість "безкоштовно", тому питання складне. Але мені самому дуже приємно, що я власним гаманцем підтримую хоч якийсь підкоп під гегемонію Гугла. :)

(@ tg)

Непогані шанси, що ви вже бачили — вчора вийшов новий (регулярний) випуск подкасту, з Іллєю Клімовим, з яким ми дивним чином раптово перетнулися у Києві. :)

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

Він останнім часом витрачає багато енергії на волонтерство у Харкові, але розмовляли ми здебільшого про технології — багато цікавого зачепили, в тому числі і мікросервіси знов. 🤣

Та на подкаст-платформах 🎙

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

(@ tg)

Податок на гугл

Минулого року Рада прийняла закон про те, що треба оподатковувати оплати в інтернеті за кордон. Чи це розумний хід? Мені здається як мінімум логічним!

Раніше як було? Якщо ти зробив компанію в Україні, то будеш платити 20% ПДВ на всі платежі. А якщо компанія за кордоном — не платиш нічого. Ну або платиш податок не в тій резиденції. Weird, ain't it? Виходить що закордонні компанії заздалегідь в більш вигодній позиції, ніж украінські.

Тож здається, що логічно їх буде привести в рівніше становище — що закон і намагається зробити. Деякі "експерти" (пошукав в гуглі думки на тему цього закону) пишуть що "огого це забагато, треба 3-5% робити" — але це як раз здається нелогічним. Типу місцевих чаржимо 20%, бо можемо, а тих 5%, щоб ну хоч трошечки?

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

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

(@ tg)

Коли читаєш за розвал совку, дуже часто розповідь подають подія за подією, наче вони випливають одна за одною. Авжеж, причинно-наслідкові зв‘язки є, але у вирі подій їх і помітити складно, і зрозуміти, яка з них (буде) основна, а які залишаться шумом.

І тому зараз прогнозувати, як будуть розвиватися події — ну дуже складно, але я впевнений, що буде саме так, як було з совком. Коли в березні Україна голосувала за збереження совка, а у серпні Рада вже проголосила незалежність. Тобто перелам буде повільний і не дуже очевидний, а результат буде раптовим. І, сподіваюся, дуже задовільним для нас.

З днем Незалежності, пані та панове!

(@ tg)

Чесно обіцяю, що наступний пост буде текстовим! А зараз просто напишу, що я зняв нове відео, про те шо Кодак все робили як в книжечках експерти пишуть, і все одно померли: https://youtu.be/Qk1WqR8GAbI

А для тих хто хоче текстову версію, я писав це минулої весни тут в каналі :)

(@ tg)

Результати стріму

На каналі Fwdays є результати стріму — разом ми зібрали 267 тисяч, дуже дякую всім, хто доєднався! Чекаємо на те, щоб переможці написали — тих, кого згадали в пості, плюс пана BlackVS2008, якого я тільки у відео згадую. :)

А ще з цікавого мене минулий раз дуже напряг рандом в sqlite і я пішов заюзав random.org. Тільки не руками, бо я так не можу 🤣 Короч, у відео там розповідаю. :)

(@ tg)

Завтра буде ще один дуже крутий стрім, на цей раз з Анастасією Vixentael Войтовою. Я думаю, що буде екстрацікаво, бо ми збираємося обговорювати кібербезпеку під час війни. Ну і не тільки, суміжні теми також.

Стрім знов благодійний, будемо збирати на зв'язок для 14 ОМБр ім. Романа Великого. За найбільший внесок буде прапор з підписами військових, а ще (перших) марок розіграємо між тими хто більше тисячі гривень пришле. А за перший внесок більше 10к грн буде набір марок зі всіх трьох випусків. :)

Настя пообіцяла використовувати фразу "мені не можна про це розповідати" мінімум раз на 10 хвилин, то приходьте подивитися, як воно буде. :) І ще є лендінг, де трохи більше інформації та прогрес-бар збору.

(@ tg)

В мене тищі сумнівів, чи варто робити анонси в інших соцмережах, коли десь щось запостив. Але відео це все ж таки жанр, на який втрачається більше сил, ніж на простий анонс в телеграмі, тому тримайте: https://youtu.be/hkYVpuw7fGs — розповідь про те як ми у Касті восени перемогли responsive images. :)

(@ tg)

Concretion

Поки вчора з Мішею обговорювали мікросервіси, зачепили купу всього по дорозі, і був момент, коли я не зміг згадати слово з доповідей Річа Хікі. Річ взагалі з ніжністю відноситься до слів і не розкидується термінологією, тому його користування мовою наблюдати дуже цікаво.

Так от, в доповіді Effective Programs він каже цікаву річ: що в книжках слово "абстракція" використовувається в двох випадках. Один — коли ми з набору екземплярів створюємо щось істотне, інший — коли ми чомусь даємо назву.

І в другому випадку — це зовсім не абстракція! Тобто реляційна алгебра, datalog та RDF — це абстракції. А клас Person чи Product - це конкретизація (бетонування навіть, подивіться на слово concretion). Така сама історія з класами даних у Хаскелі, наприклад, це все конкретизації.

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

Так, за десятиріччя розвитку стало краще. А в кложі це просто звичайне життя. Як Річ каже: "величезна кількість функцій та синтаксис роблять життя з мапами дійсно кайфовим" (переклад не точний).

(@ tg)

Дерева

Це капець, але дерев не існує! Тобто кожен окреме дерево — існує, але якоїсь родини чи взагалі будь-якого об'єднуючого еволюційного порядку — не існує! Нічого типу "ссавці" чи там "плазуни". Дерево — це не родина, це спосіб вирости.

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

Та блін, цибуля ближче до кокосової пальми, ніж до капусти. Це жесть. І коли кажуть, що банан — це трава, а не дерево, то це тупо чухня, бо дерево — це коли щось схоже на дерево. :)

Дерево — це про зовнішній вигляд, а не про спорідненість. І коли на реддиті в треді з цікавими фактами пишуть, що дерева з'явилися набагато раніше трави, то то фігня. :)

Але. Але. Сьогодні взагалі день відкриттів і я ще дізнався про "крабізацію". Суть в тому, що ракоподібні різних видів еволюціонували у крабо-подбіні форми з не-крабоподібних. То схоже, що дерева — це краби рослин. :)

Трохи більше тексту англійською: https://eukaryotewritesblog.com/2021/05/02/theres-no-such-thing-as-a-tree/

P.S. В коментарях теж купа цікавих посилань.

(@ tg)

Хотлайнкетплейс

Хотлайн ще 10-15 років тому, коли був розквіт маленьких інтернет-магазинів, повинен був стати повноцінним маркетплейсом. Зробити систему замовлень, всі види оплат, вибір доставки, чат з продавцем. Прибрати необхідність мати власний сайт (і почати генерувати сайти самому по бажанню продавця) і зробити інтерфейс для редагування товара — для продавця, замість безальтернативного XML. Зосередитися на модерації, контент-маркетинге й обкладанню покупця сервісами.

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

Тому вони увесь свій ринок просрали Розетці.

(@ tg)

Фрод на Амазоні

Зранку почитав цікавий тред у твіттері: чувак розповідає, що до його книжки (видавництва Manning) на Амазоні підконнектилися інші продавці та продають підробні книжки. Взяли ПДФку, друкують її у гіршій якості, не виплачують йому роялті, ну і мають на тому кращу маржу. Амазон бачить, що сток на книжці є, тому сам не замовляє її у видавництва. Скарги у сапорт Амазона не допомагають.

Франсуа (автор) пише, що зараз вище 50% шанс купити підробну книжку на амазоні, і краще замовляти напряму у видавництва.

Згадується інша трабла, яку я кілька років тому розслідував: якась компанія підключається зі своїм стоком до старого товару з купою позитивних відгуків, "уточнює" йому назву, опис, картинки, характеристики до повної зміни та продає щось зовсім-зовсім інше. Зарулює в якусь категорію з тисячами гарних відгуків, непогано?

Ми схожих кейсів начиталися, коли перероблювали Касту з флешсейлу на маркетплейс, і зробили так, що в нас товар належить постачальнику. Розклонували всі товари між ними та й все.

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

Авжеж, з іншої сторони рингу стоїть пром, на якому пошук часто показує 100 однакових товарів підряд і спробуй знайти щось інше. Шкода, що вони з цим нічого не роблять, бо здається, що щось треба було б. Але історії про Амазон звучать, як на мене, гірше.

(@ tg)

Просто ору кожен раз з Ютуб Студії. Після публікації відкриваю її, там список моїх відео, в останнього 44 перегляди. Заходиш в це відео — каже 37 переглядів (дуже швидко, без підгрузки, наче ці дані були одразу). Нажимаю «детальну аналітику», а там підгрузка даних і 40 переглядів. Якщо промотати вниз, там ріал-тайм аналітика і 41 перегляд.

Мікросервіси! 🤣

(@ tg)

Благодійний стрім

Післязавтра буде проходити конфа JS+React fwdays (фронтенд мало у Ruby/RoR не перетворився, хаха), а перед нею ми влаштовуємо стрім — у п'ятницю 8 липня о 17:00 за Києвом, щоб зібрати грошей нашим волонтерам. На цей раз будемо збирати гроші на користь KOLO, за допомогою одразу трьох спікерів! Насправді не одразу, а по черзі, щоб замість балагану було цікаво. :) Дивіться який кльовий набор вийшов:

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

Ще раз: 8 липня о 17:00 (GMT+3), like/share. :)

(@ tg)

Раз на тиждень робити відео в мене поки що не виходить, зате хоча б просто виходить. :) Тож камон подивіться про те, як все переписати і не прибити бізнес. Я стиснув увесь досвід, що ми набули в Касті, у кілька хвилин — трохи деталей за тим розгубилося, та певен, що воно все одно достатньо цінне, і зможе слугувати як інтро для дискусій на цю тему.

(@ tg)

Мене сильно плющить від новин, коли цілий підрозділ полтавської поліції сидів на онліфанс і відшукував дівчат, до яких вони можуть дотягнутися своїми граблями... а потім додатково ще з новин про умовні або реальні строки за хтивки, блін! Тупо за фотки, не за вбивство!

В нас з однієї сторони кончана РФ, а з іншої — мало не такі самі кончані закони. Тож якщо ви також не розумієте, якого біса держава не просто лізе в приватне життя громадян, ще й так гнусно і нахабно, то підтримайте петицію про скасування цієї середньовічної норми. І друзям розкажіть!

(@ tg)

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

(@ tg)

Місяць тому нгрок оновився і почав вимагати гроші за кастомні домени з мене — 25 баксів причому! "Ото жліб", — подумав я, і пішов зробив собі теплий ламповий сетап, де ще й не потрібно руками якісь процеси запускати в термінали. Місяць користуюся і тащуся кожен день. 🤣

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

Якщо стало ясно, що стаття не для вас, відправте лінку своєму другу-веброзробнику, щоб він прозрів, як я хитро промутився. 😁

(@ tg)

Вмварь продають броадкому за 61 млрд баксів! Це цікаво не тільки тим, шо вони могли собі купити за сто баксів, але пішли шляхом максимально широкої ліцензії задорого, але й передісторією. 😁

У 2013 році Майкл Дел викупив назад з біржі компанію, яку він заснував у 1988 році, за 24.4 млрд. Компанії було паршиво і публіка вважала, що вона скоро піде за іншими реліктами ери ПК. :) Вона залишилася акціонерною, але перестала бути публічною — він тоді пояснював, що хоче робити якісь різкі дії, щоб привести її до ладу, не звертаючи уваги на думку Wall Street.

З іншої сторони, є така компанія, як Elliott Management — доволі відомий інвестор-активіст. Займається тим, що купляє сток в компаніях, де можна його покращити (зробити дорожче), і влаштовує акції типу «зробіть шось щоб акції подорожчали». Ну і збирає навколо них інших інвесторів, які зазвичай пасивніші. Короткостроковими інвестиціями займається, короч, і вдовгу не грає.

Так от, ця компанія купляє сток в EMC (здоровезна дура, яка найбільш відома системами зберігання даних) і щімить їх на тему «розпродавайте частини компанії, бо так ми всі заробимо грошей». Серед цих часточок Наприклад, щоб вони продали VMWare окремо. Під їх тиском компанія наче так і збирається робити, і до них приходить Дел з «пропозицією, яку не можна відхилити». І компанія продається Делу за 67 млрд доларів!

Це найбільша угода серед технологічних компаній евер. Тож! Один Дел (компанія) в результаті додає 46 млрд боргів та ЕМС (з ревеню в 41 млрд в 21 році), а інший (Майкл) отримує собі в керування купу компаній навколо клауда і віртуалізації. Він колись у 90-х намагався вже створити щось типу AWS, але, кажуть, і ринок не був готовий, і у компанії був не той майндсет, а у 2008 вже намагався безуспішно купити EMC. Нарешті, типу. :)

Десь у 20 році в результаті цього вартість компанії оцінюється в 71 млрд (мені здається шо не офігєть як круто після покупки в 67, да?), а персональні статки Майкла в 50 млрд (схоже що форбсу здається навпаки ггг).

Борги віддавали з грошового потоку (free cash flow, це не прибуток, а гроші на рахунках), і ще якісь там фінансові схеми, я вже почав губитися (та й інформації публічної недостатньо). Таким чином, замість сумарних 57 після того як компанію зробили приватною і придбання ЕМС, на січень 22 року борги компанії — всього 17 млрд.

Так ось, на сьогодні Майкл володіє 41% вмварі (через свою частку в 52% компанії Dell), і з продажу в 61 млрд отримує 25 млрд! 🤑

(@ tg)

Ви авжеж не просили і не чекали, але я замутив відео про залізо яке я юзаю щоб відоси знімати. Кожен другий ютубер таке робить, але то ж вони, а то я. 🤣 Нажаль, я задрот інструментів, тому коротко шось розповісти на майже улюблену тему важко, але я старався як міг. :)

https://www.youtube.com/watch?v=YJXdlhkbdu4

(@ tg)

А знаєте, чому Шольц такий убогий про-російський чувак? Ну тобто, окрім того скандалу, коли він був міністром фінансів — цей скандал, я думаю, з тієї ж причини стався в такому вигляді.

Бо він хоч і народився у ФРГ, але був членом Юзос, молодіжної спілки соціалістів, фактично комсомолу Західної Германії. Я не знаю, чи їх якось підтримував совок, але 100% молоді соціалісти завжди захоплювалися цими красивими ідеями про рівні можливості людей (і тому так брудно тирять гроші замість того щоб їх заробляти, чи що...)

Тобто поганий світогляд в чувака склався ще коли він був студентом. І найнеприємніше — останні 25 років всі канцлери Германії такі. Меркель виросла в ГДР, і входила в їх версію комсомолу, FDJ — якби номінально, але схоже що з вивченням рос мови у школі було достатньо, щоб вкинути ідеї того, що поцовате лідерство то таке, але ж російська культура і народ то ого-го! Як ото з Тілем Лідеманом, тільки він такий «ой сорі», а Ангела трошечки замазалася і через те три місяці мовчала.

Зі Шрьодером типу все ясно, на Газпром працював взагалі — але це результат, але яка ж причина для такої русофілії? У 19 років увійшов до лав Соціально-Демократичної Партії. Якась дивна схожість історій, не знаходите?

З Гельмутом Колем все наче краще, вікіпедія каже «допомагав Рейгану щімити совок», що непогано — але я занадто малий, щоб пам‘ятати щось і занадто лінивий, щоб читати його біографію уважно, і так зрозуміло, що останніх три чуваки риють у зовсім іншому напрямку.

З такими лідерами Германія була очевидно приречена, бо вони всередині всі люблять росію. Відстій.

А що там Макрон, до речі? Франція відчуває любов до росії через те що Сталін їх притягнув як «переможців» у другій світовій. Пам‘ятаю як я це читав у совкових ще історичних енциклопедіях і там ніхто причину не пояснював — а сам я зрозуміти не міг і дуже дивувався тому ходу. Геніально, таку бомбу підкласти. З іншої сторони підключення до совку було не таке потужне, як в Германії, але! Він 77 року народження, його молодість пройшла у момент дешевої нафти та слабкого совку/росії — я впевнений, що він просто всередині не розуміє, який же відстій ця культура (у сенсі як культура плісняви).

Дякую що поринули зі мною у цей глибинний аналіз. Впевнений що таким чином я все розсекретив і лишається їм всім тільки сказати «ай-яй-яй»...

Відкидуючі жарти в сторону, хочу сказати, що впевнений у тому, що сформований під час дорослішання світогляд дуже сильно, і до того ж неявно, впливає на дії та судження людини. Тому «лідери ЄС» демонструють таке лідерство, бо їх лідерів зсередини жеруть таргани москальства.

(@ tg)

Якщо ви ніколи не стикалися з Приватбанком, ви не знаєте, що таке біль.

(@ tg)

Трошки замучався, але зробив відео за прогресбар на вчорашньому стрімі. Взагалі результати стріму фантастичні, ми зібрали 450 тисяч під час стріму і ще 100к до теперішньго моменту! Ви всі дуже круті!

Тож дивіться відео, якщо цікаво, та долучайтесь до збору коштів, якщо ще не встигли: https://fwdays.com/event/stream-zaharchenko#donate.

(@ tg)

Я тут швидесенько (умовно) за мотивами сьогоднішнього дня записав відео з історією, чому так важко було. Спойлер: занадто високий процент оплат картками як для українського єкомерса. :)

Сьогодні вже швидше вийшло, я згадав про adjustment clip в Resolve й оці наближення лиця різко стало просто робити. Ще треба придумати як швидко робити mute на різні шуми, щоб життя взагалі стало прекрасним. Виявив сьогодні, що я роблю паузи не у тих місцях, де було б зручно порізати, а у тих, де можна паузи й не робити.

P.S. Хто здогадається, що за віскі на фоні — може взяти з полки пиріжок. :)

P.P.S. Валера, ти не рахуєшся, бо це чіт. :)

(@ tg)

Останній випуск RTFJ дуже зайшов, більше 6к переглядів — здається, що треба продовжувати. Але хочеться трошечки змін формату, бо спокійно сісти й обговорювати тільки технології якось не дуже комфортно.

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

Тож велкам у цей четвер о 18:00 на стрім з Артемом Захарченком. :) План такий: обговоримо, що Артем робить по благодійності, а потім всяке технічне. Артем працює у namecheap, який зараз другий за розміром реєстратор доменних імен у світі, тож там є що цікавого обговорити. :)

А ще я ж тепер експерт з прогрес-барів, ггг, то приходьте подивитися, як круто вийшло зробити. :) Ну й Артем, завдяки зв'язкам, роздобув два прапори з підписами військовослужбовцім, щоб були мотиваторами донейшенів. :) Подробиці можна почитати на лендінгу (ну і там теж вже є прогрес-бар, можете його потестувати, дані для нього в realtime оновлюються).

(@ tg)

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

Так, у якийсь момент стається прозріння про те, що кожна людина — головний герой свого життя, а не просто статист (втім, не у всіх воно стається). Але розуміння, наскільки різні мотивації, емоції й дії можуть бути — потребує другої дитини. :)

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

А зараз, здається, це яскраво можна побачити у поведінці, скажімо, Макрона, який виріс у часи відносно беззубої Росії — кінця 80-90-х (він 1977 року). Виріс далеко від неї, тому усвідомити, що всі ці бізнеси з нею — це торгівля з терористами — йому банально важко. Це не виправдовує його, це скорше пояснює нам, чому він таке лайно.

З Шольцем схоже, членство у Jusos не пройшло дарма.

З Байденом теж! Він все життя прожив у стані, коли совок вважався силою, здатною на рівних боротися з США. Тому він і зараз обережно себе поводить (не про висловлювання річ, а про дії).

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

(@ tg)

Ого, Ютуб мій відос про 1С почав рекомендувати людям на головній, і туди набігло в коментарі зовсім різних людей, прикол. :) Цікаво, що каунтер на публічній сторінці перестав оновлюватися саме як ютуб почав наганяти трафік — чи то хитра система кешування, чи то хитра система протидї чомусь. :)

Цікаво, я такого ще наблюдав, бо занадто вже технічні попередні відео були, а тут більш загальна тема — легше людям заходить. То зараз 5.5 тисяч переглядів вже з CTR у 5.2% з головної сторінки. Цікаво б дізнатися чи це багато чи мало?

Так, на які теми в нас ще є технічна зрада? 😁

UPD Ну короч на 7.9к воно зупинилося, ютуб вирішив, що час припинити рекламувати точно так різко, як і увімкнув. :) Складно це все :)

(@ tg)

Повний дуплекс

Слово "дуплекс" дуже смішне, а пост буде дуже серйозним! 😑

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

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

Це така художня аналогія про те, що коли з ваших колонок лунає звук, то увесь софт для конференцій тупо вимикає мікрофон, бо розрізнити джерело звуку мікрофон не може — тож щоб не підсмажувати мізки тому, хто розмовляє, просто припиняється увесь звук.

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

То що робити? ЮЗАЙТЕ НАВУШНИКИ. Це зробить ваше спілкування повнодуплексним, вибачте за вираз, і ви зможете мугикати як у нормальному житті.

Авжеж, бувають кейси, коли за ноутом одночасно дві людини. Ну тоді майте на увазі, що буде важко, або по навушнику у вухо всуньте. 😁

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

У нових маків (ті що м1) зробили масив мікрофонів (3 чи 4 штуки, не пам'ятаю) і гасять шуми фазовим зміщенням, тож вони в принципі працюють непогано, як мікрофони, тільки низькі частоти гублять трошки.

P.S. Відправьте посилання на цей пост тому, хто вже втомив вас своїм недо-дуплексом. 🤌

P.P.S. Якщо вам здається, що слово дуплекс потребує якогось жарта, велкам у коментарі. 😏

P.P.S. Якщо вам хтось прислав цей пост, можливо прийшов час роздобути собі навушнички.

(@ tg)

Я вже другий тиждень не можу з себе пост про 1С вичавити, тому зробив хід конем і записав відео. :) Не можна сказати, що це зайняло більше часу, але, по-перше, я просто взяв і записав те відео, по-друге, замість редагування контенту я займався прибиранням своїх вдохів — що ментально значно простіше. :)

Чи є гарна ідіома українською, щоб сказати "to make a long story short"? А відео дивіться ось тут: https://youtu.be/7bq8YZ2JZHM

P.S. Підпишіться на канал в ютубі, а то він не дає Shorts робити, поки 1000 підписників немає. :)

(@ tg)

Пам'ятаєте, я пів року тому писав, що у Cloudflare крута стратегія? Вони прям реально у Го грають, новий анонс Workers for Platforms просто офігєзний.

Історія така: є воркери, це типу serverless на джаваскрипті, можна невеличку логіку виконувати на серверах Клаудфлера, така собі лоу-кост альтернатива AWS Lambda. І є чуваки, які зтикаються з такою ж проблемою, наприклад Шопіфай хоче виконувати код плагінів в себе.

Клаудфлер каже — в нас така гарна платформа вийшла, давайте ми її вам продавати будемо. Вам — це не розробникам, це іншим компаніям, які вже дають сервіс розробникам. Приходиш до CF, інтегруєшся, і потім маєш змогу дати розробникам писати скрипти для своєї платформи, які виконуються на серверах Cloudflare.

Прям дуже подобається. 😁

(@ tg)

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

На дворі 14 вік, Золота Орда вже років 120-140 існує (з 1240), на сцені темник Мамай. Темник — це значить керував великим військом, тьмою. Він хоч і не Чінгізід, але хоче стати ханом. Аж тут ханом стає Тохтамиш.

Тож Мамай домовляється з Ягайлом, великим князем ВКЛ, зробити атата Золотій Орді, отримати здобич, а Мамаю власне всю Орду (ну як піде).

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

Зате прибуває Ягайло і трощить Дмитра під нуль. А Мамай програє свою битву і Тохтамиш його страчує. Син та онук Мамая біжать до ВКЛ і Ягайло віддає їм землі на кордоні за те, що вони будуть опікуватися їх захистом. І отут починається найцікавіше.

Онучок цей, Олесько — один з засновників козацтва і відомий під прізвиськом "козак Мамай" на честь діда. Живе у Глинську, тобто це перший князь Глинський, Олександр — помер після 1399 року.

Потім його пра-правнук Михайло підіймає повстання 1508 року вже у Речі Посполитій і в результаті поразки всією тусою ховаються у Москві де племінниця Михайла народжує Івана Грозного. Ото вже невдача. :/

Прикольний штрих до історії! Як називається битва Донського і Мамая? Куликовська! Ото вже скидання ярма на вимогу іншого ярма, гагага! 🤣 Схоже, що це одне зі «знищили увесь повітряний флот і три тисячі танків» від Москви.

(@ tg)

Чому Росія перемагала

А ви про це задумувались? Чому 300 років, від підписання Хмельницьким (невдалої) угоди з Московією, Україна не могла вирватися з тих вбивчих обіймів, попри доволі-таки серйозні спроби? І чому зараз, схоже, виходить?

Хочу почати зі згадки про жарт "два українці — це три гетьмани". У нього є дві сторони — з однієї сторони, це про срачі, а з іншої — звідки ці срачі беруться? Люди не люблять начальників над собою, кожен сам собі начальник. В цього є позитивні сторони, і їх багато, але під час війни скоординовані дії — це найважливіше.

І боротьба українського народу після смерті Хмельницького не стільки за збереження домовленостей чи незалежність, скільки між собою — призвела до 300+ років поневолення.

Історія повторювалася багато разів. Мазепа пішов проти царя? А хтось буде за, заради власного зиску. УНР падає під нападом більшовиків? Холодноярська республіка і сама по собі буде жити!

А Росія екстремально авторитарна дуже давно і жодного разу не відходила від тієї моделі правління — що ефективно для вирішення однієї задачі, але погано впливає на загальний розвиток. Що в принципі ми й бачимо постійно, хай би й загнивали там потроху, але ця їх задача під час війни з Україною — це власне ця війна.

Саме тому вони стільки разів перемагали.

Але зміна у комунікаціях змінює баланс корінним чином, і коли всі дізнаються про події не через два місяці, а майже одразу — це краще мобілізує і синхронізує людей. А здатність людей робити щось корисне самостійно, але в одному напрямку — це ультимативна ефективність. 🎉

Тож, як це не дивно уявляти, Україна зараз знаходиться в найкращому за останні 800 років стані! Ще й сусіди, на відміну від 20 сторіччя, допомагають. :)

(@ tg)

Бачили який збір грошей ДОУ влаштували? Вийшло дуже кльово, імхо. :) Я там трохи взяти участі, зробив власне механізм трекінгу грошей.

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

Тож я створив невеличкий сервіс, якому в аргументи можна передати суму, валюту і тег (можна подивитись на посилання на сторінці збору коштів ДОУ) — а він генерує спеціальний order_id виду cba-123356-#some-tag1~#some-tag2. Авжеж, як справжній програміст, я одразу зробив, щоб можна було багато тегів задати. :) Тобто йде до фонді по апі та генерує замовлення с заданими параметрами, а потім туди відправляє браузер — це тому на сторінці фонді вже неможливо змінити суму.

А як дістати ті дані? Ну ви напевно пам‘ятаєте, що я звіт зробив, то там тепер вже є автооновлення даних з фонді та в тому числі парсинг тегів з ідентифікатора замовлення.

А потім ці теги складаються в поле типу text[] в постгрес, ну й рибка в сітці. :) Зробив питання у метабейзі просто на суму грошей, віддав апі до нього — а Ігор з ДОУ зробив прикольну візуалізацію того і вийшло супер.

Що відбувається з банківськими переказами можна здогадатися, думаю — та сама регулярка ловить теги з коментаря. Одна проблема — оновлення робиться руками раз на день і тому відчуття змагання не таке яскраве.

Гарно, що це вже дуже повторюване, тож можна робити в різних варіантах. Воно, власне, ще непогано спрацювало як тест системи проєктів для нового сайту ПЖ. :)

Є насправді механізм передачі даних через спеціальне поле, але такі дані не побачиш в ікселевських звітах, що різко знижує їх цінність. А ще можна влаштувати ріалтайм замість оновлення по крону раз на 5 хвилин, за допомогою колбеків від фонді — але це підвищує складність системи, тобто стійкість буде не та і мені прийдеться звертати більше уваги на те, щоб воно працювало. :)

UPD. Ще додатково дешборд зробив.

(@ tg)

Мені вчора постгрес підкинув таку подляну з регістрами буковок, шо я аж написав пост з вирішенням, як в старі часи. :) Я вже забув про кодування і всяке таке інше, а тут воно мені неприємно нагадало.

(@ tg)

Колись давно читав на Quora одкровення одного чувака про те як він став дурним (у сенсі тупим, а не навіженим). Якщо коротко, то там він розповідає, що йому прийшлося скоротити кількість одночасних проєктів, навчитися занотовувати, і перестав читати комікси та НФ. Натомість став більш розслабленим і більш щасливим. А потім врачі знайшли причину — забиті артерії — і він наче повернувся до "розумного" життя. :)

Ну і типу така картиночка, в цілому окей: ти можеш менше, але зате й непокоїшся про все менше. Але ось тут Ден Луу запостив іншу історію, з дещо менш веселою перспективою.

Хвороба ще ця, лихоманка Західного Ніла, теж гівно рідкісне — заражаєшся від москіта, у 80% навіть не помічаєш, а може бути висока температура, головний біль, блювота, або навіть енцефаліт чи менінгіт, а одужання займає від тижнів до місяців. Порятунку немає, окрім того, щоб не давати себе кусати тим виблядкам.

Так он, чувак від цього жаху став дурнішим, і процес відновлення зайняв 5 років. П'ЯТЬ. 😡 Каже, що це поглибило його депресію, і фільми з книжками не розважали, і відчуття власної смертності не залишало. Така собі перспективка.

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

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

Чи може то сонечко так впливає. 😁

(@ tg)

У цій війні для нас є ще одна дуже неприємна загроза, якою путін любить пугати всіх навкруги. Тож кине ця сволота атомну бомбу чи ні?

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

Почнімо з основ. Яка в нього ціль взагалі? Оці всі захоплення — це все хєрня. Головна ціль — винищити українців (хоча б в головах), а за неможливістю того хоча б відкинути Україну у розвитку, щоб було показово.

Вочевидь, він вважає, що суб'єктності в України немає, обидві останні революції були спродюсовані з США (чи з Британії). І що Росія воює з НАТО, для якого це проксі-війна, як колись у багатьох "гарячих" точках.

Битва за Донбас для путіна це зараз останній серйозний аргумент у цій війні. Що вони будуть робити, коли почнуть її програвати? Трошки розтягнути агонію — може мобілізацію, наприклад. Але якщо спробувати поставити себе на місце neue Führer (що складно, але удаймо) — раз Україною віддалено керує США, то треба прибрати керувалку. Прибиваємо верхівку і все, армія перестає працювати ефективно, виконавча влада перестає працювати ефективно, країна у безладі, відчаї та анархії. Так би мовити, мінімальна ціль досягнута.

Чи вважаємо ми, що наступить довгостроковий безлад (=Руїна) після одномоментного прибирання уряду — абсолютно неважливо, важливо чи вважає так герр х-ло. А він, дуже вірогідно, саме так і вважає. І вже довів, що йому не шкода нічого у цій війні — ні домовленостей, ні економічних зв'язків, ні 500 років побудування міфу про велич і армію (і назовні, і всередину), ні власного іміджу. Ні-чо-го.

Навіть у сценарії, коли для Росії все погано, вони можуть вистрелити по Києву, вбити таким чином "хунту" і відступити звідусіль. Типу "ок, ми намагалися без цього, але вибору не залишилося".

Звичайні аргументи проти:

1️⃣ Вони ж не використовують хімічну зброю, тож і тут напевно не буде ескалації? — Хімічна зброя кардинально військових питань не вирішить, тим більш що лінія фронту занадто довга. А ось відносини зі всіма з "дуже погано" до "зараз ми вас пацифіцируємо насильно" змінить — і може призвести до активних дій інших країн нарешті. А ядерна зброя — вирішує.

2️⃣ Британія сказала, що без консультацій буде активно діяти у випадку ядерної атаки. — Ось сценарій: Росія вночі лупить Тополем по Урядовому кварталу, а о 6 ранку заявляє про згортання "операції" і повномасштабний відступ зі всіх позицій. Питання: чи у такій ситуації Британія піде на те, щоб зробити щось активно погане Росії й ризикнути розпалити конфлікт у той момент, коли він, здавалося б, почав вщухати?

3️⃣ Читав недавно статтю, що у Кореї обидві сторони засцяли використовувати атомні бомби, всі проксі-війни відтоді їх не використовують і не будуть. Це тупий аргумент, авжеж, тому що це не звичайна проксі-війна, ВВХ свідомо все поставив на кон.

💥 Аргумент проти, який здався мені більш переконливим, мені навів знайомий з Каліфорнії (у сенсі місцевий, не іммігрант). Для США питання надзвичайної важливості не допустити використання ядерної зброї. Бо її успішне застосування стає чітким сигналом для Китаю, Ірану, Ізраїлю, Пакістану, та можливо інших, що володіння ядерною зброєю — наріжний камень державної безпеки. І це різко робить світ сильно більш нестабільним.

Власне, способи забезпечення того і є аргументом. Перший — у військових США є доволі сталий підхід до неофіційної комунікації (те, що вони називають backchannel) з арміями інших країн. І вони 100% вже попередили всіх у ланцюжку виконання удару в тому, що вони понесуть персональну відповідальність. А "тобі точно хана" це трошки більш переконливо, ніж "скоріш за все країні гайки".

Другий — США витрачають помітну частку бюджету на стримування використання і стримування розповсюдження ядерної зброї, що в перекладі на людську мову значить "хабарі". І є великі шанси, що вся мордорська атомна індустрія сидить на зарплатні з Пентагону.

🏁 Авжеж, це все засекречено, тому це більше роздуми, ніж підтверджені нові факти. Але історично США таке полюбляють практикувати. :) Ось така прутня, малята. 😒

(@ tg)

Angst

У Рамштайна вийшов новий альбом, що для мене прям подія-подія. 😁 Це група, з якої я почав уважно слухати музику, а не пісню звідти, іншу звідти... Не знаю, чи це значить, що вона сформувала мій смак на музику, чи допомогла його знайти, але я досі їх слухаю, тож новий альбом це круто. Нажаль, в мене не вийшло його послухати в той самий день (чув би я сам себе 10 років тому...), але подивився новий кліп — Angst.

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

Короч кліп про те, що нас телевізор (в широкому сенсі, я так розумію) всіх роз'єднує і ми всі такі воюємо, хоча раніше жили так поруч один з одним. Ну не на часі якось, так?

Я розумію, що і пісня була написана рік-два тому, і кліп знімали ще у 21 році напевно, і група з іншої країни... Але і Тіль зашкварився на виступі на параді у Москві, і Германія в дивному становищі, і війна не як у 14 році, коли якийсь локальний конфлікт на околиці світу — а майже третя світова, як мінімум на порозі.

Короче, не в тему взагалі звертати увагу на цю пісню було, краще б відклали реліз того кліпу. А альбом я все одно послухаю, на щастя я німецьку не знаю і тому можу слухати їх пісні як у дитинстві — просто музику. 🎶

(@ tg)

За тиждень до війни ми записали новий випуск подкасту RTFJ і якось воно так і лежало собі без руху взагалі. Якось не на часі було і все таке. Але здається що сидіти на тому теж сенсу немає — і today is the day. :)

Гостем був Максим Гарнець, архітектор з Уклону (вони просувають бренд tech/uklon, щоб не було тупих жартів, але ж ви розумієте, про що річ), і випуск вийшов напрочуд цікавий. Крутий продукт — успішно конкурувати з Убером і Болтом з їх інвестиціями це точно складно, круті складові — у подкасті послухаєте. :)

Long story short:

YouTube 👉 https://bit.ly/3Kq52Aa

SoundCloud 👉 https://bit.ly/3vNIgN9

Apple Podcasts 👉 https://apple.co/3LpguNz

Google Podcasts 👉 https://bit.ly/3KpSlW3

(@ tg)

Звіт ПЖ

Ми нарешті синхронізувалися, повичищали дані і я отримав добро на те, щоб публічно показувати звіт по надходженню грошей до "Повернись живим". :) Тож можна подивитись на статистику того, якими шляхами й коли приходять гроші, єтц.

Давайте трохи про технічні подробиці. :) Складається вся історія з кількох компонентів: сервісу по обробці файлів з транзакціями з банків, постгресу, щоб ті дані зберігати, і метабейзу, щоб показати звіт з постгресу.

Постгрес — бо звичний, плюс даних (поки що?) не так багато, щоб перейматися іншими базами. Найскладніше — це пошук на ім'я (like '%x%'), на півмільйона рядків запит займає секунду. Точніше займав, я туди триграм-індекс тільки що додав, і все супер стало. Правда, це навантаження ніякого ще немає, тож подивимося ще. :) Я не заюзав амазонівський хостед постгрес з двох причин — бо задовбався з іншими їх сервісами, плюс вони там чаржать за кількість запитів, стрьомно.

Метабейз взагалі вдалий. Одразу дає і контроль доступів, і просту консоль до SQL, швидко змінити те, що там у звіті є і як виглядає. Трохи не вистачає можливостей по налаштуванню вигляду: хотілося б оті показники, де просто цифри, зробити ще меншими, але не можна... Одна претензія серйозна тільки: пошук підстроки на звіті виходить регістро-залежний, якщо запити на цьому звіті наклацані в інтерфейсі, а не написані руками. А з такими набагато зручніше працювати, тож поки що так. Тікет є і вже й pull request для нього є, тож може в наступному релізі виправлять.

А сервіс прийшлося кастомний написати: ви напевно ще пам’ятаєте мої спроби зробити то мінімумом коду, які власне доволі очікувано завершилися. :) Подивитися на код можна на гітхабі — чесно кажучи, не очікував, що вийде майже тисяча рядків на кложі, зате без всяких додаткових сервісів, ну й в принципі доволі просто.

Що там є цікавого:

Власне й все, ідіть подивіться, а я послідкую, чи не стане, бува, постгресу погано, чи ще щось. Ось вам скриншот фантастичного інтерфейсу наостанок. Я певен що такого польоту фантазії ви ще не бачили. 😁

(@ tg)

Ведмеді

Я таку штуку зранку зрозумів, не можу не поділитися. 🤣

Значить історія така: "ведмідь" — це ж евфемізм для назви звіра, типу як "косолапий" чи "вуйко", тільки більш рання. Це замінник табуйованої назви звіра ("того, кого не можна називати"), який сам став табуйованим. Я якось читав припущення, що до того слов'яни ведмедя називали "бер", як германські народи.

Але "бер" — це теж слово-замінник! Ну типу "бурий", так? А початкове індоєвропейське слово — це "арткос", що означає "руйнівник", яке в принципі непогано збереглося у греків у формі "арктос".

Це насправді прикол, так? Типу народ жив в лісах поруч з ведмедями й тому їх боявся дуже — і придумав для них евфемізм. Потім частина народу відселилася далі, і в них це слово збереглося, а ті, що лишилися — придумали новий евфемізм. І оце вже пішло на третій круг (це як мінімум, хаха).

Але розповісти хотів не про те — ми тут зранку жартували, що мож ведмеді з півночі приходили, з арктики? Тому й арктоси?

Ясно, що тут логіка працює у зворотню сторону! Полярна зоря, яка (грекам, на їх півдні) постійно вказує на північ, знаходиться у сузір'ї Малого Воза — або Малої Ведмедиці. Себто Арктика — це Ведмежатня. 😁 Що Вікіпедія теж каже, але чого б я туди про ведмедя пішов читати. :))

P.S. Цікаво, чи насправді слов'яне пройшли через два рівні словозамінників?..

P.P.S. А ще прикол про Арктойську країну — найпівнічніший край античної цивілізації.

(@ tg)

RegExp

Позаминулого вересня я виступав на JS fwdays'20, яку зробили онлайн-конфою, і ми зробили там фінт вухами: мені Андрій Листочкин ставив питання від людей до мого докладу — бо самому собі задавати не дуже. Ну і навпаки, я ставив питання йому — і, власне, тому послухав його доповідь. Доповідь була про регулярні вирази, ну типу \d{4}-\w+, оце все, ну прямо лікнеп такий.

Я такий: Андрій, який сенс у тій доповіді, це ж типу на годину читання доки? А він мені каже: ти знаєш, в регекспів така погана репутація, що панове фронтендщики геть всі їх не знають.

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

Я навчився регуляркам ще на першому курсі, майже 20 років тому, і відтоді юзав їх дуже ефективно тисячі разів. Життя програміста дуже часто пов'язане з текстом, і простір між "розділи по пробілу" та "пора вже писати справжній парсер" — величезний. Простір, у якому, власне, і сидять регулярки, бо іфи та цикли заплутають куди швидше невеликої регулярки. Це вже не кажучи про те, що "справжній парсер" зазвичай куди більше часу і коду відійме.

І регулярки є всюди. Перейменування файлів у Total Commander? Заміна тексту у редакторі? В Excel? Знайти необхідне посилання серед сотень інших в джаваскриптовій консолі? Вичепити з опису транзакції ім'я?

Об'єктивно кажучи — це один з найкорисніших інструментів з народженних програмуванням. Навіть для не-програмістів.

А дурна слава йде через те, що під час розквіту Perl'a забагато людей настільки звикли використовувати регулярки, що застосовували їх навіть там, де їм не місце. Звідти анекдот "в хлопчика була проблема, він вирішив заюзати регулярку і тепер в нього дві проблеми".

Моя думка з цього приводу така: доки ти не навчився використовувати їх корисно, ходити та пропагувати "ой ні регулярки то погано" — це святкування невігластва.

(@ tg)

Брехливість

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

Цікаво, що захід у період холодної війни за деякими натяками це наче розумів, але масштаби були ясними тільки одиницям. Більшість все одно вірила в показники військової техніки та в те, що все ж таки щось совок робить на совість.

Тому я трохи менжуюся: наче Китай лупашить сотні кілометрів автобанів, які потім стоять — але ж і будинки, які падають наче доміно, і яйця з желатину теж там є. У сенсі мені здається, що Китай трошки переміг брехливість системи через приватність бізнесу і, напевно, конкуренцію? Але я точно знаю, що це екстремально важко — Україна досі вся в корупції, тому сумніваюся у зовнішніх ознаках. :)

А от Росія це гівно жере сповна! І жерла усю історію, яку я можу зрозуміти. Що там зараз — ми бачимо на власні очі, увесь період застою вся країна підгоняла звіти під запити начальства, вся космічна програма була на соплях і виєбонах тільки щоб бути першими, під час правління Сталіна брехливі доноси та постійне життя у страху, а до того... Микола II з війною з Японією, яка так само відбувалася за повної впевненості (по звітах), що російська армія — ого-го!

Не знаю, чесно, що там було до Миколи, але щось здається мені, що ситуація була схожа. Top-down структура, яка орієнтована на задоволення начальства замість результату і на демонстрацію всім навколо блиску замість наведення порядку всередині.

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

P.S. Соррі, якщо я занадто вже очевидні речі пишу, але вони постійно спливають в розмовах, і потім крутяться у голові — а один раз напиши й голова заспокоюється. 😁

(@ tg)

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

Розкажу, що тригернуло написати. Діма Малєєв пише у фейсбуці: «почали знімати відео англійською, але важкувати, купу помилок робиш — типу артиклі невгаразд». Я посміявся трохи, бо артиклі в мене йдуть від серця, я їх у розмовній речі ставлю мало не рандомом. :)

Пішов почитати коменти, думаю ну точно хтось доїбеться, так? Чувак пише: «ти там сказав the Ukraine, не треба так». Ну просто геній, пости не читаю @ в каментах сру. І через коротке обговорення: «зараз я спробую пояснити думку розгорнутіше». От реально хочеться тут «спершу зроби» використати, в мене просто згорів вихлоп повністю.

Люди, які мене знають, зможуть підтвердити — я теж дуже прискіпливий, до всього. Моє головне досягнення: я це висловлюю у рантаймі вголос і не дойобуюсь до людей в каментах — але мені здається, що це загальнонаціональна проблема, бо воно лізе зі всіх щілин.

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

Тож давайте не будемо один одного за дрібниці зайобувати. Зупинимо придиркуватість разом!

P.S. Гарне слово видумав, га?)

(@ tg)

На доу запостили анонс: зарелізили апку, яка намагається перевіряти, наскількі ймовірні зв'язки людини з чимось неприємним (типу москалів). Там вже в каментах напихують розробникам за те, що они намагаються сразу взяти планку "це для ЗСУ та тероборони", а якість тої перевірки дуже сумнівна.

І я згадав, як мене у середині 10-х тримали по 3-5 хвилин на кожному вильоті та прильоті на кордоні — я в якийсь момент почав питати, чому, і виявилося, що якийсь інший Олександр Соловйов чимось завинив. Вочевидь, нас таких багато, я особисто знав ще двох — і почав при затримці казати побатькові та показувати права, це значно прискорювало процес. Якось раз було смішно, прикордонниця собі під нос пробурмотіла "може брат чи шо" — з однаковим іменем і різним побатькові? 🤣

Але є ще крутіший рівень перевірки документів — у німецьких потягах. Їхав якось нічним потягом Амстердам — Копенгаген і посеред ночі якийсь дикий німецький прикордонник (чи можна так назвати людину десь у Гамбурзі?) вирішив, що треба перевіряти документи. Інших він пройшов якось швидко, а моя нідерландський айді-картка явно здалася підозрілою і він кудись подзвонив.

— Золовйов! Золовйов! — заволав у телефон посеред ночі прикордонник; але з тої сторони його явно не розуміли, і він вирішив перейти на ініціали, — Зиґфрід! Отто! Людвіґ!

Чувак дуже сердився, що нічого не виходить, і коли побачив як я з нього волаю, почав прямо червоніти, реально як в якійсь комедії, сховався за двері, і заволав Зиґфрід-Отто-Людвіґ ще дужче. 🤣

Я так розумію, що ніфіга не вийшло, і через кілька хвилин ору він віддав мені доки та й пішов собі кудись, а мені залишив на майбутнє три середні імені, щоб я себе відчував як Моцарт (Людвіґ правда це Бетховен, але в нього не було купи середніх імен). 😁

(@ tg)

А прикольно було б, якби замість російської та радянської теми називати регіони за центром, всі області були б типу Волинської та Закарпатської? Галицька, Буковинська, Поліська (яка з них, і що з іншими? :)), Подільська, Сіверська, Слобожанська... ну якось так приємніше звучить, більш людяно, ні? :)

Я розумію що то купа грошей, он Дніпропетровська і Кіровоградська області досі на місці, але ж фантазувати ніхто не заважає? :)

(@ tg)

Давайте спочатку історія, яку мені друг розповідав про свого прадіда. Жив він у Кам'янці-Подільському, який був до WW2 неподалік від кордона з Польщею — і був, власне, поляком. А тут хтось з сусідів у 30-ті роки йому шепнув, мовляв, бережись, здається етнічні чистки почалися — поляків вбивають. Як дізнатися, хто ти? По документах — які він спалив і таким чином залишився в живих. Здається, що достатня причина не любити совок, але до самої своєї смерті він лишався його прихильником.

В нас пів країни таких людей було, які страждали у тому потворному державоутворенні, а потім за ним же й сумували (а деякі і зара продовжують). Але де логіка?!

Мені здається, що вести подвійне життя: коли назовні ти порядний громадянин, співаєш пісні про інтернаціонал і ходиш на травневі демонстрації за права трудящих, а всередині ненавидиш увесь цей брехливий пафос — дуже важко морально для людини, особливо в умовах, коли ні з ким поділитися.

Коли вже країна стабілізувалася, заспокоїлася і призвичаїлася до своєї власної брехливості — типу у 70-80-ті — то стало трохи легше. А от у 40-50-ті — це ще є репресії, і ти не знаєш, хто з твоїх сусідів гб-шник.

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

І — опа — ідеальний громадянин Совка готовий. :(

(@ tg)

Давайте спочатку історія, яку мені друг розповідав про свого діда. Жив він у Кам'янці-Подільському, який був до WW2 неподалік від кордона з Польщею — і був, власне, поляком. А тут хтось з сусідів у 30-ті роки йому шепнув, мовляв, бережись, здається етнічні чистки почалися — поляків вбивають. Як дізнатися, хто ти? По документах — які він спалив і таким чином залишився в живих. Здається, що достатня причина не любити совок, але до самої своєї смерті він лишався його прихильником.

В нас пів країни таких людей було, які страждали у тому потворному державоутворенні, а потім за ним же й сумували (а деякі і зара продовжують). Але де логіка?!

Мені здається, що вести подвійне життя: коли назовні ти порядний громадянин, співаєш пісні про інтернаціонал і ходиш на травневі демонстрації за права трудящих, а всередині ненавидиш увесь цей брехливий пафос — дуже важко морально для людини, особливо в умовах, коли ні з ким поділитися.

Коли вже країна стабілізувалася, заспокоїлася і призвичаїлася до своєї власної брехливості — типу у 70-80-ті — то стало трохи легше. А от у 40-50-ті — це ще є репресії, і ти не знаєш, хто з твоїх сусідів гб-шник.

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

І — опа — ідеальний громадянин Совка готовий. :(

(@ tg)

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

⏳ Боротьба ця продовжується вже 800 років, з тої самої битви на Калці (це де Волноваха, до речі!). З великих подій потім, які змінювали хід історії, це напевно Битва на Ворсклі, Переяславські статті, Полтавська битва (знов Ворскла), може руйнування Січі (хз), захоплення УНР, і ось теперішня війна. Здається, що зараз Україна перший раз у більш-менш пристойному стані (з точки зору волі та єдності) з 14 сторіччя. Це капець, якщо подумати.

😖 Культурна різниця між нами та москалями — неймовірна. До мене це дуже довго доходило, бо я велику частину знань отримував з книжок — а які книжки були на полицях у 90-ті? БСЕ, БЕС, СДЕ (всі «С» - совєцький), і т.і. І хоча навіть після них та совєцьких підручників по історії я Московію недолюблював, але модель світу воно дає схиблену. Так щоб прям починати усвідомлювати — я це почав у 2009-му, коли сам поїхав туди та прозрівав з кількості агресії на вулицях людей один до одного. Касирка якось наорала на мене за те, що не вдавалося просканувати штрих-код. Але тільки ця війна показує справжню відстань. Орда — це не просто варвари, на жаль.

🤌 Те, що хороші часи виховують слабких людей — це правда. Всі політики Європи занадто юні, щоб добре пам‘ятати, які насправді москалі. Тому з радістю пристають на шлях домовленостей з ними — тому що зиск великий! На відміну від нормальних країн, які торгуються за свої гроші, верхівка москалів не так жлобиться розкидуватися грошима, бо вони накрадені. Зисковна діяльність, а мораль почекає.

👹 Промивання мізків працює. Якщо почитати біографії німецької верхівки, вони всі там комсомольці (FDJ, Jusos, як не назови, а вуха стирчать), і це вочевидь залишає якийсь відбиток на свідомості й сприйнятті світу. Ну типу це ж моя молодість, не може Московія бути зовсім поганою, коли в мене були такі яскраві почуття і не боліла спина чи що там в них зараз болить. Людині загалом важко признатися собі, що 10 років юності витрачені на гниль впусту, тому й Московія якась туди-сюди. Як Тіль Ліндеман, який поїхав співати на параді (!) московитів. Ну каша в голові, бо юність засрали.

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

💡 А культура — це все. Дуже хотілося б почитати серйозні дослідження про те, які чинники впливають... особливо про нашу цікаво, а ще про те, чому сама войовнича нація Європи тепер такі сцикуни, га, Макрон? )) Люди при владі, стосунки у родинах і у суспільстві, взагалі все життя — це все культура.

⚡️ Прочитав тут ще думку, що в нас багато корупції через те, що ми у складі орди дуже довго пробули. Але коли читаєш за часи Руїни й там кожен сам собі щось тягне... мені віє корупцією та брехнею від того. Хоча, авжеж, людська пам'ять коротка і зараз (дивись вище), а тоді козаки, схоже, не уявляли собі, що московити — то не поляки, не татари та не турки. Шкода, що не розуміли цього.

(@ tg)

AWS

Пам‘ятаєте попередній пост про те що треба трохи даних обробити та зробити дешборд? Ну авжеж, це ж тільки два тижні тому було. А знаєте, чим я займався ці два тижні?.. Не тільки цим, але я просто в ужасі. Не читайте далі, якщо технічні подробиці вас лякають.

Зробити скрипт, який закидує дані з цсв у постгрес у мене вийшло за день з невеличким. А ось потім щось пішло не так... Чомусь я вирішив замість простої схеми «осьо віртуальний сервер, там все запустили й поїхали», що треба якомога більше managed все мати, щоб потім це не підтримувати. Амазон же ж багато всього пропонує!

Значить вимальовується така схема: завантажуємо файли в S3, це триггерить Lambda, яка файл обробляє і складає в інший бакет, звідки його читає Athena через Glue, а показує дані QuickSight. Я зазвичай дотримуюсь правила «не більше однієї незнайомої технології на проєкт», але цей казався маленьким і гідним того, щоб зробити один раз надійно.

1️⃣ Lambda

Я тут задовбався, але може окремо напишу — в мене вийшло 5 абзаців, а в телеграмі є обмеження на довжину повідомлення. :( З цікавого в результаті: парсинг пайтоном ікселю на 7 мб на ноуті займає 7 секунд, на хецнері за 5 євро - 14, на лямбді - 40-50.

2️⃣ QuickSight

Зібрали дешборд на квіксайті, і виявилося що оновлення буде не дуже в реалтаймі. Ну типу можемо кілька разів на день оновлювати, але часто (або по триггеру з лямбди, що теж потенційно часто) - буде дорого. Ооок, але наче працює, давайте покажемо світу? Хрін там! Публічним квіксайт зробити неможливо!

3️⃣ Athena

У цей момент я психанув, зарентив ec2 і запхав туди метабейз. Для метабейзу є сторонній коннектор для Афіни, тож, думаю, зара буде все супер. Метабейз поїхав, побачив дані, їх схему, єєє, перемога. Зараз все буде.

Тільки дата, за якою я хочу мати фільтр, це строка, а не date чи timestamp. Тому Афіна каже "вибачте, для цього оператор >=" застосовувати неможливо. Окей, знайшов, що схема даних визначається у Glue, змінив на timestamp зі string, як справи? Помилка, каже, Hive таку дату розпарсити не може.

Тож зробив я додаткову колонку, date.timestamp() * 1000 — ну там же ж Хайв, він точно захоче міллісекунди (я такий здогадливий, це жах). Фух, запрацювало!

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

4️⃣ S3

Ну все, залишилося тільки навчити замовника завантажувати файли в S3. А там теж інтерфейс мрії, купа кнопок, а ще неможливо зробити так, щоб користувач тільки 1 бакет бачив... Написав інструкцію, записав Loom з демкою, і в кінці навіть зідвонилися телефоном — і в неї білий екран замість прогрес-бару аплоаду. Я без дупля, що там за проблема, домовилися на наступний день у зумі подивитися.

Прокинувся зранку і закинув файл: наче все нормально, але трошки форматування цифр у коментарі не подобається. Ок, поправив скрипт, задеплоїв лямбду, закинув файл заново — і помітив, що в метабейзі дублюються дані.

А логіка в мене така: з клієнт-банку будуть окремі файли, і за один період у файла буде завжди одна й та сама назва. Тож я просто заміняю файл з такою ж назвою і тоді дублювання даних немає. От тільки я бачу дивне — у бакеті з результатом два файли з однаковим іменем. По всім докам і обговоренням в інтернеті такого бути не може, але я бачу. Ну жесть.

5️⃣ Інтерфейси

Хочу звернути особливу увагу, що це ж все low-code, тобто гемор. Всі налаштування відбуваються у купі форм на купі сторінок, кожна з яких завантажується мінімум кілька секунд, щось змінити — все ж unbundled — це піти потикатися у три-чотири різних сервіси, а потім у термінал подивитися логи лямбди. Цикл фідбека довжиною у хвилини, просто нереально повільно рухаєшся.

6️⃣ Ми тут

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

(@ tg)

У такі часи тягне узагальнювати поведінку націй. Було б цікаво почитати якісь дослідження, чи є сенс взагалі це робити, чи це анти-наукова фігня, але наразі це неважливо!

Тож давайте поузагальнюємо. Слухав я якось довжелезні випуски про першу світову війну одного історичного подкасту, і там цікава думка промайнула: націю, яка історично чи не найвойовничіша у всій Європі, через другу світову тепер вважають сцикунами. Французів у сенсі. Якщо згадати, то так, мало того, що від Карла Великого мало не рахується історія Європи, так ще й потім Франція воювала по всіх фронтах, в принципі доволі успішно аж до кінця 19 сторіччя.

Але всі ми виховані на думці "французи-боягузи". І оця неоднозначність якось засіла в голові у мене, регулярно про це згадував, як про деяку несправедливість у відношенні до цілого народу.

Аж тут пришла нова війна і виявилося що ті, французи таки сцикуни — Черчіль влучно не тільки про Чемберлена сказав про ганьбу та війну, а й про них також. І Макрон там регулярно має "складні розмови" з путіним, і Ашани з Леруа не можуть зібрати яйця в кулак. 650 закладів Макдональдс зміг полишити, а Ашан з Леруа ллють сльози. І це ж тільки конс'юмерські бренди, наврядчи FM Logistic чи інші невідомі широкому загалу компанії щось з того приводу роблять.

(@ tg)

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

Закон передбачає до 15 років ув'язнення. Але коли ми з друзями обговорювали одразу після події, то консенсус був у тому, що якщо вона не загибне, то наврядчи вона зробила цей виступ з власної ініціативи. Але сюрприз! Суд призначив 30 тисяч рублів штрафу. У ситуації, коли на чорному ринку за рубль дають триста рублів, це просто смішно. Уявіть собі, замість того, щоб тебе відлупцювали у відділку, тобі кажуть — віддаси 5% премії за виступ. Непогансько!

Але який сенс таке робити? Це такий нормальний нарратив, щоб міжнародні компанії могли сказати "не всі росіянці погані", "а що ж з оппозиціонерами", і таке інше. Які оппозиціонери на росії, ті, що не бутерброд?

Imperial Tobacco видало заяву, де каже "безпека та добробут <російських співробітників> є нашим ключовим пріоритетом у цьому процесі..." Напевно їх там бомблять, так? Сидять, мабуть, по схованках? Капець... та сама історія з Reckitt Benckiser (дюрекс/варніш/купа всього), з ФІліп Моріс, з Ашаном та Леруа... росію до кам'яного віку заганяти треба не тому, що хочеться, а тому, що це просто запобіжний засіб від повторення!

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

Muscovia delenda est.

(@ tg)

Потребую допомоги залу! 😁 Спілкуюсь останнім часом з "Повернись живим" і в них є цікава проблема. Історія починається з того, що вони зробили фінансову звітність відкритою, найпростішим шляхом: виклали xlsx з нею на OneDrive. Це кльове рішення, але скейлиться воно до якогось масштабу — зараз там 360 тисяч записів тільки за цей рік, і всі юзкейси розвалюються: фільтри в ікселі тормозять і показують тільки перші 10 тисяч значень, пошук тормозить, агрегувати дані неможливо.

Ми вчора обговорили і визначили два основних юзкейси, які можна насправді розділити:

Що я думаю: скласти оці всі дані у SQLite (або постгрес, здається, що неважливо), і дати якийсь інтерфейс до них без sql'ю. Що я вже подивився:

Ну ви зрозуміли, пишу спитати, що може в кого є ідеї, що можна готового заюзати для публічного інтерфейсу для БД, якщо хочеться нічого не писати? Тобто хочеться писати, але я себе стримую, бо так в житті нічого не встигнеш. :)) Тому допоможіть мені будь ласочка придумати інтерфейс для нормальних людей для доступу до (не)великої кількості даних!

Metabase насправді виглядає як непогане рішення для другого юзкейсу — засетапити аккаунти для всіх зацікавлених співробітників, трохи звикнути до інтерфейсу і можна робити купу справ. Але для звичайних людей зі сторони він занадто складний. Давайте свої ідеї, попитайте в знайомих, задача здається доволі очевидною, але нагуглити рішення чомусь не вдається.

(@ tg)

Цікаву тему прочитав у пана Макса Бергмана, який у 14 році працював у американському уряді і приймав участь у підримці безпеки України. Коротко: США зазвичай допомагають армії країни зброєю та тренуванням, але у нашому випадку не вистачало часу. Доставити Джавелін — це від 6 тижнів плюс ще час на тренування. А конфлікт настільки гострий, що двох місяців на апгрейд ситуації немає — ну ми це й самі пам'ятаємо.

Тож вони почали те, що можна було почати робити прямо зараз — стали навчати ЗСУ процесам, організації, робити реформи основних функцій (типу сек'юрних комунікацій замість того, що зараз в московитів). Це фантастичний збіг, коли короткострокові цілі збіглися з довгостроковими — і дають величезні дівіденди зараз.

Якщо так подумати, це ж власне ідеальний кейс стартапа, коли MVP повністю збігається з тим, що потрібне ринку. :)

(@ tg)

Ми вчора доробили до більш-менш якогось робочого стану сервіс для інформування росіян про те, що їх ЗМІ їм брешуть. Ідея така: якщо в тебе є сайт, на якому бувають відвідувачі з Росії — ти можеш їм спробувати розповісти про те, що відбувається насправді.

Качаєш скріпт собі (щоб запобігти проблемі, коли наш сайт вже заблокований), підключаєш — і всі відвідувачі з Росії бачать величезний чорний попап (раз на годину). Скрипт намагається спочатку показати HTML, який ми хостимо, щоб можна було оновлювати текст, а якщо за 3 секунди не вийшло — то показує вбудовану версію.

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

Скрипт доволі простий і швидкий і для всіх інших (окрім росіян) буде непомітний, тож підключайте собі на сайти, і розповсюджуйте знання по знайомих!

(@ tg)

На дворі весна і путєн сходить з розуму, але життя не зупиняється, плюс ми це записали ще кілька тижнів тому. Тож новий випуск Right Tool For the Job, на цей раз з дуже відомим у ютубі білорусом, Льохою ITБородою — тому російською мовою (спойлер: у наступному випуску все нормально :)).

Вийшло дуже весело, тож, якщо хочете відірватися від подій на вулиці — це воно. Чекаю на ваші перегляди та коментарі. :)

SoundCloud 👉 bit.ly/3h5LPaF

Apple Podcasts 👉 apple.co/34ZqBsC

Google Podcasts 👉 ​​bit.ly/3H7Mx1F

(@ tg)

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

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

Ще один цікавий момент був, коли прийшла соцслужба через те, що хлопчик 10 років біло-червоно-білий прапор у школі намалював, прийшли до мами і кажуть: напевно, прийдеться відбирати у вас дітей, а що ми зробити можемо... Ну у сенсі що? Банально італійську забастовку можете, ну ви ж бачите, що це абсурд зовсім? Бачать, але виконують.

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

(@ tg)

Щось мене пробило ностальжі, можна я вам розповім історію про геймінг у сиву давнину 94 року?

Нам з братом неймовірно пощастило й у 94 році в нашому житті з‘явився 486SX25 (досі не знаю звідки). Один з першої партії четвірок в Україні, я так розумію — наймолодша модель проца (на 25 мгц і без сопроцессора), вінт на 120 мб (як загалом на трійках були), і 4 мб ОЗУ (це важливо для подальшої історії).

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

Чому не запускався? Ось тут складно! Дум хотів 4 мб ОЗУ, які в нас наче були, так? Але під час запуску комп'ютера виконувалися інструкції у CONFIG.SYS та AUTOEXEC.BAT, які запускали різне — драйвера для відео (бо ж VGA, а не EGA, аж олдскули зводить), резидентну програму (це типу демона зараз) для перемикання розкладки клавіатури, волков коммандер (передав би привіт Сєві, на жаль не читає мене), ну й таке інше.

А ми, вочевидь, не сильно розчехлялися, що відбувається. А потім у нас в гостях знов був той самий друг батьків, завдяки якому всі ці ігри з'явилися, і навчив: під час запуску натискаєш F6, і дос запускається у щось типу safe mode, без виконання всіх тих файлів. Плюс написав нам doom.bat, який щось підгружав (підозрюю, що вга-драйвер, і може ще щось).

І воно поїхало. Після гоблінів, танчиків і вольфенштейну це була магія. Воно снилося мені у снах. Я ридумував історії, які відбувалися у тому світі. Намалював скриншот з дума у школі, коли на малюванні була "вільна тема". :))

А потім сталося неймовірне. З відрядження до Києва папа привіз ще 4 мб ОЗУ і звуковуху. Пройшло майже 30 років, а я досі пам'ятаю своє хвилювання, коли замість натискання F6 я у Волкові навів курсор на doom.exe, натиснув Enter і воно запустилося. Серце стучало що капець. :)

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

P.S. Думаю, що вся ця двіжуха з компами — це тупо робочий комп вдома, бо їсти було нема чого, а комп'ютер вдома стояв. :)

(@ tg)

Чи можна полюбити код іншої людини

Накаталися з малим з гори (тааак, цей момент прийшов, я катаюся на лижах разом з сином!), замучився і відкрив ютубчик повтикати. А там новий подкаст ДОУ, і прям у нарізці на початку Діма Малєєв каже "я ніколи не бачив програміста, який відкриває чужий проєкт і каже: боже, яка красота".

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

Але ж причини того прості й зрозумілі: дедлайни, кваліфікація й обмеження.

1️⃣ У комерційних проєктах одна з найважливіших речей — це швидкість реалізації. Хочеться, щоб щось запрацювало одразу, як вирішили, що ж потрібно робити. Тож навіть без дедлайну, зробили так, щоб воно більш-менш підтримуване було, протестували — і у реліз, а розробник займається наступною задачею. У всіх ця межа достатності різна, але загалом нема сенсу полірувати до нескінченості, то грошей не приносить.

2️⃣ Кваліфікація в людей різна. Хтось краще, хтось гірше, і всі без виключення в перші роки досвіду проходять етап бажання писати якомога складніший і крутіший код, так щоб показати всьому світу, що ти можеш. А часу переписати попростіше вже немає, тож максимум будуть виправлені найгарячіші місця, а далі за схемою про нестачу часу.

3️⃣ Коли код пишуть, обмежень купа — окрім часу, є усні домовленості, якісь прийняті у проєкті підходи, якісь технічні проблеми (може навіть тимчасові), щось у голові в розробника, щось у голові в його рев'ювера, вигадайте корочє самі. А коли ти відкриваєш і дивишся код, то ти всіх обмежень, в яких знаходився розробник, не знаєш, зате бачиш замість простого і симпатичного коду для базового юзкейсу купу якихось нагромаджень.

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

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

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

На мене, наприклад, дуже вплинув код Mercurial. Метью, автор Меркуріалу, дуже багато уваги приділяв простоті архітектури та коду, зворотній сумісності, когерентності функціоналу й обмеженості фіч, які попадають у ядро. Тож у 2008-му я був тим програмістом, який відкрив чужий код і сказав — боже, яка краса! 😁

Це був не перший і не останній раз, але найяскравіший для мене.

(@ tg)

Завдяки Борису Джонсону я дізнався, що назва Foursquare - це не аллюзія до «на всі чотири сторони», чи радше не тільки аллюзія, а ще й окреме слово, яке означає «міцно, із завзяттям і переконанням, безкомпромісно». Типу будівля може stand foursquare, скажімо. Прикол реально. :)

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

Написав і назвав finaloption - з натяком на те, що це останній парсер опцій, після нього вже нічого не треба робити. Але це ще й сталий вираз, який проміж іншим означає останнє бажання перед стратою. Не можу нагуглити це, до речі, але мені кілька людей сказало про те, тож я перейменував лібу на opster.

Ну як у приказці, іменування — одна з двох найважчих справ у програмуванні.

(@ tg)

Омікрон

Я попередні хвилі корони оминув, а цю не вдалося. :) Дві модерни не врятували повністю, хехе. Вночі на минулий понеділок температура злетіла за 38, аж трясло від холоду — добре, що парацетамол допомагав і збивав температуру. В середу накрило дружину, а в четвер мені стало ставати краще, навіть поспав.

Це насправді найцікавіший (якщо можна так сказати, ехехе) ефект. Сил діяти бракує, здавалося б — спи, поки діти дозволяють, але ні, о 3 ночі прокидаєшся і все, нічого не допомагає. А до ранку приходив у стан повної розрухи, тупо жесть. Добре хоч вдень додатково з годину вдавалося поспати.

Ну і всі супутні срані — нежить, кашель, головний біль, короч набір не з приємних. З іншого боку, судячи з розповідей про попередні хвилі, то омікрон більш зорієнтований на розповсюдження, ніж на завдання важкого удару, і проходить трохи легше. :)

А от наслідки нервують. :/ Кашель досі не пройшов, бігати за дітьми зараз важче, а працювати головою це взагалі жесть. У вівторок трохи перелякався, бо після пари зустрічей відкрив код щось роздуплити й голова кругом пішла. 😱

Але вчора вже краще було, тож, здається, потроху відновлююся. Та й минулого тижня взагалі думати важко було зовсім, хаха. Згадується пост на quora, як чувак тупим став (не можу щось лінк знайти).

Рейтинг: 3/5, свідомість не губив, до лікарні не потрапляв, але рекомендувати не можу. 😁

(@ tg)

Думав, що недочекаюсь. :) Ми випустили третій випуск RTFJ, на цей раз — з Єгором Назаркіним. Дуже прикольна розмова вийшла! Єгор зараз Engineering Manager у HealthJoy, в минулому займався організацією пайконів, та й загалом дуже відомий у Python-ком'юніті.

В нас вочевидь трохи розбігаються погляди на деякі технології, хехе, але ми норм пообговорювали і пайтон, і бази даних зачепили, і проблеми зв'язку у Сибіру. :))

Кароч велкам подивитися і не забувайте ділитися з оточенням. :)

На подкаст-платформах (або шукайте Fwdays Tech Talks у вашій апці):

SoundCloud 👉 https://bit.ly/3H4iysi

Apple Podcasts 👉 https://apple.co/35fzcag

Google Podcasts 👉 https://bit.ly/3qZyeaI

(@ tg)

Колись у сиву давнину (навесні 2017, щоб бути точним) написав нам OWOX з цікавою пропозицією: додайте наш скрипт на сайт і ми перекинемо всі ваші події у веб-аналітиці в BigQuery.

BigQuery - це такий Data Warehouse від Гугла, який вміє ворочати ну дуже великими обсягами даних. Тобто суть пропозиції у тому, що ми зможемо аналізувати те, що відбувається, не так, як задумано у Google Analytics, а як завгодно. Ну дуже цікаво, погодьтеся? Єдина річ — що вони за те хотіли доволі багато грошей. Не пам'ятаю суму, але це точно навіть не тисячі доларів на рік.

Скажу вам, що жаба для мене як мотиватор схоже непогано працює. У сенсі ну скільки там тієї роботи — записати дані у BigQuery? Зробив на фронті, щоб події GA копіювалися нам в спеціальний апі, той скидає їх у кафку, а потім з кафки перекидається у BigQuery. Все супер, і потім ми з того виростили свою аналітику з ClickHouse'ом — до речі, по тій самій причині, BigQuery недешевий, коли даси йому складне запитання. :))

Але був один нюанс. Для конекту до бігквері я використав гугловську джавну лібу, і щоб усе запрацювало, витратив довбаний тиждень. Бо апі в неї — гівно, помилки — гівно, підхід до авторизації — гівно, і взагалі. А як вишенька на торті — при оновленні вона ламалася. Десь всередині, то NPE якийсь, то ще щось. Не статична типізація, а хрін зна що.

Ну типу інжиніринг від Гугла, що ви взагалі очікуєте. 🤕

Так і була в нас кілька років забита у залежностях стара версія, від лютого 19-го року. А вчора настрій був, сів, вичистив з коду останнього користувача і прибив лібу з залежностей. Кайф. ☺️

А по мотивах тих страждань я написав власну лібу, яка просто використовує HTTP і тому не ламається. Не дивлячісь на назву, ми її для бігквері вже не юзаємо, а як інтерфейс до гугла - аж бігом. :)

(@ tg)

colors, faker et all

Давайте я теж висловлюсь про цю історію. Короткий зміст драми: якийсь пацан написав дві бібліотеки, виклав їх в опенсорс (під ліцензією MIT), вони стали популярні (28 млн звантажень на тиждень), тож він вирішив, що дуже погано, що великі компанії йому не платять гроші, і поламав ті бібліотеки так, щоб всі пішли на його сторіночку і почитали, що йому потрібні гроші.

А на сторінці faker.js ще додатково написав "що відбулося з Аароном Шварцем".

Зовсім випадково в мене є кілька думок з того приводу!

1️⃣ Те, що написав apenwarr: ти подарував свій код цьому світу. Які взагалі претензії? Ніхто тебе конкретно не просив нічого робити. Ти зробив, воно тепер популярне. Молодець, використай це для розвинення власного бренду.

2️⃣ Те, що написав Армін: такі історії відвертати увагу від справді важливих речей. Краще б компанії давали гроші авторам curl'у, openssl чи libxml2, а не авторам colors.js та faker.js. Плюс він кльово підмітив: Github Sponsors, який наче намагається вирішити проблему з компенсацією зусиль авторів, дивиться не там, де треба (як от в історії з openssl), а там, де є світло (як в анекдоті з пошуком ключей).

3️⃣ У npm є дві величезні проблеми. Перша: замість конкретної версії дуже легко вписати "щось типу версії 1.2.0", і воно автоматом при звантаженні само вирішить. І в результаті те, що було при розробці, при тестуванні та в продакшені — це можуть бути різні набори коду. Так, можно вказати конкретну версію, але так роблять тільки дуже свідомі люди. Їх пара десятків у всьому білому світі, бо більш свідомі просто не пишуть на ноді.

Друга проблема: якимось чином простота публікації пакетів призвела до лефтпадів та isEven. У світі пайтона (де з залежностямі можливо все ще гірше) чомусь такого не відбулося, а от у світі ноди на npm така кількість бруду, що це просто звіздєц. І colors/faker це не совсім лефтпад, але це точно не інфраструктура, яка вкрай потрібна.

4️⃣ Якого біса приплітати Аарона до цього? Не пам'ятаю, щоб він закликав опенсорсних авторів нападати на капіталістичних свиней заради копієчки. Леніна треба було згадувати.

(@ tg)

Висить у табах сафарі на айфоні в мене стаття під назвою “The internet made defensive writers of us all”. Все хотів про неї написати, але якось не вдавалося слова до купи зібрати.

А тут довелося покататися по місту і послухав епізод «щіт ай ноу» про історії з Інтернету. Історії непогані зібрали, я в принципі доволі багато реддіт читаю, але ці якось не зачепив. Так ось, у подкасті Діма висловив думку про те, що Інтернет — мертвий. Ось наочно з людиною ти спілкуєшся — і це людина, а її аватар в інтернеті — то видумана, пуста оболонка, і вона мертва, це не справжня людина.

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

Але це небезпечно! Варто було в інтерв‘ю для ДОУ згадати, що мене дратують в айті новобранці, яких не цікавить нічого, окрім грошей, сходу знайшлася купа народу, яка зробила далекоглядні висновки. І що у Касті нікому гроші не платять, і що окрім овертаймів в нас тільки овертайми, і дідовщина, і взагалі в дупу довбимося замість програмування.

Треба чесно сказати, що вийшло там сформулювати не дуже добре, але скажи отак у вічі — і людина спробує зрозуміти, яку емоцію ти хочеш донести. Скажи це в інтернеті — і на тебе нападають скажені «в інтернетах хтось неправий».

Цей стиль, з розшаркуваннями у різні боки та намаганням перекрити всі можливі вектори атаки — неприємно читати. Написано для всіх і ні для кого. Тож я відмовляюся грати у цю гру, палає дупа — зменшуй у ній тиск. :) У сенсі, як писали у книжках, автор розраховує на здоровий глузд і буденне милосердя читачів.

Гарних усім свят! 🎉

(@ tg)

Останнім часом мені дуже подобається дратувати людей нагадуванням, що у православних Різдво відбувається не 7 січня, а 25 грудня. Всі християни святкують в один день - 25 грудня. Але чому в нас є вихідний 7 січня?

Бо Російська імперія свого часу не прийняла «єрєсь» від римського папи Григорія XIII. Ну типу в нас тут свій патріарх є і він все порішає. Я не знаю, хто там кому лікар — чи то патріарх у Стамбулі не схотів згоджуватись, чи московити — схоже що перші, бо там є ще й новоюліанський календар, якась хитра дурня.

А потім, у 1918, УНР перейшла на «новий стиль» - з юліанського на григоріанський календар. А церква — нікуди не перейшла! Напевно, московський патріарх підтримував царя, тож для них це було не на часі.

Повертаючись на початок — а чому ж дратувати? Бо дивно, але з моїх знайомих ніхто не замислюється, а чому ж Різдво - 7 січня? А ось так. Воно таки 25 грудня.

Вже Саудівська Аравія перейшла! У 2016 році, теж прогресивні дуже. 😁 А що там ПЦУ втикає?

(@ tg)

E2EE у чатах

У інтернетах знову срачі за те, в кого шифрування краще — у воцапа, телеграма, сигнала тощо. З того можна зробити кілька висновків.

1️⃣ Найочевидніший — що здебільшого реальна захищеність каналу нікого не турбує. Ну то не сюрприз. :)

2️⃣ В Телеграма найкращий маркетинг. Вони пишуть пости-відповіді на звинувачення від Моксі (засновника Сигналу), які люди шлють один одному як гарний приклад того, що Телеграм молодець. А там жоден пункт звинувачень не заперечений, розмова про інші речі. Файний месседжинг. 😤

3️⃣ Найцікавіше — телеграм не захищений з точки зору zero-trust тусовки, усіх цих веб3 та й всього іншого. Але! Цікаво Мачай відмічає — чому протести у Гонконзі використовували телеграм? Тому що у ситуації, коли конкретно тобою починає цікавитися держава, месседжер — то вже і близько не проблема. Воно тупо може подивитися, хто з людей був на протесті за даними з телефонних сот.

А ось юзабіліті, відсутність шарінгу усіх деталей (номера телефону) по дефолту всім у чаті (на відміну, до речі, від «сек‘юрного» Сигналу), можливість створювати справді гігантські групові чати (тобто паблішінг платформа) - це все суперцікаво з точки зору всього двіжу.

Не те щоб я нахвалював Телеграм, все ж таки в нього є для нас величезна проблема: це російське коріння. Навіть якщо Павло чесний і хоче відкараскатись від тих людожерів, не можна не враховувати, що «органи» як мінімум з ним знайомі. А це погано конкретно для нас.

Висновків не буде, бо в мене їх нема. 🤣 Усіх з Новим Роком! 🎉 Бажаю, щоб висновки приходили простіше, а інсайти — частіше! :)

(@ tg)

Є такий чувак, Ден Луу, у твіттері висловлює цікаві думки. Він і пости пише цікаві, але через його графоманство то майже книжки, важкувато це читати. Він і у твіттері графоманить, але не про те мова. :)

Так ось, він зачепив тему, чому щось зробили колись, а не раніше, і як один з прикладів згадав про системи контролю версій, у такій прогресії: RCS -> CVS -> SVN -> git. Типу, чому концепції гіта, який вочевидь багато чого робить краще, ніж SVN, не видумали раніше? І ось тут мені є що сказати, бо раніше я був version control junkie. :) З роками попустило (не біжу у pijul контріб'ютити), але у гарячу епоху кінця 00-х я був одним з топових контріб'юторів у Mercurial.

Значить відповідь на запитання проста — нюанси губляться у роках. git ні в якому разі не продовження svn, це тупо інша гілка розвитку. Гіт — це продовження BitKeeper'a, яким користувалися розробники ядра лінукса перед тим. Не тільки, ще був такий проєкт, як monotone, який доволі багато інновацій зробив: згадується, скажімо, використання хешу вмісту комміту та його батьків як ідентифікатора комміту. Тобто цій властивості ми завдячуємо саме monotone, а не генію Лінуса. Він про монотон відгукувався не дуже — бо воно екстремально повільне було, але доволі багато властивостей саме звідти.

Ще була така штука, як Darcs, на Хаскелі, але це теж паралельна гілка розвитку, там доволі цікава теорія латок (the theory of patches). Тобто замість використання DAG (Directed Acyclic Graph), як було у monotone, git та Mercurial, вони юзали латки, які збиралися докупи спеціальним алгоритмом. Який під час деяких мержів мав експоненційну складність, тож збирання репозіторю докупи іноді займало вічність... Але в нього є послідовник - Pijul, здаля цікаво виглядає.

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

(@ tg)

Знаєте, що таке Follow Focus? Це така система наведення фокусу для знімання відео, коли оператор знімає кадр, а фокус йому наводить асистент, Focus Puller.

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

Але тут DJI (так, той, що коптери робить) показав нову, дуже інноваційну камеру - Ronin 4D. Це повноцінна камера зі змінними об‘єктивами, вбудована у стабілізатор (gimbal), з окремим дісплеєм.

Тєма: ти тримаєшся за дві ручки, а під правим великим пальцем колесо для фокуса. А додатково зверху на камері - LIDAR. І на моніторі зверху на картинці (вочевидь двомірній) показується карта глибин того, чого ти знімаєш.

От подивіться тут трохи, це просто фантастика. Там є й інші цікаві рішення (як от змінний байонет, безпровідний монітор), але це — найцікавіше.

Воно все трошки недешево коштує, понад 7 тисяч, але за хайтек треба платити. Файний девайс. :)

(@ tg)

Є така річ, як веб-аналітика: зберігаємо інфу про те, що робить користувач, у БД, а потім можемо дивитись на те і щось собі вирішувати. БД — це Google Analytics, чи Firebase, чи, у нашому випадку, власне сховище.

Скажімо, користувач щось додав у кошик? Відправимо подію «кошик». Перейшов на оформлення - «чекаут», зробив замовлення - «ордер».

І з цим «ордером» є цікавий момент. Річ у тому, що реально завершення замовлення відбувається у різні моментуиу залежності від того, який спосіб оплати ти обрав: чи то кеш, чи картка, чи кредит. Тож коли ми робили свою аналітику, я чомусь психанув і зробив так, що ця подія відправляється не з клієнтів, як зазвичай, а з бекенду. Для того у замовленні зберігаються всі потрібні додаткові дані, і при настанні умови «отут ми вважаємо замовлення живим», відправляється ця подія.

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

Прилітає баг від аналітиків: близько 20% замовлення карткою з аппок (айос/андроїд) не попадають в аналітику Firebase. У нашій аналітиці тим часом все файно... 🤔 Трохи деталей: в наших апках є кілька різних аналітик (бо в них різні використання і іноді дуже важко це змінити), і всі вони отримують події виключно з апки.

А подія у файрбейз коли відправляється? Ну вірно, коли користувач повертається з оплати карткою, яка у вебв‘ю. Тобто ідеш платити, вносиш дані картки, якийсь може 3д-сек’юр, і ось тоді вже... ач тільки KastaPay показує своє «дякую за оплату», і користувач, вдоволений вдалою справою, закриває апку і йде по своїм справам. Ніколи не потрапляючи в апці на сторінку, де відправиться та подія. 😬

Цю тему вже виправляємо, але приємно, що наша власна аналітика нічого не губила. 👌

(@ tg)

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

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

Буковель може не найкращий лижний курорт у світі, але він як зручні капці, особливо коли люди ще не наїхали. :)

(@ tg)

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

Значить історія: приходить повідомлення iMessage, від якогось номера, просто картиночка. Ти відкриваєш подивитися, що там, а воно... iMessage, щоб показати картинку, викликає метод copyGifFromPath:toDestinationPath:.

Воно зветься «копі», а під капотом рендерить гіфку у пункті призначення. Тобто декодує початковий файл і створює нову гіфку замість просто копіювання байтів.

І прочитати воно може не тільки гіфки, а купу різних форматів. І один з них — це пдф. Пдф прикольний тим, що взагалі пишеться на майже тьюрінг-повній мові, але за багато років там наставили достатньо вже обмежень. Але! Код, який використовується у iOS - це код Xpdf, написанний у 80-х роках, і виглядає так, що там багато цікавого. :)

Наприклад, є там всередині реалізація формату картинок під назвою JBIG2. Це такий спеціальний формат, який дуже добре стискає чорно-білі картинки, у головному зі сканерів і ксероксів — раніше канали і сховища були скромніші і треба було економити. І ефективний він через те, що блоки зображення кодуються хитрим чином з використанням логічних операцій - and, or, xor, nor.

Потім чік-чік, невеличке переповнення буферу, замість крешу коррумпування початкової картинки і раптово ці операції можна виконувати над (майже) будь-якою коміркою пам‘яті.

І далі найкраще. За допомогою 70 000 операцій чуваки зробили віртуальний комп‘ютер, який вміє ходити по пам‘яті телефону і читати все, що завгодно. Ну як ото люди у майнкрафті роблять, тільки у айфоні. :)

Фантастично елегантний хак, просто капець. Не те шо та дитяча підстановка у лог для же. :)

Епл це пофіксила ще у вересні, але NSO явно юзали його на початку року. NSO - це автори експлоіту, ізраїльська контора, яка допомагає урядам слідкувати за громадянами. Вікіпедія каже, що вони відіграли якусь роль у вбивстві Джамаля Хашогджі. :( Елегантно, але все інше як завжди...

(@ tg)

Знаєте, чому я вирішив робити подкаст з fwdays, а не сам? Тому що з жовтня по зараз я записав ровно 0 відео сам, але ось вже готовий другий випуск подкасту RTFJ. :) Спасибі вдалій мотивації від Даші, і цікавій розмові з Ромою Лютіковим.

Рома зараз відповідає за перформанс у Pitch (дуже кльовий інструмент, щоб робити презентації, до речі), тож натурально ми порозмовляли і про перформанс, і про кложу (бо Пітч написаний на кложі), і про всяке інше — думаю що немає сенсу повторяти все, що в описі написано.

Тож дивіться, відправляйте лінки друзям, і дуже чекаю фідбеку, як вам новий випуск. :)

P.S. До речі, він є і на подкаст-платформах:

SoundCloud 👉 bit.ly/3yvKmCo

Apple Podcasts 👉 apple.co/3EZZTwQ

Google Podcasts 👉 bit.ly/3F8lfs0

(@ tg)

Clojure — паразит

Позаминулої суботи ми записували новий випуск подкасту (spoiler alert!) з Ромою Лютіковим і прийшли до несподіваного визначення: Clojure — це паразит. Причому паразит у квадраті! От дивіться.

По-перше, в кложі немає своє платформи, так? Вона працює або на JVM, або на .NET, або на JS, або он там на підході ClojureDart, щоби Flutter можна було нормальною мовою писати. Це ж одна з основних ціннісних пропозицій кложі!

Але є й інший шар: кложа паразитує на інших мовах як на ресурсі для постачання розробників. У сенсі якщо кложа виявиться першою мовою, ти будеш цінити її плюси точно так само, як новачки-програмісти цінують плюси мови, на якій пишуть — треба сприймати на віру, бо у власному досвіді порівняти поки що ні з чим. Але не випадково вік програмістів на кложі значно вище середньго — майже ні в кого вона не є першою мовою. Люди приходять за класним інструментом для розв'язання задач вже після того, як намаються з іншими.

Тому менше новачків, тому вище середній рівень розробників і тому краще середній рівень проєктів (скажімо, опенсорсних бібліотек).

(@ tg)

Пару тижнів тому Марцин написав пост, про те, як він переписав asciinema-player з ClojureScript на Rust + WASM. В результаті в нього бандл став у 4 рази менший і швидкість виросла у 50 разів.

Це дуже крутий результат! Але дуже цікаво чому, і чи не має тут історії про те, що не треба використовувати CLJS взагалі? 😁

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

А у vt-clj відбувається неподобство, зі здоровезних масивів даних (ну як здоровезних, width*height терміналу, ггг) генерувалися нові такі самі — думаю, що GC браузерів просто захлинався від такого нахабства. Тут навіть structural sharing занадто багато не допоможе. У цьому місці йому б треба було взяти ArrayBuffer, і перестати мучити худобу. :)) Але! Треба сказати, що я приємно здивований кількістю кода на расті, і пов'язую це з тим, що йому вже не прийшлося експериментувати з імплементацією, як у кложі.

Інша велика зміна, яку він зробив — проміняв ReactJS на SolidJS. Каже, що набагато швидше, ніж реакт. Може, я не дуже в темі. Але що він робив до цього - використовував Reagent. Це дуже ергономічний і дуже неефективний врапер навколо реакту. Найбільша його проблема — він не компілює хікап ([:div "smth"]) у виклики реакту, і робить це у рантаймі.

Мені чомусь здається, що виправлення цих двох вже провело б його більшою частиною дороги у 50х. Авжеж, різниця була б меншою, але й часу пішло б менше. :) Але пацан вже забодався воювати, плюс експеримент вийшов вдалий, а feature surface не дуже великий — тому можна перероблювати на швидшу мову з більшим ефортом.

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

(@ tg)

Коли конспірологи десь раптово вискакують в офлайні (тому що в онлайні я їх просто ігнорую), головною відмазкою від їх домагань працює історія про «якби ти колись намагався щось організувати, не думав би про реальність таких масштабних секретних змов». :)

Але трафік на дорозі... це хоч і не аргумент у протилежний бік, але це така фантастична штука, насправді. Це те, що наочно демонструє, що більша частина людей мають добрі наміри та готові співпрацювати. Небезпека неіллюзорна, здоровезні металеві дурепи, вбити когось — ізі-пізі!

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

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

(@ tg)

Зараз показувати Дію з сертифікатом вакцінації треба наліво і направо. А вона така вся ще відкривається годинами, а ти у масці й або топчи свій код, або знімай маску — бо айфони ж так і не зробили тач-айді в екрані, і взагалі, експірієнс не з кращих.

Чи це життя взагалі?! Якісь люди з Чехії подумали так само і зробили сайт, якій вміє з QR-коду сгенерувати файлик для Wallet'у. Скануєш QR-код сертифікату, або завантажуєш його скриншот, і отримуєш pkpass. Відкрив — і тепер за подвійним натисканням на бокову кнопку ховається той сертифікат.

Не треба розблокувати айфон, шукати потім дію, чекати поки її швидкісні сервери дадуть відповідь, чекати розблокування (чи навпаки?)... Все локально сидить в айфоні.

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

(@ tg)

Вранці звернув увагу на закінчення книжечки про Колобка і досі думаю про нього. Я розумію, що видавець намагався скоротити казочку, щоб вона влізла у маленький формат, але ж яка жиза! Лисичка — як правильний злодій у фільмі, замість бла-бла-бла просто зохавала малого та й все.

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

Сильна така тепер книга. 😁

(@ tg)

Є така штука, як Cloudflare Workers. Це спосіб задеплоїти джаваскрипт на серверах в клаудфлерівські точках присутності. Ну типу AWS Lambda, тільки для тих, хто хоче зробити небагато і швидко. Точно кружляють навколо традиційних авсів і хочуть взяти їх в оточення. :) Але я не про те.

Вони там роблять всілякі хитрощі, типу запуску коду у сендбоксах всередині процесів, що вже працюють, і там напевно всяке інше. Але у результаті є штука, яку легко задеплоїти, яку чаржать за запуск (тому що час виконання обмежений 10 мс) і яка дуже швидко стартує. На відміну від інших "serverless" платформ типу амазонівських лямбд, де запускається цілий окремий процес.

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

Гаразд! Врешті-решт, жвм стільки років робили та й що, нічого не видумали? Наче SubstrateVM, яка у граалі йде, краще вміє швидко стартувати, але чи треба це? Так важко нагуглити, чесно, відчуття, що я не знаю потрібних слів.

Типу потрібно щось таке, що вміє запускати код у сендбоксі, і при цьому тримати залежності у пам‘яті, щоб запуск того коду був швидким. Так?

(@ tg)

Давайте трохи за результати Black Friday у Касті розповім. Значить, перший раз, коли ми пережили її у 2016 році, в нас було 2.5k RPS (запитів у секунду) в API, десь 80 тисяч товарів і мінімум серверного рендерінгу.

Цього року близько мільйона товарів, 130 відрендерених сторінок в секунду (більша частина клієнтів — це мобільні аппки, які тільки апі торкаються) і близько 6k RPS.⚡️ Це насправді прикольний результат, враховуючи, що з заліза, де це все живе, в нас реально тільки сервер Постгресу новий (минулий був 15-го року за 10к баксів, а цей 20-го року теж за 10к баксів).

Єдине, що пішло трохи не по плану, так це ElasticSearch — хто б сумнівався, інтроспекції у те, як для нього розраховувати навантаження, дуже мало. В нього є "explain", але його результат ну дуже важко інтерпретувати.

Я дивився у співвідношення LA нод ES і навантаження на сервіс в цілому, і воно виглядало майже пов'язаним лінійно — типу подвоєння RPS подвоює навантаження на ES. Але зранку минулої п'ятниці (19 листопаду, на початку розпродажу) замість трохи підрости, LA злетів у небеса й еластіки почали гальмувати. Це означає що всі списки товарів туплять і людям важко купляти — у сенсі вони просто пішли собі займатися іншими справами. :(

Ми за годину наколупали з 5 додаткових нод еластіку, а за наступний тиждень взяли в оренду ще заліза, щоб побудувати додатковий кластер еластіку і раунд-робіном на них розкинули навантаження. Тож п'ятниця 26-го була нудною. Чого, власне, ми й прагнули. ☺️

(@ tg)

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

Ну типу свято, тож ми випили шампанського чи що, сидимо чимось займаємося, аж раптом після 12 ночі, вже у прийдешньому році моніторинг піщить що якийсь з сервачків на Леонтовіча помер і не відповідає.

Якихось супертехнологій у нас не було, ми трохи почекали і я відправився дивитися. Я — бо ми по черзі були відповідальні за майдачики колокейшена на Тургеневській та Леонтовича, а ночі проводили на Тургеневській, бо там нормальний офіс був, а на Леонтовіча страшна каморка при гермозоні.

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

Зняв куртку, проліз туди, і пішов собі на сервер дивитися. Приєднав екран, а там скрінсейвер консольний фрі, де демон літає туди-сюди, висить. Бутнув, значить, воно завелось, і пішов собі назад. :)

(@ tg)

‍DOU опубліковали інтерв’ю зі мною, так що можна піти подивитися, якщо цікаво. :) Причому вони зробили і текстову версію, але вона дуже скорочена, типу там більше факти, ніж роздуми. Мені здається, що послухати буде цікавіше, ніж почитати. :)

Порозмовляли за різне, наче вийшло прикольно. Більш схоже на розмову за пивом, ніж на зважені відповіді. :)

(@ tg)

Raycast

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

Я вже доволі давно користуюся такими штуками, як Alfred і Hammerspoon. Alfred — через те, що він швидше, ніж Spotlight, знаходить програму. А Hammerspoon — це така штука для автоматизації макосі, яку скриптуєш на луа, але в мене воно в кінці прийшло до трьох юзкейсів:

Але остання штука вже попала в сам Карабінер, тож необхідність у хамерспуні знизилася критично (бо совати вікна і запускати програми будь-який дурень вміє), і я навіть почав думати, чи не купити мені Alfred Powerpack — хоча там конфігурація, яким хоткеем запускати програму, прямо неприємно незручна.

Аж тут на очі попався Raycast. Він вміє майже все те саме, що й Альфред, плюс вішати шорткати на свої команди, плюс має розширення для переміщення вікон, тож я однією штукою заміняю одразу дві, плюс вона нова, плюс можна писати екстеншени на джаваскрипті, а не клацати руками у візуальному конструкторі.

Тіки однієї речі не вистачає — вміння показувати напис великими літерами, те що Альфред по ⌘ ⏎ робить. Чи можна якийсь нормальний екстеншен написати, чи може показати симпатичний напис — це занадто складно для джаваскріпта?.. :)

(@ tg)

Слухайте шо! Ми з fwdays записали перший подкаст, де я ведучій! ☺️ Тож історія така: вибирати технології насправді дуже важко, їх дуже багато, вони різноманітні, а оцінити плюси і мінуси потребує багато часу. Тож іноді доводиться вгадувати, а у більшості випадків взагалі просто брати щось знайоме, хоч може і неоптимальне.

Як це виглядає: звемо якусь авторитетну людину і обговорюємо з нею технології, вподобання, роздуми на тему і таке інше у пошуках бажаного, але досить міфічного Right Tool For the Job. :-)

Велкам послухати RTFJ #1 з Андрієм Листочкиним! ⚡️

(@ tg)

Трійко рочків тому всередині сайта Касти ми зробили цікаву (для мене) річ — закешували результати збирання товару по всій базі у тій самій базі.

Тобто ідея така: товар розкладений по десятку таблиць, типу там стоки, ціни, інформація про постачальника і таке інше. Зібрати його і потім ще дообробити — це займає доволі багато часу і ще й навантажує базу своїми джойнами. А так ти результати поклав у базу, і фактично по ключу дістаєш вже готові дані. Тільки не забувай оновляти дані!

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

І все було супер, але з часом етап після доставання з дб-кешу (за нестачею гарного терміну) теж почав розростатися, типу всякі більш динамічні штуки важко закешувати надовго. Скажімо, шаблони написання імені товару — рендерінг строки, кльово б закешувати, але чекати день до того, як товари оновляться - наче дуже довго.

Так ми жили аж до минулого тижня, коли вже вкінець задовбало, що в цього апі 99 процентиль - 300 мс під навантаженням. А тепер ми прожили перший день тижня чорної п‘ятниці з 99 процентилем у 130 мс! Непогано, га?

Що ми видумали: вираховувати ці «динамічні» властивості перед дб-кешем плюс брати хеш від конфігу для їх вираховування. А у той момент, коли відбувається виклик апі, порівнювати хеши від конфігів і за необхідності відправляти запит на перекешування товару. І таким чином перенесли важкі операції у асинхронну площину.

Конфіг у цьому випадку — це типу залежність для прорахунку. Скажімо, хочеш відрендерити ім’я товару — то треба шаблон, значить від нього і будемо хеш рахувати.

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

Цікава річ, що запит на перекешування ми поки вимкнули, бо воно генерує ті запити значно швидше, ніж виходить перекешувати товар. :) Треба придумати якийсь дебаунсер відправки з урахуванням того, що апп-серверів багато… хз, може час ключі для топіків кафки заюзати. :)

P.S. А ще ми у п‘ятницю півтори години паршиво працювали, але це еластік винуватий — товари себе відчували мов живі. І це зовсім інша історія. :)

(@ tg)

Річ Посполита

Багато вже років тому я прочитав, що означає слово “посполита” — це від “спільний” у сенсі для всього народу, ну або просто “народний”. Там у якийсь час це слово позначало селян (тобто є пани, є міщани і є посполиті люди, типу звичайні). Ладно, тут все зрозуміло.

А от слово “Річ” роками не міг зрозуміти. Я розумію, що разом “Річ Посполита” — це “республіка”, res publica, але ніде ніколи ніхто не пояснював значення цього слова. Ну як відібрало їм, чи що. Оце навіть якийсь час думав, що це термін типу “Січ”, яке незрозуміло звідки взялося — мови розвиваються іноді дуже незрозумілими путями.

Ну і шо, колись воно набридло мені, і я пішов шукати. Спочатку пішов до Гугл Транслейту і він мені каже, так res — це ж річ. Сууупер, думаю, допоміг. Клац на англійську, а воно мені - thing. 🤦‍♂️ Отак і роздуплився, що на сучасну мову річ посполитанародна штука.

(@ tg)

Фундаментальна помилка атрибуції

Нашим мізкам властива купа помилок, від яких відбитися важко і взагалі вони відчуваються розумною поведінкою. Типу Коля запізнюється на зустріч — це ж бо він безвідповідальна тварюка, і 100% ще буде ліпити відмазки на кшталт трафіку, дітей, що заважали, і такого іншого. Не поважає час інших людей, так?

А ось я поважаю! Дуже стараюся приходити вчасно, і запізнююся тільки з поважних причин.

Дивна річ, що Коля думає рівно навпаки — бо ми оцінюємо себе за намірами, а інших — за результатами. Ця помилка інколи призводить до дуже неприємних розмов, хахаха. Особливо у випадках, коли людина взагалі не відстрелює про цю особливість мислення.

Якщо хочете ковирнути глибше, є стаття на вікіпедії , але мені вистачає знати себе, щоб зрозуміти, що проблема існує. :)

Хз як закінчити пост. Вважайте це нагадуванням про те, що до інших треба ставитися людяно. :)

(@ tg)

Нідерландська система поїздів наче зійшла зі сторінок науково-фантастичної книги. Яку ще писали років 60-70 тому, коли вірили, що людство може організуватися і побудувати логічне суспільство. :)

Бо я інакше не можу нічим пояснити працюючі трьох-хвилинні пересадки. Ти півтори години їдеш у потязі з Гронінгену, оголошують «Алміре», переходиш через платформу у потяг навпроти, та й їдеш в Амстердам. Ну або в інший час буде іншою дорогою з двома пересадками, і все одно стиковки там по 2-4 хвилин.

Так, бувають пересадки і по 15-20 хвилин, які мені якось більш зрозумілі. І так, я наче уявляю, що ці трьох-хвилинні — їх спеціально сінкають для того, щоб зручно було добиратися. Але як таке можна зробити у масштабах цілої країни, навіть доволі невеликої?

Коли згадують теорії змов, один з наочних аргументів проти — це складність організації будь-яких проектів. Так ось NS.nl — аргумент за те, що людство таки щось може. :)

(@ tg)

Дратують люди, які вважають 80 символів неважливим обмеженням через недосконалість терміналів у древності (тут маються на увазі часи 30-50 років тому).

Це ж невимовно круте обмеження! Фасілітатор покращення якості коду! І все таке. Чому, запитає допитливий читач (ггг).

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

Ви можете згадати мої думки про поради, тож думайте самі. У сенсі думайте про те, як краще виконувати це правило. 😬

(@ tg)

Лечу у Голандію (що блін з цією темою? чому я їх не називаю країну Нідерландами? якийсь брейн демейдж; добре хоч літак у Амстер, реально Голандія), прям от сьогодні. А вчора правительство нідерландське (виправив тут) прийняло рішення перенести Україну з «безпечних» до «небезпечних» країн.

Це означає, що прилетіти можна тільки, якщо ти підпадаєш у виключення, а так — ні-ні. Суууупер, думаю, дуже вдало квиток в мене на перший день цього тупняку… Але одне з виключень: повна вакцінація! Так що все норм, летимо!

Поки сидів у таксі, вирішив уважно все перечитати, і воно каже:

you must always complete a quarantine declaration form. Even if you are not required to quarantine.

Що мені, складно форму заповнити? Лец ду іт:

If you are travelling from Ukraine you are not required to self-quarantine.

Фантастика. Ніхто у цьому світі не захищений від людей, які приймають складні зміни з сьогодні на завтра. 🤦‍♂️

(@ tg)

Ден Луу написав новий пост , про передачу знань, вмінь і підходів культурою, і згадує там прикольний момент — про те, як легко попасти з докладом на велику конфу. Май ідею, запиши її, відправ через форму і твої шанси вже непогані! Треба просто знати, що це й все. :)

Це інсайт, до якого ми з Севою дійшли років з 10-15 тому: робити можна дуже багато чого, але ти не знаєш навіть про існування цього і в результаті втрачаєш час. Це «невідоме невідоме», на відміну від «відомого невідомого», про яке ти можеш піти почитати. Гарний приклад останнього — їзда на велосипеді, всі про неї знають, навіть якщо не всі вміють. Але от лижі… коли я почав працювати, чому ми з друзями не їздили покататися? Просто не знали, що це так просто — узяв і поїхав!

Ще кращий приклад — як зробити щось. Програмісти зара працюють у середовищі, коли ось є таск трекер і бери роби задачі. І коли ти так все робоче життя працюєш, зовсім незрозуміло, як зробити якийсь проект. А воно ж робиться просто — йдеш до людей, які повинні щось зробити, і переконуєш їх. Зазвичай, щось не робиться не тому, що ніхто не хоче, а тому, що на це треба енергія. І коли з‘являється людина з натхненням і бажанням, дати їй це зробити — найпростіший вибір у житті. 😃

Інші його роздуми теж цікаві, але він графоман, тому радити дочитати до кінця важко, я сам не можу, хахаха. :)

(@ tg)

Році десь у 2006 чогось закортіло завести собі блог, на власному домені. Взяв вордпрес, поки підганяв тему — трохи роздуплився в пхп, і потроху почав в той блог писати. Але від пхп в мене залишився неприємний посмак, і я захопився пайтоном і джангою (дякую, Ваню !), і навіть пішов програмувати через це (замість того щоб адмінити лінукси).

І, авжеж, я взяв і написав блог на джанзі, під назвою Byteflow. А потім написав генератор статичних сайтів - Cyrax , бо джанга занадто повільна і взагалі, нашо блогу динаміка? :) А потім ще один генератор - gostatic , бо пайтон теж занадто повільний, і чекати рендер кілька секунд, коли пишеш пост — це не наш метод.

Ну пре мене написання інструментів, що поробиш. :) Чи не більше, ніж власне написання текстів. 😁

Так от, я довго писав пости в телеграм у окремому редакторі, а потім копіював у телеграм руцями, але ж терпець уривається! 🤦‍♂️ А в Ulysses нещодавно вийшло оновлення: вони навчилися оновлювати пост у Wordpress і в Ghost . Апі вордпресу торкатися трохи неприємно, а ось у госта, думаю, подивлюся.

І що ви думаєте? Все вийшло! Зробив штуку — xapi cms (ну, кросс-апі, зрозуміло?). Це такий безголовий cms, який реалізує частину апі Ghost’a. Воно ще дуже рудиментарне, але головне працює. Виглядає це так:

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

Тож тепер я автоматизований! Це не означає, що я більше буду писати, але означає, що я трішки щасливіший. :)

(@ tg)

Колапс

За останній тиждень подивилися новий реліз Суспільного, про розвал Совку, ГКЧП і таке інше. 7 серій хвилин по 40, більшою частиною інтерв’ю від різних цікавих людей, які тим чи іншим чином приймали участь у подіях — не буду їх перераховувати, дуже вже їх багато: журналісти, діаспора, чиновники тощо.

Я занадто малий, щоб пам’ятати, що там відбувалося — взагалі пам’ятаю дисонанс у голові класі в третьому-четвертому, коли в усіх книжках, де це може бути згадано — я любив читати “Детскую Энциклопедию” і щось таке риже в трьох томах — написано “живемо в найкращій страні у світі - СРСР”, а у школі проскакує Україна. :)

Тож подивитися було дуже цікаво, воно ще й добре зроблено. Рекомендую .

(@ tg)

Анонси Клаудфлера за останні роки виглядають дуже цікаво — наче вони планують підрізати Амазон. Точніше не так, воно виглядало так раніше, а у цьому році вони прямо його підрізали. :)

Підрізали дуже яскраво — анонсом R2, повної альтернативи для S3, тільки в 6 разів дешевше для збереження і з безкоштовним трафіком. Не просто дешевше драконівських тарифів амазона, а взагалі безкоштовний! При чому воно одразу може працювати як проксі, якщо об’єкта немає — сходи он туди за ним. В бекенд чи просто в S3. :) Я не можу дочекатися релізу, щоб перекласти туди наші картинки та забути про них взагалі. :)

Але якщо подивитися уважніше на всі інші пропозиції клаудфлера, вони всі лоу-кост і працюють на самому краєчку (on the edge - воркери, key-value сховище для них, хостинг для статичних сайтів — майже статичних, є ж воркери), зовні всіх інших провайдерів платформ. Це дуже цікаво наблюдати було, але ось прочитав гарну статтю з аналізом ситуації, і там чувак фантастичну аналогію придумав: поки амазон грає у шахи, продукуючи все потужніші фігури, клаудфлер грає у го, маленькими камінчиками захоплюючи собі територію. Окружає амазон та всіх інших.

Супер круто все роблять, дуже цікаво спостерігати.

(@ tg)

Колись захотілося мені вдома зробити днс, щоб телік мона було попінгувати - і, авжеж, мій тплінк цього не вміє. Туди можна встановити опенврт, але тільки через задній прохід - вскривай там щось і колупайся у нутрощах. Я ж програміст, а не залізячник, бе. 😅

Виявилося, що я не один такий хочу опенврт без гемору (хахаха), і є компанія GL.Inet з Гонконгу, яка робить роутери одразу з опенврт. І у серпні за передзамовленням взяв новий — Flint, з 802.11ax, щоб гігабіт мій не пропадав же ж. :)

Приїхав він пару тижнів тому, я його засетапив — вони, до речі, роблять ще свою веб-морду, бо стандартна зара Люсі зроблена для терплячих. :) Вміє менше, ніж Люсі, але головні задачі закриває. Так ось, засетапив, а воно пищить. 😱 На столі, вочевидь, взагалі гучно, але й на стелажі в двох метрах все одно чутно.

Помаявся трохи і написав у підтримку. І через тиждень переписки і моїх перевірки з іншими блоками живлення кажуть: відправте нам у Германію за наш рахунок, а ми вам новий пришлемо, бо писк не повинен бути чутним на відстані більше 5 см. :)

Оце кастомер сервіс, капець! 😲 Супер-круто. Трохи непокоїть те, що може це я занадто тендітний, але ж тплінк мій не пищить? 😃 Подивимося!

(@ tg)

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

Прийшли холоди, а значить вже час, коли можна знов юзати свої улюблені Beyerdynamic DT770 — бо влітку в них занадто жарко. 😁 У сенсі в мене тепер є навушники для літа: відкриті Sennheiser HD599, і зимні - баєри. хд599 такі всі воздушні, з величезною сценою і деталізацією, а дт770 - вони про щільність звуку явно. Ну точно лагер вс стаут. :)

Але річ не про це! Вдягаю їх (баєри), значить, а вони щось у вуха мої динаміками впираються. Пройшло пару днів і до мене дійшло — амбушюрам просто гаплик. На дотик просто всередині поролон зовсім трухлявий вже. Ну я знайшов у інтернеті заміну, купив, і вже навіть отримав… але щось ніяк не можу відійти від думки, що такий вік вже, що навіть навушники треба лікувати. 😂

(@ tg)

В мене є брат. Авжеж, нічого незвичайного у цьому немає, але тут є привід його згадати у пості: він собі завів телеграм-канал.

Само собою, можна порозповідати за тематику, бо він його завів не без приводу — не хочеться загубити у безодні фейсбуку думки з приводу освіти. Фейсбук такого не любить, коли ти туди пишеш сфокусовані пости, які на скролі лайкають менше, ніж симпотні фотки, він їх карає за таку зухвалість і ховає від людей.

Але! Як то кажуть, на конфереції є сенс ходити не на тему, а на людину: ті лектори, що гарно розповідають, навіть з проходною темою будуть цікавими, і навпаки. А Сева гарно дистилює складні і неоднозначні теми, тож читайте і підписуйтеся: @uasymposium

(@ tg)

Ще трохи походив і придумалось мені, що гарною іллюстрацією того, що наша індустрія живе по законах моди буде REPL. Колись Нікіта написав статтю про REPL у кложі, а я навіть виступав на ту ж тему. Якщо ви й те, й те бачили, могли звернути увагу на загальний рефрен: це проповідування. Неможливо зрозуміти, як REPL змінить ваш підхід до розробки, аж доки не спробуєш по-справжньому з ним попрацювати.

І насправді всі ці розповіді працюють дуже погано: люди, які регулярно юзають інтерактивний шел на кшталт ipython або схожих, пишуть “Прям какой-то необходимости код через РЕПЛ писать нет” (Андрій, якщо ти впізнав свою цитату, то це не до тебе конкретно претензія). Нагальної потреби нема, але й потреби у інтерактивному шелі потреби теж нема, завжди можна невелику програмку написати і все там спробувати, правда? Це питання ефективності і втрат енергії (що імхо більш важливе, ніж втрати часу) на експерименти.

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

На останок дам вам ще демо від Шона Корфілда. Може воно вас змотивує витратити часу на те, щоб спробувати. :-)

(@ tg)

Хто б роздуплив, що коїться з ютубними коментами? Приходять пуші від ютубу, що залишили новий коментар, йдеш його повністю прочитати - а коменту-то й нема! Люди самі видаляють, чи що? Мож з 5 останніх коментарів так прийшло і зникло, якесь дивне співпадіння. Нормальні коментарі, ніяких претензій до них немає - але й них самих теж немає. :))

Не розумію. І головне - з авторами не сконектитися, вбудованої в ютуб системи повідомлень наче нема ж…

(@ tg)

Колись, на зорі часу (за моїми стандартами), на початку 00-х у КПІшних ньюсах (це у сенсі у NNTP-групах) була популярною фраза про «використовуй інструмент під свою задачу». Ну й загалом консенсус був, що всі ці наші комп‘ютери - вони про пошук оптимального рішення, меритократію і все таке інше.

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

З‘явилася нода — ура, побігли туди! З‘явився го - ура, побігли туди! Моє комм‘юніті не любить JVM — знач все, що вони роблять, фуфло, не буду туди дивитися! Ну й таке інше, розумна оцінка рішень дуже складна і важка, тож зазвичай все через емоції.

Але ще є ефект другого порядку! Коли звичайний розробник приходить до звичайного керівництва і каже «давайте заюзаємо оцю прикольну штуку», звичайна реакція це «ох знов якась модна хрінь». Але й пробувати все підряд, що кожному на думку спаде цього тижня - теж не дуже продуктивний підхід.

А без використання, чисто з доків, зрозуміти що до чого — це неможливо. Реакт у себе в доках не пише “робить зручними не тількі хороші, але й погані рішення”, Джанго не пише “ваші розробники не будуть розуміти, що вони роблять с БД”, Нода не пише “пам’ять буде текти, але логіка буде текти ще гірше”, і так далі.

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

(@ tg)

Всі знають історію фейлу Kodak з книжок для MBA, коли чуваки першими у 70-х розробили матриці, але вирішили, що це вб’є прибуток від продажів плівки і поклали це все на шухляду, аби заробити побільше грошей. А потім прийшла революція і Кодак від того вмер.

Це все чухня! Красива казочка про бездіяльних менеджерів, в яких немає приводу робити краще, бла-бла-бла. Насправді Кодак інвестував мілліарди доларів у 90-ті у цифрове фото, камери на початку 00-х використовували матриці Кодака, і у середині 00-х Кодак займав більше 20% ринку цифрових камер у США. То де ж проблема? Проблема у тому, що Кодак разом з Фуджи становили дуополію з виробництва дуже складного продукту: кольорової плівки. На скейлі ще щось виробляли Агфа та Коніка, але вони були малесенькі порівняно з тими двома монстрами. І вони звикли до цього ринку: ти робиш щось добре і через те отримуєш прибуток.

Але цифрові камери це не складний продукт, тому що замість купи проблемних реагентів ти купляєш чіп, саджаєш його у корпус і вуаля! Це commodity, тож маржа на ньому майже відсутня і тебе подрізають чуваки, які вміють організувати ефективніші процеси і дешевше виробництво. І тому Кодак втрачав гроші на кожній проданій камері! А заробляти… заробляти не придумав, як. Вони багато різного спробували, але люди перестали друкувати фото, ну і взагалі…

Тож справжня історія тут не про Кодак, а про Fuji, які змогли. Фуджи ще у 90-х почали диверсифікацію бізнесу у компліментарні області: захисні плівки до LCD (гарно вгадали, що ринок полетить вгору), медичні прилади (оптика єтц), косметика (у плівках багато роботи з коллагеном, як й у косметиці для шкіри), і т.п. І група Фуджи у 2010 була в 1.5 рази більше, ніж у 2000-му! Ну й вони експериментували з value-added (на відміну від commodity) фотіками і на початку 10-х випустили дуже вдалий X100, з якого потім виросла кльова серія X.

А чому Кенон і Нікон норм себе почувають? А тому що вони ніколи не заробляли на плівці і ніколи не були такі великі, як Кодак чи Фуджи, тож їм не довелося змінювати бізнес-модель і зменшуватися у розмірах, що складно і боляче.

Це насправді і вся історія, але якщо хочете більше подробиць із цифрами, осьо велика стаття: https://petapixel.com/2018/10/19/why-kodak-died-and-fujifilm-thrived-a-tale-of-two-film-companies/

(@ tg)

Фейсбук знач вчора відпочивав, чули таке? І тіки він вимкнувся, з різних сторон почали лізти дуже конспірологічні теорії про хакерів, правительство США та криптовалюту від фейсбуку, і інший подібний бруд. Цікаво, зо я в цілому не так багато торкаюся цієї частини інтернету і воно лізло з дуже неочікуваних місць.

Але насправді це була помилка у конфигурації. CTO Cloudflare вже написав статтю про те, як це виглядало ззовні: фейсбук просто перестав себе рекламувати по BGP . Тобто перестав всім іншим розповідати, як добратися до його мережі з іншого інтернету. Ну реально просто як вимкнув телефон і приліг спати. :)

В одному треді на реддіті якийсь чувак заявив, що він приймає участь в операції відновлення і дві великі проблеми полягають у тому, що:

Загалом воно лежало близько 4,5 годин і почало піднімати голову після 12 ночі за Києвом. Непогане нагадування про те, що інтернет одночасно і дуже складний, і працює завдяки тому, що всі ведуть себе корректно. Такі самі відчуття, як з дорожнім рухом. :)

Дуже хочеться почитати постмортем від самого фейсбука! Тож чекаємо на нього. :)

(@ tg)

Пару днів тому забрав з поштомату Нової Пошти свою каву (з Kyiv City Roast , вважайте цей пост рекламним, хаха). Забрав та й забрав, ну типу почекав, поки з третього разу воно завантажило дані відправлення і приконектилося до поштомату. Я забрав свою каву, закрив поштомат, натиснув “забрав” на екрані смартфону і пішов собі додому.

Особливо чекати, доки їхня аппка роздуплиться, що я таки “забрав”, я не чекав, і вона без докорів сумління показала мені попап “помилка, давай ще раз”. Ну ще раз я не можу, бо я вже вдома, до нього не законектишся, ну і, думаю, хрєн з тобою, ви ж знаєте, що я вже відкривав і забрав?

Не знають! Сьогодні прийшла нотіфікашка “ще день і ми перенесемо ваше відправлення до найближчого відділення”! Ну що ж, переміщайте, напевно ж кур’єр роздуплиться, що це означає “вже забрав”? Але, блін, яка ж це неприємна проблема, що вони залежать від (погано працюючої) аппки і дій користувача, щоб роздуплитися, що у комірці вже пусто? Наврядчи той поштомат копійки коштує, невже при розробці ідея про датчики обсягу не приходила до голови?

(@ tg)

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

Про артефакти у вигляді автомобілів ми й поговоримо. Наприклад, беремо відносно новий Міні Купер R56 (в мене був такий, 2008-го року). В нього досить технічно просунутий двигун Прінс спільної розробки БМВ і Пежо. І від БМВ там такі круті маслозйомні кільця на поршнях, в яких отвори для відведення масла невеликі, щоб воно все було акуратно. А двигун гарячий, тому що паливо витрачається ефективно, щоб трохи менше у трубу вилітало. Що це нам дає? Те що сраний Кастрол, який БМВ рекомендує, починає підгоряти та відповідно забиває ті невеликі отвори й ось ти не встиг обернутися, а воно жере літр масла на тисячу км. 🤦‍♂️

А з іншого боку візьмемо Гольф 2, які досі є на дорогах і наймолодшому вже 30 років точно. Ну тобто звичайнісінька автівка з 80-х і норм, не те що мінік!

Чи значить це що раніше огого, а зара тююю? Італійський журнал Кваттроруте років 15 тому зробив тест-драйв нового тоді Fiat 500 Nuovo довжиною у 100 тисяч км. Їздили по всій Європі, півночі Африки, по горах і долинах, по грязюці та по асфальту. Але найцікавише у цьому тесті інше — за 50 років до того вони робили такий самий тест, але першого Фіат 500. Теж сто тисяч кілометрів. І списки виконаних робіт просто неможливо порівняти! По-перше, заміна масла у двигуні кожні 5 проти кожних 20 тисяч кілометрів. По-друге, постійне обслуговування підвіски. По-третє, величезна кількість використаних запчастин. І інструментів, які возили з собою. Я думаю, що ви здогадалися, що мова не про новий, де міняли масло/фільтри, та один раз колодки.

Старі машини, які їздять по дорогах — це просто дуже вдалі моделі. Тому що всі нормальні вже давно померли. Гольф 2 і Сієрра за живучестю — таргани серед автомобілів, але і їх майже не лишилося на дорозі.

Є цікава річ: в залежності від моменту, коли людина почала роздуплятися в автомобілях, в неї різні погляди на те, що підпадає під “старі прості й надійні автівки”. Зазвичай це машини, які були у продажу за 15-20 років від цього моменту. В мене все так само, тому перетин 80-90-х для мене дуже довго відчувався як баланс між простотою, надійністю та комфортом. Хоча, якщо замислитися, там такий капець був, моноінжектори, пацавата електроніка Бош тих часів… не хочеться згадувати. :)

Окрема тема — це двигуни. Я взагалі цей пост почав писати після того, як Вова написав про двигуни . Але історія ж та сама! По-перше, всі гівняні конструкції вже давно померли, і ти їх просто не побачиш ніде. По-друге, у ті часи просто не вміли добре розраховувати витривалість, і там, де прорахувалися в іншу сторону — надійність зашкалює. Зара краще рахують, хоча трабли бувають, не будемо забувати БМВшні двигуни 00-х/початку 10-х. Але ж все одно, чомусь геніальний V6 Буссо Альфа припинила виробляти у 00-х! Хоча діфірамбов йому протягом 30 років співали стіки, що самому Джузепе повинно було бути ніяково. :)

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

А те, що не треба шпринцевати підвіску кожні пару тисяч кілометрів — це просто щастя. ☺️

(@ tg)

Нагадування - 15 хвилин і поїхали, тож не завтикайте, якщо планували :)

(@ tg)

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

Значить так: пости з профіля свого рекламувати не можна. Можна або створити нову рекламу, або рекламувати пост зі сторінки (з таких що Page звуться), або івент, теж зі сторінки. Може треба було звичайну рекламу зробити, але ж це треба більш інформативну картинку, ніж мій тамбнейл для відео, тому я вирішив рекламувати івент. Зробив сторінку у Фейсбуці, запостив туди івент, нажав «просувати», сказав «ось тобі 10 баксів до 5 вечора» і воно поїхало.

Спочатку тієї кнопки не помітив, і пішов через ад менеджер щось створити і мало не зійшов з глузду. Інтерфейс там… фантастика просто. 😖 А ще воно не дало з події нічого створити, сказало що треба звичайний пост — але коли я створив іншим шляхом, то в ад менеджері все з‘явилося. Ну як заведено давно, взаємовиключні параграфи — фундація нашого буття. :) Після публікації воно ще декілька годин перевірялось, і, судячи з усього, почало працювати десь о другій ночі (я майже опівночі все робив).

Фільтрами поставив інтереси ruby, python, java, c# і devops. На пхп забив, бо там їх нереальна кількість. :) Хз, чи це разумно взагалі? Маю зара 664 перегляди і 0 взаємодій за 1.91$. Не знаю, які висновки треба з того робити. :))

Пішов глянути у твіттері на Boost Tweet, а там мінімум 50 євро. Ось тут жаба прокинулася і каже «краще мож фейсбуку десяточку докинь». :)

(@ tg)

Літо — це пора року без стрімів. Бо хтось хоче погуляти, хтось до ресторану, хтось ще щось — тож ті стріми робити нікому і дивитись нікому. Але ось вже тиждень як повноцінна осінь влупила холодними гидкими дощами, тож замість погулять давайте поговоримо!

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

Поширюйте запис і занотовуйте: післязавтра, середа, 29 вересня, о 17:00 за Києвом (це взагалі норм, що о 17? Не сильно рано?). Або краще ставте нагадування: https://youtu.be/UXnTzxGhnXc

(@ tg)

Я не люблю стрес, не люблю незворотні дії, і не люблю повторювати одну й ту саму роботу. Вочевидь, ніхто не любить, але чомусь у кожному проекті, де я приймав участь за останні 10 років, деплой найбільше непокоїв саме мене. :) І тож моя опінія — деплой повинен бути такої складності, щоб 10 раз за день не ставали додатковим навантаженням на когось, окрім системи CI.

Нащо з тим возитися? Тому що деплой — це один з найважчих морально моментів, і зміна відношення до нього прискорить будь-яку команду. Це реально з речей, які ну дуже сильно впливають на мораль і на результати команди.

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

Що треба, щоб стало норм? Дивись чекліст! Він упорядкований, кожен крок наближує до ідеалу.

Ну й не забувайте просту істину: мізки треба вмикати все одно. Головне — не пройти чекліст 1-в-1, головне — щоб стало добре. :)

(@ tg)

Коли ти робиш публічне апі — ти підписуєшся на зворотню сумісність. Публічне — це не тільки апі для широкого загалу, це й:

А що значит підписуєшся? Це значить, що якщо ти притомна людина, зворотню сумісніть ти ламати не будеш. Не будеш видаляти поля. Не будеш перейменовувати стовпчики у базі даних. Не будеш змінювати у меншу сторону сігнатуру функції.

Чому? Тому що це зменшує кількість страждань у світі. Апка не перестане працювати. Сервіси не зламаються і їх не треба буде лагодити. Клієнти БД не помітять ваших змін. Краса!

Насправді, коли це внутрішня штука, то змінювати можна все, просто у кілька релізів. Хочеш перейменувати поле з uuid на id у повідомленнях сервісу А так, що сил немає? Випускаєш сервіс Б, який читає обидва поля, а потім вже сервіс А з перейменуванням. А потім ще можна закріпити релізом сервісу Б, який тільки другу назву читає.

Коли таких споживачів штук 3-5, перейменовувати поле не хочеться. І не треба. :)

Можна вчитися у Clojure: береш якийсь код на гітхабі, який 8 років не торкалися, а він працює. Фантастика!

(@ tg)

Є речі, які стають настільки звичними і настільки частиною щоденного життя, що про них перестаєш замислюватися. Наприклад, Кафка. Мова не про грефневу, авжеж.

Що воно таке? Це наче черга повідомлень, але ці повідомлення там назавжди (ну або скільки скажеш, диски ж не безкоштовні). Абстрактно вся кафка це файли зі строками повідомлень і додатково записи про те, на якому рядку кожний читач зупинився. Ментальна модель екстремально проста і через те дуже ефективна!

Що воно нам дає?

• В тебе завжди є історія для аудіту — читання повідомлення не видаляє його (як це відбувається у традиційних чергах). • Ця історія підходить не тільки для дебагу, а й для того, щоб після зміни коду — обробини все наново. • Одна абстракція як на кілька процесів, які обробляють послідовно (1 повідомлення - 1 раз), так і на кілька обробляють параллельно, і на будь-які комбінації

Коли ми її впровадили, цілий клас проблем просто щез. Не тільки технічних, а й такі штуки, як тикання друг у друга різними командами: «ви не те відправили!», «ні, це ви не так прочитали!» — вони просто не існують у світі, де інтеграції не по хттп (або схожій схемі), а через кафку.

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

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

• id, topic, message • consumer name, topic, offset

Цього вистачить, аж поки рахунок не піде на тисячі у секунду.

Мораль така: якщо у вас є всередині хттп апі — то час замислитися. А якщо є rabbitmq чи шось схоже — час апгрейдитися. :)

(@ tg)

В нашому лексиконі відсутнє слово toddler. Я не розумію, де воно є, бо таких людей (від 2 до 5-6 років) дуже багато, і цей період життя такий яскравий що для дитини, що — ще й більше — для її батьків, що вочевидь потребує назви.

Але просто казати «тодлер» мені важко морально, бо ж це не нова ситуація, нащо ще й слово імпортувати? На розум приходить «дошколятко», але воно критично віддає совком і цим відштовхує.

Але тут мене на думку наштовхнула сама реальність. Моїй молодшій вже скоро півтора року, але вона ще немовля. А от старший вже дуже давно «мовля». І це слово нереально підходить для цього періоду життя — вони вже навчилися керувати язиком, але не навчилися ще розуміти, коли ж їм треба керувати.

Я не знаю, куди треба відправити пропозицію на наступне оновлення мови, але моє мовля вже знає, шо воно мовля. :) І інші мовлята теж дізнаються, коли будуть балакати поверх всіх присутніх. :)

(@ tg)

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

Так ось, через те всі поради, які є з приводу того, як програмувати, треба сприймати у контексті “тільки якщо воно має сенс” та “сам подумай трішки, ну”. Воно, вочевидь, взагалі так завжди поради треба приймати, але тут це прямо як хвороба якась!

Хтось читає про принцип Don’t Repeat Yourself, і починає робити параметрізовані функції на всі два випадки, хоча воно простіше вирішується кастомними трьома строками інлайн. Люди надивляться на переускладнені DRY’єм (пересохлі, ггг) кодові бази і потім пишуть у твітері “ні в якому разі не робіть функцію, поки хоча б три рази вона вам не знадобиться!” Впевнений, потім на цю лапшу інші люди будуть дивитися і писати “не повторюйся падлюко!” Хоча капець, це ж просто — подивись на те, що ти пишеш, і подумай, чи це має сенс бути окремою функцією? Це ж просто спосіб зробити абстрацію.

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

Є ще багато правил, які гуляють інтернетом, які одні люди пхають всюди “робіть тільки так”, а інші волають “ні в якому разі так не робіть”. Але насправді суть у тому, що власного розуму ніякі поради не замінять. :)

(@ tg)

Україна це хайтек на мінімалках. Ми живемо у майбутньому, набагато більше, ніж більша частина білого світу, але цей хайтек будується і юзається з мінімальними костами.

Скажімо, в нас потроху головним методом платежу стає переказ з картки на картку - дуже швидкий, дуже дешевий (а часто і взагалі безкоштовний), без метаданих та підтверджень. В мене на районі навіть розкладка з овочами приймає такі перекази. Ще й сама пропонує, до речі! Я навіть бачив на свої очі, як бабуся 70+ з монобанка перекидувала гроші, «бо не треба з дрібнотою возитися». Але! Покажи будь ласка екран, що гроші пішли, бо карта - хазяїна.

В інсті шось купив, гроші сюди і будь ласка скріншот переводу. Довбаний гемор, придумати якийсь протокол, де б метадані ходили, ще б навколо візи/мастера, щоб комісію не платити — раз плюнути, тіки воля двох-трьох великих банків треба. Але ні, нащо, давайте скріншотами у месенджерах підтверджувати перекази.

Ще Дія у голову приходить з подібного. Замість спрощення, ми діджиталізуємо всі процеси! Бо хайтек це просто, а управління процесами — складно, тож ми будемо шукати ключі під ліхтарем, бо тут щось видно. А секьюріті зробимо як в пре-сід стартапа, бо часу бракує! Ми ж доганяємо уявні дедлайни!

А замість того, щоб виписувати штрафи за паркування, давайте запустимо евакуацію приватною конторою по ціні х5 від ринкової. Але ж вивезення з неасфальтованої площадки з ланцюжком замість шлагбауму обов‘язково зробимо в застосунку, з QR-кодом в кінці! Нашо він там, номера машини не вистачає?..

Тіки шо зрозумів, що Максим Бахматов не дарма називає Київ столицею кіберпанку — це і є хайтеком на мінімалках, який ми спостерігаємо.

(@ tg)

Кілька днів тому на реддіті пробігав тред “Які цукерки ви вважаєте найгіршими за всю історію” , і, через переважну більшість американців в аудиторії, там доволі багато обговорювалися конкретні американськи бренди. Навіює одну думку — що коли я думаю про цукерки, для мене це види цукерок, а не компаній.

Це, авжеж, через совєцьку спадщину, тому що “ромашку” робило багато різних цукерових фабрик — і хоча в деяких були досить впізнавані бренди, але ж ті ж самі “заварні” робили прямо всюди!

Я не можу дати якусь моральну оцінку цьому, треба обсмоктати зі всіх сторон, але не можу не звернути увагу на те, що “конкретні бренди” звучить дуже схоже на “конкретні типи” з ООП, на які постійно котить бочку Річ Гіккі. :)

Тож “рачки” і “ромашки” це як структури даних, хто завгодно може їх зробити і віддати далі споживачам тих даних (чи хоче він “червоний мак”, чи там масив хешмепів). А якщо ти живеш у всесвіті ООП і тобі потрібен Кіткат, то лише конкретний виробник може його зробити і незаконна копія карається законом!

І якщо у фізічному всесвіті можно пообговорювати, то у інформаційному це універсально погано — тому що коли ти вже зав’язався на якийсь фреймворк у своїй джаві, то це вже навічно, бо змінювати буде екстремально дорого, треба з Кіткату перевчати на Баунті буде, хєх.

Мораль: вчися програмувати на кложі — це дозволяє і рибку з’їсти, і на Снікерс сісти. 🤣

(@ tg)

Оце вже мошейнікі пішли грамотні, капець. Вчора виставив інтеловий макбук про на продаж на олхі, сьогодні в Телеграм пише мені якийсь Илья Усачёв, і каже — а можна сьогодні в Києві зустрітися купити? А ви вже його почистили? А скільки циклів перезарядки (це трохи дивно, в оголошенні ж написано)?

Вмовив мене, що для перевірки треба бачити робочий стіл, тож я завершив встановлення макосі (бо я ж її стер нафіг), і кажу — є, шо робимо.

І тут він дуже хоче по телефону говорити — ну ок, і відбувається в нас така розмова:

— Ви вже повидаляли всі аккаунти? — Так. — Давайте тоді в наш айклауд зайдемо, щоб я перевірив все. — Гммм, ні, в айклауд я заходити не буду. — Але ж як я перевірю? Чому не хочете? — Тому що ви мені потім ноут заблокуєте)) Приїжджайте дивіться своїми очима. — Добре, я тоді подумаю, як ще перевірити, до побачення.

І повидаляв всі мессаги з телеграмівського чату. Хитре падло.

(@ tg)

Сьодні зі Степаном пішли на картінг — на «Жагу Швидкості», авжеж, бо де ще можна нормально проїхатися. :) І раптово виявилося, що вони останні два роки вже не пускають повозити дитину на руках. :( А самому йому ще рано, треба 130 см зросту, щоб дістати до газу (кому треба той тормоз).

Тож довелося мені самому разочок проїхатися, тим більш що я там роки 3 вже не був — і перше коло за 43.3 дуже болісно про це нагадує. :)) Колись за 39 з копійками проїжджав сьогоднішню конфігурацію, а зара найкращий результат — 41.7 при тому, що крім мене на трасі тіки ще один чувак був.

Але кльово, приємна втома в пальцях, хехе. Треба ще буде сходити. ;)

(@ tg)

Є така штука - еластіксьорч. В мене з ним якісь love/hate 💔 відносини. Він вміє дуже прикольні штуки, але і має дві вади.

1️⃣ Він завжди, у кожному місці, хоч крапельку, але недороблений. 2️⃣ Його доки завжди написані для тих, хто вже шарить. Тобто якщо ти читаєш якусь доку вперше, то зрозуміти, що вона тобі розповідає, майже неможливо.

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

Почну з контр-прикладу: в постгресі додали можливість вибирати частину JSON’у з поля. І одразу ти можеш це використовувати у селекті, у where, у сортуванні, у агрегаціях, можеш будь-яку строку привести до JSON’у і так само воно буде працювати всюди. Це ортогональність фіч: розробникам постгресу не прийшлось окремо всюди припилювати це механізм, в них нормальні абстракції. 🎉

Натомість давайте подивимость на Elasticsearch. Скажімо, в нас є така штука, як вішлісти. Ти можеш лайкати товари і ми тобі за це потім скажемо, коли на нього впаде ціна. Але є люди, в яких цих товарів дуже багато (десятки і сотні тисяч товарів налайкали, це капець), тож ми їм хочемо дати можливість ті товари фільтрувати. Складати в кожен товар перелік користувачів, у яких він в вішлісті, трішечки нерозумно — популярні товари таки дуже популярні (в найпопулярнішого - 8,5 тисяч лайків 🤯).

Але ми беремо фільтр terms, який дозволяє сказати “хочу лише оці документи”. Якби в нас були сотні товарів в одного користувача, то ми б просто їх параметрами запиту передали. Але в нас тисячі (десятки навіть)! Еластік такий: не бійся, чувак, я все шарю. 👌 Диви на доку нижче , якщо ти замість списку термів передаш спеціальну мапу, то це буде означати “хочу документи, список яких є он в тому документі”. Ну типу вішліст твій будемо складати в еластік одним документом і потім на нього посилатися (ну теж не дуже ефективно звучить, але ж кращє ніж на читанні таке селектити з бази).

Наче норм, так? Проблему вирішили? Ось тільки ми ж хочемо їх видати так, щоб найсвіжіші (за часом додавання користувачем) були вгорі. А еластік видає як йому заманеться. Добре б його попрохати відсортувати, як у тому нашому документі з вішлістом. Але ж немає шансів! Тому що фільтр термс те вміє, а сортування не вміє. Той “джойн” — не ортогональна фіча. 💩

І це втомлює реально. Еластіксьорч то набор юзкейсів, якщо твого не зробили — то й працювати не буде. Хз, шо з тими вішлістами робити. 🤷

(@ tg)

Судячи з реакції, вчора був занадто технічний пост, тож давайте обговоримо якісь загальнолюдські цінності. Наприклад, колдбрю! :) Беремо чисту холодну воду і каву у пропорції 1:18 — або якійсь іншій, в інтернеті купа обговорень, скільки треба. Я роблю літр води і 55 грам молотої на аеропрес кави і мені подобається результат. Тож цю суміш у банку і в холодильник, а зранку наступного дня (виходить десь годин 16 в мене) фільтруємо і є трішки менше літру дуже смачної кави, яка ще й холодна і у години нестерпної спеки наче нектар. :)

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

Я спочатку спробував фільтрувати через сито для чаю, але дуже багато кави проникає, а потім згадав про френч-прес — і він майже все відфільтровує. Думаю, що через фільтр для пуроверу було б краще, але за ними треба кудись поїхати… У інтернетах марлею фільтрують взагалі, хаха.

Кароч, кайфую з результату і не розумію, чому минулого літа цього не робив.

(@ tg)

Встрягли у трішечки геморну технічно ситуацію, коли ми хочемо зробити нормальну адмінку до всяких маркетингових штук, які вміє сайт — на жаль, ми його різному навчили, але інтерфейсів не зробили і різні штуки вмикаються переписками та лайкою. :) Геморна вона у тому, що ми заюзали rule engine (“двигун правил” поки що мені не звучить нормально як термін) для вмикання, тож треба не тільки формат конфігурації придумати, а ще й компілятор того формату у власне правила для двигуна.

Ну ми й влаштували парне програмування, і вдвох — честно, я не використав це як нагоду пописати код замість складних зустрічей — зробили той компілятор. На початку в мене розуміння того, що відбувається, було на рівні “магія”. Ми використовуємо Clara Rules, і я не можу сказати, що я зара прям критично добре усе розумію, але базовий принцип наче засвоїв.

Ідея така — ти збираєш до купи відомі тобі:

• факти: id товару такий, постачальник такий, ціна така, властивості такі, користувач з Києва, вибрав оплату картою, вибрав доставку у відділення НП, і т.п. • правила: доставка на кастапост безкоштовна, якщо ти чоловік з трьома дітьми у Києві і платиш карткою Андорри • питання: чи доставка безкоштовна? чи може треба хінт для сторінки товару про те, що доставка для оплат карткою безкоштовна?

І потім у потрібних тобі місцях ти дивишся — чи є відповіді на твої питання? Воно наче обіцяє працювати швидко, плюс в нас не дуже багато фактів, тож думаю, що повинно бути доволі ефективним, тому що раніше ми схожі речі робили через купу руками написанної бізнес-логіки.

Я ще не дуже розумію, чи може DataScript + запроси туди були б достатньо ефективними та простішими для усвідомлення, чи ні. Але поки що вся ця конструкція виглядає так, що мені боляче за витрачені роки. :)

(@ tg)

Пару тижнів тому у мене разів 5 за день поламався інтернет. І так цікаво воно відбувалося, що ребут роутера не допомагав. А ось відключення шнурку від роутеру і втикання назад допомагало: провайдер каже “порт завис”. У мене було таке один раз минулого року, один раз 1 квітня (пам’ятаю, бо це прям посеред стріму відбулося), і ось 5 разів за той день.

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

І справді, пару тижнів пройшло нормально, аж у четвер знов пропадає! Ну капець, думаю, 4 роки все було нормально, а тепер що?… Якщо ще раз пропаде, то наберу їх ще раз — аж тут раптом дзвонить телефон, а звідти: “ви оформлювали заявку на гігабіт, вона ще актуальна?”

Немає худа без добра, чи що? :) Тепер я плачу на два долари більше, але маю цілий гігабіт! Тепер можна набагато швидше нічого не качати!

(@ tg)

Я ж півроку тому купив Соньку a5100 і продав свій Фуджик X-T1, тому що він не вмів видати по HDMI живу картинку — тільки те, що вже записано на картку пам’яті. Ну і ще тому що я його кілька років не чіпав. :) І Сонька за свої гроші виявилася дуже розумною покупкою, майже за гроші Logitech Brio, але з набагато кращою якістю.

Але без шансів її використати як фотоаппарат. По-перше, для живлення там фейкова батарейка зі шнурком до USB. По-друге, об’єктив після фуджиковських такий, що плакати хочеться, на 16мм світ навколо стає круглішим за повний місяць. А по-третє, результуючі кольори у джпегах та відео… тут я нарешті зрозумів, за що фуджики хвалять за кольори у всіх оглядах.

Походив, помучився, чи воно мені взагалі треба — попередній же ж лежав без діла реально, але ну скіки ото можна страждати, і купив Fuji X-S10. До речі, виявилося, що представництво Fujifilm дає фотіки на тест-драйв на кілька днів. Я так взяв X-E4 з 23/1.4 — ніколи в житті не користувався таким світлим склом — і зрозумів, що об’єктив то воно, а форма фотіку мені потрібна від зеркалки, а не від далекоміра.

Тож X-S10, плюс в мене ще залишилися об’єктиви від X-T1, плюс я купив Viltrox 23/1.4 (тому що він 400$ замість 1000$ за фуджиковське скло, а з якістю все супер). Сказати, що то кайф — нічого не сказати. Просто тащусь від камери, та й від скла теж. Результуючі фотки просто фантастичні, керування кайф — що завгодно з кнопок та крутилок можна переназначити на інші функції, ну й взагалі і форма, і керування супер.

Живлення по USB-C, плюс швидкозйомна площадка вирішують траблу з тим, щоб його зняти або поставити секунд за 10, так що він не намертво стоїть біля компа.

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

А ще макро…

(@ tg)

Степану якось подарували пазл, шось на кшталт тетрісу: треба фігурки скласти так, щоб вони утворили прямокутник. Цьому заважає не тільки їх форма, але і рельєф — мізки нормально треба вмикати, особливо на рівнях поскладніше.

Воно лежало без діла доволі довго, але тиждень тому якось ми на неї напали і активно розгадували (у сенсі не тіки Степан це робив)… аж тут козявка Фаня три дні тому кудись заховала книжечку із завданням.

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

(@ tg)

Нам з братом пощастило у дитинстві: на одному з дисків зі збірками ігор була TTD — Transport Tycoon Deluxe . Сенс гри у тому, щоб організувати транспортування товарів з місць виробництва до місць споживання. Бувають короткі маршрути, скажімо, вуголь до ТЕС, бувають довші: залізна руда — сталь — товари, які потім треба возити в міста, щоб вони росли. Перевозити їх можна вантажівками, кораблями, літаками, і, найкраще — потягами. Прокладаєш маршрут, розставляєш семафори, і пішло-поїхало. :) Гроші заробляються на транспортування, до самого товару ти якби відношення не маєш.

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

І ТТД наче залишився там, у дитинстві, та іноді у спогадах, але вже на першому курсі у ньюсах КПІ я натрапив на обговорення TTDPatch. Сам TTD був, вочевидь, програмою з закритим джерельним кодом, ще й на асемблері — бо Кріс Сойєр таки олдскульний дядько, і навіть Locomotion 2004’го року написаний на асемблері. Але знайшовся чувак за ім’ям Йозеф Дрекслер, який з 96 року (враховуйте, що перший реліз оригінального Transport Tycoon відбувся влітку 94) працював над in-memory покращеннями гри. Цей патч виправляв купу неприємних особливостей гри і додавав багато нових можливостей.

А ще тепер інтернет був значно більший, ніж у 96-97 році, і можна було почитати туторіали, як інші люди грають. Це був ренесанс ТТД для мене і відкриття року для купи народу в общагах, хєхєхє. Ми нормально навчилися грати і заробляти гроші, і взагалі виявилося, що гра фанова не тільки для 11-річних дітей.

А у 2004-му Людвіг Стрігеус (який згодом стане доволі відомим, бо він є автором μTorrent) стартував проект OpenTTD . Все ж таки TTDPatch не міг зробити всього, що хотілося спільноті, тож реімплементація гри на C з відкритим джерельним кодом це було то шо треба. Воно вистрілило і розробка йде до сих пір: їх сайт каже, що останній реліз, 1.11.2, вийшов 3 травня — незабаром вже буде 20 років проекту!

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

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

(@ tg)

Подивився тут інтерв’ю з Миколою Аліменковим , і, після купи дуже розумних думок наприкінці (45:12) він каже: “яка різниця, на якій мові це робити”. Вочевидь, в мене на це питання прямо протилежна точка зору (інакше б я десь біля джави чи якогось пхп тусувався, правда?): інструменти дуже сильно впливають на результат.

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

Ну, насправді, у джаві будь-що — це неуявний ефорт. Донедавна навіть створити мапу — це був багаторядковий квест. А ще ООП… чи впливає парадігма мови на все життя проекту? Авжеж впливає. З того, як пишеться і структурується система, випливають ті чи інші складності і зовсім різні компроміси приходиться приймати під час реалізації проектів.

Так, у кінці не в технологіях річ. Так, бізнес може не розуміти трейд-оффів того чи іншого підходу, тим більше, що все це неможливо помацати власними руками. Але це має такий самий вплив на бізнес, як і будь-які інші великі архітектурні рішення. Такі самі рішення є у логістиці, у маркетингу, будь-де, коли людина, не будучи зануреною в тему, не може нормально вирішити. А й потім, є проста аналогія — чи будеш ти поля обробляти тисячма людей з сапками? Авжеж, коли в тебе невеличка ділянка, трактор можна не брати, але ми дуже вже давно відійшли від таких ділянок, і на асмі цілі ігри ніхто не пише.

Це не через те, що люди втратили змогу. Ні, завжди є ті, кого пре копатися у найменших деталях і асемблер був би їм до смаку. Але складність проектів зростає експоненційно з кожним роком. І технології — це спосіб вирішення тої складності. А ліпші технології — це найкращій спосіб вирішення.

Повертаючись до Колі — мені здається, що тут історія у наступному. Він багато займався пошуками покращення продуктивності через підходи та процеси. А я, у свою чергу, теж хотів все швидше та якісніше робити - але набагато більше приділяв увагі інструментам. Ось і результат. :-)

Тож viva la Clojure та єдиному пророку її: Річу Хікі! 🤣

(@ tg)

Коли я був маленьким, я не міг зрозуміти, чому англійське право, себто прецедентне, так цінять різні корпорації тощо. Скажімо, якись суд у Крижополі може винести вирок у випадку, який дещо схожий на твій — і це прецедент для вирішення твого випадку, хоч він і не в Крижополі, і не про гусей, і взагалі ти скраєчку стояв…

А потім я виріс — і все одно нічого не зрозумів. Англійське право — це якийсь древній трухлявий підхід чи то вікінгів, чи то германців-дикунів… Не те що модерновий римський підхід, що його скрізь у Європі запровадив Наполеон!

Коли в інтернеті шукаєш, чому ж його цінять, лізуть сайти юридичних контор, повні лозунгів типу Global Reach - типу його повно по світу, бо ж Британія, чи там що лондонські суди найсправедливіші суди у світі, чи ще щось таке… лозунгоподібне.

Аж тут читав трішки історії — перший процес з теми сегрегації у США, в якому вирок прийняли на користь відміни власне сегрегації, відбувся у кінці 19 сторіччя, а остаточний процес та вирок — аж у 50-х. Тому що неможливо взяти і прийняти вирок, який прямо протилежний усім попереднім прецедентам — і знадобилися десятиріччя праці адвокатів та суддів, щоб розвернути ситуацію.

А римське право декларує верховенство закону перед рішеннями суда. Завтра парламент зібрався, прийняв закон, що сегрегація — це погано, і все: суди почали приймати рішення в іншу сторону. Наче розумно, так?

Але ж гроші люблять що? Тишу вони люблять, та спокій! І англійське право цінять за його стабільність. Ось що головне! Ситуація навіть якщо і буде змінюватися, вона буде це робити довго, і ти встигнеш приготуватися.

(@ tg)

Коли дивлюся демки no-code/low-code інструментів, мене не покидає відчуття незручності цього підходу. Тільки що дивився internal.io (те відео, що в них на головній) — там пані наклацує мишкою інтерфейс адмінки. Воно з однієї сторони прикольно, з іншої їм прийдеться поверх того всього вигадувати систему версіонування, інтерфейс до неї, а всім звикати і колотися, як отим їжакам. Ну

Зрозуміло, що то є як спосіб заманити людей, які не вміють програмувати, але складність все одно досить висока: зрозуміти, як працюють підстановки, як урли генерувати… Коли дивлюся на те все, здається, що треба було все те саме робити, але в текстовому вигляді — було б простіше копі-пастити, відправляти в месенджерах, слідкувати за версіями…

Плюс адмінки все одно роблять програмісти. Ось 1С багато зробив, щоб це все легко можна було зконструювати, у нескладних випадках просто мишкою. І що, багато бухгалтерів тепер не просять когось зробити їм звіт, а роблять самі? Індустрія вокруг запитів бухгалтерії склалася ціла.

Підсумовуючи: мені все ж здається, що захід з іншого боку, типу low-code, але у коді, був би ефективніший. А возіння мишкою то прикольно, але ще й лейаут на ходу видумувати — додатковий гемор. Хтось може вже використовував таке? Internal.io, retool, може ще щось такого типу?

(@ tg)

Якщо у перший раз я на відео потратив, думаю, годин 15-20: кілька разів записував все наново, розбирався з прем’єром та взагалі з підходами до монтажу, і взагалі мучився, то головний доробок на цей раз забрав 2.5 години на те, щоб все записати і нарізати. Частково це тому, що я все робив у епловому Final Cut Pro, а не в адобівському Premiere Pro. І воно якось так зайшло, вся ця ідея с “магнітною” стрічкою і взагалі інтерфейс… Думаю, що третю спробу треба пройти у Davinci Resolve і в кінці вирішити, з чим жити. А потім ще стільки же на всілякі дрібнички, як без цього… :)

Ну як дрібнички. Одна проблема мене просто вбила. Значить, як я записую відео: запускаю два процеси квіктайму, один пише з камери, інший пише екран. На диво це дає дуже невелику нагрузку на процесор — порівняно, скажімо, з OBS, який паралельно з квіктаймом ще й кадри іноді пропускав взагалі. Тож два квіктайми. І я чогось собі видумав, що в обох треба звук з мікрофону писати — хоча минулого разу відео з камери було зі звуком з тієї самої камери.

А це означає що? Точно, рассінхронізацію відео та звуку! 6 кадрів, щоб ви розуміли. Порахував я ці кадри, рухаю на 6 кадрів звук, а різниці немає. У інтернеті замість інформації хлам всякий, який я наче і сам знаю, але нічого не виходить. Перемотуємо на 5 днів вперед, ще один підхід, і поки я розповідаю брату про свої негаразди, до мене доходить, що я не звернув уваги на формат часу, і там не кадри, а долі секунди! Себто у головному індикаторі 00:02:47:16, де 16 — це кадри, а тут 00:00.87, вочевидь це не 97 кадрів! Ок, 1000/30*6 = 200, рухаємо на 00:00.20, ніфіга.

Записую клацання пальцями, значить, поставив головку де на відео вони змикаються, тягну звук… 00:06.00! Капець, то соті кадра! Як я мав здогадатися взагалі?! Ну хоч би якусь індикацію, не знаю, ото вже боги інтерфейсу. :/ Не те щоб в прем’єрі все було зрозуміло, але ну це було якось дуже боляче. :)

Тож звук я передвинув, все привів у порядок, фух. Дивіться нове відео, про екшени у Твінспарку . А щоб не відчувалося, наче я одну й ту саму пластинку возюкаю, думаю що наступного тижня зроблю стрім. В мене вже є ідея, трішки її пророблю і зроблю анонс. :)

(@ tg)

Ну нареееееешті я зробив відео з демкою того, як працює TwinSpark. У тому стрімі, що ще 1 квітня був, виявилося, що на прикладі Касти щось показати дуже важко — занадто багато всього там відбувається. Тож я у 20-х числах квітня написав малесенький проект, і 28 числа сів все записати. Думав дня два-три подовбаюся і щось запишу.

Авжеж, ггг. Мало того, що всі ці приближення та посування відео — нереальний гемор, дуже багато праці руками, так ще й прем’єр виявився глючним. Він 4к відео з мого десктопу при ресайзі на різких змінах перетворював на покоцані фільми з 90-х, коли обличчя ГГ кудись у квадратиках упливає. Експортиш кудись — воно втрачає всі ці приближення мої… Кароч задовбався! Зробив потом з джерела MJPEG і ото так воно якось проїхало. Хоч не торкайся тої скотини прем’єра.

А потім ще після травневих всіх вихідних передивився і зрозумів, що я у 1 відео запхав 3 різних великих речі. Тож сів, повирізав, перемонтував, приробив навіть лого (дуже задоволений результатом :)), попрохав у Юри музику, понапхав жужу у різні місця… Реально набагато складніше, ніж стрім зробити.

Але вже не можу далі, хоч воно і не ідеальне. Можна вже йти дивитися! :)

(@ tg)

Оптимізації у сайтів можуть мати дві мети: зробити щось швидше для користувачів, чи задовольнити гугл. Вочевидь, гугл намагається міряти, щоб людям було добре, але це складно. Кілька років тому, за вийнятком самих базових речей, шлях до тих цілей майже не співпадав, тому що гугл виміряв непрямі параметри. Замість швидкості завантаження, він виміряв, чи довгий кеш на ресурсах сторінки, чи не можна ще на 2 кілобайти зменшити файл, та й таке інше.

А потім ті дані, які збирає Хром з усіх користувачів і про які так давно точиться дискусія у privacy-minded колах інтернету, вони нарешті застосували на користь широкому загалу. Себто для нас з вами. І тепер метріки Гугла для сайтів — це те, що зарепортили браузери користувачів. У Google PageSpeed Insights можна подивитися на результати кожної сторінки, а у treo.sh добрі люди навіть зробили інтерфейс, де можна подивитися результати загалом по домену. Що, до речі, дуже цікаво!

І тож, не дивлячісь на неідеальний Lighthouse, можна оріентуватися на реальних користувачів та їхні проблеми. Лайтхауз — це опенсорсна тулза, яку в Гуглі написали як бекенд для PageSpeed’у на заміну того YSlow-подібного жаху, що був раніше — все ж таки синтетичний тест і навіть на кількох послідовних запусках дає різні результати. А тисячі користувачів дають реальну картинку.

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

(@ tg)

У далекому 2009 в мене був цілий місяць (грудень) між роботами, і я його тоді провів дуже продуктивно — наприклад, написав клієнтську бібліотеку до Редіса (на пайтоні), основну фічу якої автор redis-py потім перетягнув до себе, бо там була нереальна економія на кількості коду. А ще круто роздуплився з метапрограмуванням у пайтоні, що дуже допомогло написати ядро системи на наступній роботі, а потім нереально допомогло вичистити код від метапрограмування на пайтоні на той що була наступна за наступною. 😁

А ще написав малесенький пастбін — paste.in.ua, тому що мій звичайний через раз бував у даунтаймі, а юзав я його багато. І вже давно всі результати того місяця залишили після себе тільки досвід, а PIU досі живий, і я минулого року його навіть на Кложу та ГраальВМ переписав.

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

Зед Шо мені нашепотів заюзати для енкодінгу tnetstrings , формат, прикольний своєю простотою. 😂 Але коли я переписував все на кложу, я знайшов лібу, яку написав американець (це важливо). І через не дуже приємний код я ту лібу переписав трішечки симпатичніше, але! не дуже замислюючись.

Чому американець і моя тупня важливі? Тому що стандарт каже: довжина у байтах. А джава оперує строками, а не байтами, і в мене вийшла ліба, яка зберігає (і читає!) довжину у символах UTF-8. 😵 Вчора вночі прилетіла нотіфікашка “здох твій піу”, і виявилося, що хтось там питав один і той самий урл з помилкою доволі часто, і Грааль закрешився, бо не вистачило пам’яті.

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

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

(@ tg)

А ще, зовсім випадково, через історію з телевізором я дізнався, що RJ-45 — це помилкова назва, і це інший, дуже схожий роз’єм, з телефонних мереж, а комп’ютерний правильно називається 8P8C. Weird, ain’t it?

Ось, подивіться .

(@ tg)

Розповім, мабуть, про те, як мій тєлік Самсунг відмовлявся ютуб показувати. Місяці зо два чи три тому почалося, типу вмикаєш його — а в аппці ютубу відео навіть не починає програватися. Для контексту — йому десь під 4 роки, тож досить новий, але у тогорічну програму боротьби з сірими тєліками він не попав. Сірий, так, модель щось на кшталт UE55MU7002 (насправді рівно так, я вже запам’ятав це зовсім).

Якщо висмикнути з розетки, почекати трішки, а потім увімкнути - все працює. Іноді кілька днів працює, а іноді тіки цю сессію, треба знов ребутати. А якщо під час того, як він не працює, зайти подивитися на стан мережі, то він каже “не бачу інтернету”. Локалку бачить — він в мене навіть на дроті сидить, а інтернет — ні. Ну, думаю, падло ти таке, Гнусмас, напав на мене! 👹

Потрохи іноді почитую форуми, але результати блокування виглядають трошки по-іншому, ніж те що в мене. А мої симптоми знаходять купу людей, які не можуть одуплити, як налаштувати вайфай, та якісь пости з 2015 року, коли в Самсунга щось знатно завалилося.

Тож так ми і жили з ребутами, та щось вони все рідше допомагали, аж доки тижні два тому наш тєлік не перетворився у гарбуз, який може тіки дісплеєм для компа служити. Що не дуже зручно для ютубу, насправді… 📺

І ось на минулих вихідних я прокинувся сповненим рішучості цього демона перемогти. Колупав все що міг, знайшов навіть що є прошивка минулорічна, яка автоматом не оновила, відшукав флешку (теж щє квест) і оновив, і ніфіга. Аж раптом дружина зайшла у налаштування мережі з іншого екрану, а воно і каже - з DNS could not resolve. Ооо, думаю, бач як заговорив, в інших екранах (нашо їх так багато?) ти тіки таємничу помилку 92 мені звітував! 🤖

DISCLAIMER: далі три абзаци технічного кошмару, просто перестрибни їх :)

А ще два дні тому помітив що я його пінганути не могу по тому айпі шо в роутері я бачу. Тож, думаю, піду подивлюся, що в мене там в роутері взагалі в налаштуваннях є… Відкрив, поклацав все у Advanced, ну якось наче ніяких фаєрволлів, нічого… Думаю, добре, ну в мене новий ноут, то хоч прив’яжу його до стабільного айпішнику, чом би й ні. Прив’язав… і тут мене наче молнією ⚡️ вдарило! Дивлюся, а там прив’язаний тєлік, до айпішнику 10.0.0.105, який він зараз має, але ж це я робив ще коли він на вайфаї сидів, а зараз-то він на проводі тож мак-адрес там зовсім інший!

Видалив ту прив’язку і все запрацювало наче на дворі ще січень! 😁

І тепер в мене купа питань: якого біса роутер давав зайнятий айпішник йому? Чому, скажімо, не моєму телефону? Чому я його прибив до 105, якщо DHCP починає роздавати з 100, чому не просто до 5? Чому, хоча я й прибив ноуту айпішник 10.0.0.2, він все одно брав собі 102 і все? І головне, чому тєлік той почав глючити у лютому, а не коли я в нього позаминулого року виту пару встромив? 🤡

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

(@ tg)

Як в нас на сайті був React всюди, то в якийсь момент ми навіть перестали читати Sentry. Ну типу звідти йшли нотіфікації, і раз на якийсь час там бували реальні помилки, які можна виправити, але після чистки від дурні на самому початку там було звалище незрозумілих помилок від старих браузерів, з відсутніми стектрейсами. Їх взагалі не дуже реально відшукати у тому бандлі, що являє собою реакт-апп, а ще вони трішечки різні і кожен на невеличку кількість народу спрацьовує - той на хром 39, той на оперу 36, той на ще якусь хрінь.

А помилок від IE11 та схожих браузерів там взагалі нема. Ми колись, році ще у 16-17, виявили, що MS Edge не хоче завантажувати наш сайт. Згодом знайшли в офісі комп на 32 Гб ОЗУ та десктопним процом, і змогли завантажити, і воно навіть якось рухалося, але ж це не життя. :) То я зарепортив як баг у Edge, і через три місяці вони сказали, що таки так, це баг у Еджі, а ще через рік вийшов реліз з фіксом, а ще через рік (чи щось таке) вони замінили в Еджі нутрощі на Хроміум. Тотальна перемога. 🤣

Але тепер в нас в Сентрі є окремий проект на баги джаваскрипта, які летять з Твінспаркової версії. Там є трішечки цікавого, що складно розібрати, а ще є трішки багів з IndexedDB, які незрозуміло як вилікувати… Але більшість багів нескладні, зрозумілі, і зазвичай “якесь старе падло щось не вміє”.

І їх можна вилікувати! Типу вчора помітив, що на старих браузерах не працює наша аналітика, бо ми там заюзали Object.assign. 3 хвилини, і ще 600 користувачів тепер нормально трекаються. А зара сиджу, дивлюся і не можу вирішити, чи робити щось з тим, що IE11 не вміє Promise, чи забити на них усіх, їх всього 800 користувачів за три місяці…

(@ tg)

Розміри

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

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

Тож ідея така: ми назначаємо якісь (українські, насправді) сітки “стандартними” на категорії товарів. Таки сіток вийшло з півтора десятка — для одягу, взуття, білизни тощо. І потім постачальникам кажемо підбирати до свого товару той розмір, який збігається по вимірах з його товарами.

І тепер ми маємо два варіанти — традиційний, коли на товарі висить якась його розмірна сітка (скажімо, міжнародна S/M/L), чи українська, а ми кажемо “на товарі буде написано S” (не завжди так, може бути і 12, і 43, і ще якась хрінь, воно різноманітне).

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

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

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

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

А потім хз що, може просто будемо виводити у розмірах рівно те, що на товарі написано, чисто як індікатор при отриманні замовлення.

(@ tg)

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

Я навіть сумнівався, чи він працює, бо до цього дня від нього чув може два чи три удари… а зара прямо істерика.

Лежу без сну вже третю годину і думаю, чи записатися у екстремісти, чи у ескапісти?..

(@ tg)

За минулий тиждень написав аппку-приклад для твінспарку і навіть сюжет для відео — вирішив зробити начисту замість стріму. Не певен, що це було найкращім рішенням, бо шось гемору так багато, шо капець. ಠ_ಠ

Вчора зробив з десяток дублів. Повноцінних усього парочку, але все одно, задовбався в доску. Спочатку сам тупив критично, потім обс, яким я записував камеру, вимахувався, типу хвилинку записує, а потім кадр в пару секунд максимум. Все сіпається і ковбаситься. Думав може процесор тротлить, але навантаження не завелике, температура не росте, хз що воно таке.

Сьогодні подивився на то все і зрозумів, що я можу квіктаймом все записати! В ньому окремо можна запустити запис екрану, і окремо захват з камери, і він записує обидва відео без проблем взагалі і без навантаження на процесор. Супер!

Тож в доволі короткий час я записав все що треба. Ура, 80% праці зроблено! Лишилося тільки змонтувати і почистити звук, тобто ще 80% роботи.

Думаю чи не звернутися мені до професіоналів… бо я ж ще не вмію файнал кати всі та інше. :/ Але непокоїть що там треба фокус то на код наводити, то ще кудись, чи воно реально з кимось зконтактувати, щоб і нормально вийшло, і всі штани не зняли… Але загалом я прям дуже радий, що нарешті зробив та записав це. :)

(@ tg)

В мене у Києві є улюблений ресторан. Насправді, назвати це місце рестораном важко… але вони готують їжу, і в них можна сісти у залі поїсти (хоча останній рік тільки на виніс), і це не фаст-фуд, тож мабуть таки ресторан?

Це Пекін на вулиці Васильківській, навпротив корпусів універститету Шевченка. Так, у Києві є ще інші ресторани з такою назвою, і є багато інших китайських ресторанів та доставок, але всі вони — не те.

Бао, наприклад, це надто висока кухня. Дорого, смачно, і не зовсім китайське. А ще я оселився неподалік від Хан Юуан у НАУ — гадав, що буду часто в них їжу брати. Але я там не був вже роки зо три, тому що це не смачно. Дак пліз кльовий і смачний, але трішечки воно європеїзоване. Може якістю підхода, не знаю, але Пекін це найближче до тих китайських генделів Малайзії та Сінгапуру, де я їв. Сєва, який три місяці провів у Китаї, підтверджує автентичність.

Але до одного місця та автентичність насправді! Смак — от за чим ми женемося. Воно смачнюще. Є блюда, з яких я не тащусь, але є…

Раніше там всередені взагалі був сюр і гнучкі алюмінієві виделки. Гнучки не у сенсі «гнучка компанія», а у сенсі «вирівняй перед тим, як їсти», як ото у совкових столовках. Але вони оновили інтер‘єр, поміняли посуд і тепер просто так собі. :)

Це не висока кухня, це смачна кухня. Обожнюю і свиню по-пекінськи, і курку по-сичуанськи, і яловичину з китайськими приправами, і смажені пельмені з бараниною, і купу купу всього іншого. Взагалі, якщо в темі і я не згадав ваше улюблене, пишіть в коментарях для тих, хто там не був, бо Пекін сяє наче Бетельгейзе у світі китайських ресторанів Києва. :)

(@ tg)

Кеш — це спосіб уникнути штрафів повторення виконання один і тих самих операцій. Найпростіше, що можна собі уявити — це функція memoize, яка допоможе порахувати числа Фібоначчі швидко без того, щоб думати над алгоритмом. :)

У веб-сервісах є багато шарів, де можна закешувати результат. Перше, що приходить до голови — це кешування запитів до БД. Зазвичай че запит у інший процесс (власне, процес БД), або навіть через мережу у іншого сервера. Тож ми берему якусь кльову бібліотеку (або пишемо самі), якій кажемо: кешуй виклик оцієї функції в залежності від цих аргументів. І параметри до нашого запиту починають параметризувати і кеш. Це буває дуже ефективне місце, навіть якщо кешуємо результати ми у memcached, до якого теж ходимо по мережі. Особливо це ефективно, коли запит складний, а варіативність параметрів низька. У найбільш яскравих випадках взагалі є сенс підраховувати результати заздалегідь і класти їх в базу, отримуючи, так би мовити, нескінченне кешування.

Наступний шар — це рендерінг шаблонів. Йдуть роки, а генерація строк залишається однією з найбільш ємних частин веба. Навіть якщо цей шаблон — це JSON, і (на відміну від більшості ліб шаблонів) генерація написана на C, це займає доволі багато ресурсів. Тож ми можемо закешувати його. Тут треба дуже уважно слідкувати за варіативністю параметрів: якщо у результати попадає ім’я користувача, ми ризикуємо генерувати кеш для кожного користувача окремо і тоді ефективність такого кешування впаде до плінтуса. При цьому при розробці (та тестуванні) все буде виглядати нормально, тому що користувач-то один буде. Це те саме місце, де можна відчути, що кеш — одна з наскладніших проблем у програмуванні.

І з важливого є ще один шар, власне HTTP. У протокол HTTP вбудований механізм кешування, який імплементовано і в браузерах, і в різних балансувальниках нагрузки, як от в nginx чи у Cloudflare. Він нам дуже цікавий, тому що дозволяє навіть з доволі повільним бекендом (на Django чи то на Rails) мати сайт, який відносно нормально витримує навантаження. У будь-якій HTTP відповіді можна додати хедер Cache-Control: max-age=3600 (припустимо), і браузер, який отримав цю відповідь, ще годину не буде повторювати цей запит. Ще цікавіше: якщо перед нашим сервером сидить якийсь проксі, то він теж закешує ту відповідь і жоден запит з будь-яких браузерів з тим самим урлом вже не прилетить до бекенду.

Ми цим кешуванням дуже широко користуємося у Касті. Як API, так і усі публічні сторінки рендеряться так, наче їх дивиться анонім, а потім фронтенд біжить і довантажує кастомні елементи (насправді, у більшості випадків — хедер, де є ім’я користувача).

Правильно побудоване кешування — дуже ефективна штука, тому що найшвидший код — це той, який не потрібно виконувати.

(@ tg)

Ми у коментах до попереднього посту трішки обговорили, чому M1 від Епла такий швидкий, що вони його всюди пхають. Вся історія в тому, що процесори зараз являють собою зовсім не те, що вони намагаються з себе зобразити, тому що їх архітектура вже дуже давно пішла уперед, а увесь софт у нас все ще пишеться, наче ми маємо чесний x86. Це значить, що x86 — це лише фасад, тобто декодер, який з інструкцій x86 робить інструкції для справжнього процесора.

А справжній процесор — це дуже швидке звірятко 10 розряду, ще й супер-скалярне: тобто воно може виконувати кілька операцій за один такт. Тобто декодер годує то звірятко інструкціями у внутрішньому форматі, і воно їх жере по кілька за раз.

Але ж виконати x = 1 + 2; y = x + 1 за один такт неможливо, бо y залежить від x. Через це процесори всередині змінюють порядок інструкцій, щоб мати змогу використовувати свої непересічні здібності. Тож ефективність процесору дуже залежить від ефективності декодеру, щоб він встигав декодувати достатньо інструкції, щоб було що пересортувати.

Це спільна риса і x86, і ARM процесорів, тому що кожна архітектура процесорів має свої властивості і заставляти світ перекомпілювати увесь софт під новий процесор при кожному релізі нереально. Отож і маємо товстезний шар сумісності.

Ось і наблизились ми до суті історіі. x86 мають довільну довжину інструкції, наразі від 1 до 15 байт. І це значить, що розпаралелити декодування дуже важко. Статті, які я читав, рапортують, що максимальна кількість декодерів у процах Інтела та АМД - 4 на кожне ядро проца.

На відміну від них, у ARM інструкції завжди по 4 байта, тобто бери нарізай бінарник як хочеш і пхай у декодери. І в M1 зараз 8 декодерів. І внутрішнє звірятко через те дуже-предуже ефективне.

Не тільки у цьому річ, авжеж, ще є дуже цікава архітектура пам’яті, плюс всі частини проца зроблені дуже ефективно — люди в обговореннях приводили у приклад якийсь тормозний самсунг на 6 декодерів. Але найголовніша причина — ось вона.

(@ tg)

Доволі цікаво, як Епл використала один і той самий процесор у зовсім різних сегментах. І мак міні за 700$, і айпад про за 800$, і ноути трішки дорожче тисячі, і аймаки за 1700$ - всюди один і той самий проц (тільки іноді без одного перформанс-ядра у відяхи). Це типу з однієї сторони він енергоефективний (тож підходить айпадам), з іншої - достатньо швидкий, щоб продавати девайси за півтори тисячі і не боятися порівнянь з x86.

Прикольно, насправді. Я не передивлявся ретельно тестів та й не занурювався у подробиці, але на власних відчуттях так воно і є: ейр м1 з однієї сторони живе майже як айпад про наш (якому 4 роки напевно зараз), з іншої — він помітно швидший за мій попередній macbook pro. Much snappier UI, щоб розмовляти усталими термінами. ;) Я б навіть сказав, що відчуття від швидкості реакцій інтерфейсу не гірші, ніж у вінди на райзені — а вона завжди кращє макосі була з точки зору затримок в юаї.

Тож виглядає що епл нормально так попала. Зрозуміло, що то не овернайт саксес і вони його будували 12 років — у 2008 якось вмовили Джима Келлера приєднатися до Епла і купили згодом P.A. Semi, де він працював до того. Того самого Келлера, що автор Атлону64 і Райзенів!

Тож дуже цікаво, що там епл випустить далі! З ядрами наче зрозуміло, клепайте більші (і дорожчі) проци і буде більше ядер. А от з пам’яттю… мак про зара може мати до 1.5 терабайту озу, а з тою архітектурою пам‘яті, що є зараз, це буде нереально дорого. Перейдуть на DDR, як в усіх? Не знаю, але здається, що далі буде ще прикольніше. :)

(@ tg)

Кілька днів провели сім‘єю в Одесі і дуже мене неприємно вразила кількість реклами і оголошень російською мовою, наче у 90-ті повернувся. Тобто Київ не те що б україномовним мені відчувався, але майже вся реклама українською, на моє відчуття, 70% кур‘єрів та менеджерів та взагалі сфери обслуговування починають розмову українською, а більшість інших переходить на українську після перших моїх слів. І взагалі, я якось зібрав булки у кулак і з незнайомими людьми вже майже завжди українською спілкуюся. :)

Авжеж, найважче змінювати мову спілкування там, де вона вже давно узвичаєна. По-перше, воно відчувається дуже дивно, по-друге, люди інертні, і їм просто ліньки, а я не відчуваю якогось там морального права їх примушувати перемикатися. Сам ось зайнявся питанням на сьомому році війни з країною, яка ще у дитинстві мене дратувала своєю поведінкою в історичних книжках.

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

(@ tg)

Така цікава тема в мене є… який геній займається проектуванням кімнат в готелях, цікаво? Ось маємо двокімнатний номер, в ньому, вочевидь, є міні-бар, який зроблений з маленького холодильничку, що вбудований у «робочий» стіл — бо безпонтово його окремо тримати, це ж напівлюкс (або люкс, я заплутався вже).

Але ж холодильник, запакований в дсп і припертий до стіни, згорить! Давайте збоку зробимо дірки і присобачимо вельми естетичний кулер того типу, що я за копійки на кардачах купляв в комп вкрутити під час життя в общазі кпі.

І ця вся бодяга шумить. Холодильник бо таке в нього життя. Кулер бо невеличкий та гівняний. Хочте спати? Будь ласочка, відсовуємо стіл і як оті варвари з розеток все видираємо. Бо воно так хитро зроблено, на столі є спеціальний шмат дсп, який то все прикриває, щоб рученьки відвідувачів не дібралися. :) Я його потім на місце хрін встромлю, так все хитро зроблено.

Так ось питання таке: нашо в номері за такі гроші така прикольна економія на кулері? І якого перцю той мінібар у спальні, якщо вже є дві кімнати?!

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

Понабирають студентів по 5$/година, а потім результати проектування як люкси здають, ггг :)

(@ tg)

Ось обговорювали с Вовою, чому ж Дія Сіті — це погано. Мої думки про це ось такі:

  1. Інженерно вони дуже слабкі. Дія, як аппка, дуже погано працює: то є там мої права, то немає, тупо час від часу як повезе. Розлогінює часто.
  2. Продуктовий віжн в них поганий. Він може і сильний, але поганий, тому що роблять вони централізованний реєстр документів, який дуже вразливий до корупції та кібер-атак. Нам, як країні, треба навпаки. От ID-картки в цілому у вірному напрямку рухалися, а єдиний реєстр — це дуже-дуже погано. Якщо хочете дізнатися наочно чому — подивіться на ютубі розслідування Навального про те, хто його травив.
  3. Менеджмент в них дуже поганий. На надзвичайно тупу і надзвичайно небезпечну дірку вони відреагували максимально тупо: мовчанням. Це просто неприпустимо для будь-якої публічної компанії, я вже не кажу про державі установи.
  4. Все, що робиться за кошти громадян для країни, повинно робитись з відкритим кодом з відкритою ліцензією. Тому що, по-перше, це наш софт, ми за нього заплатили, і не треба його від нас ховати. По-друге, це справа національної безпеки: мати не security through obscurity, а публічний контроль цієї самої безпечності ПО.

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

(@ tg)

Слухайте, провтикав взагалі написати, я пішов сьогодні в гості на стрім до Вови Рожкова @full_of_hatred. Тож якщо вам сьогодні ввечері немає чого робити, через 7 хвилинок ось тут: https://www.youtube.com/watch?v=2gwt1T9DjGk

(@ tg)

Написав статтю місяць тому і забув опублікувати, це капець. :) Кароч історія в тому, що показування HTML’ю користувачу після того, як він нажав кнопку “назад” - це не дуже тривіальна операція. З реактом історія була у тому, щоб заново відрендерити йому те, на що урл вказує, а без реакту… без реакту можна або зберігати верстку десь, або заново ходити на сервер. Друге робить HTMx, а перше робить TwinSpark: https://solovyov.net/blog/2021/history-snapshotting-in-twinspark-js/

(@ tg)

Рік тому написав я пост про те, як перемикаю різні розкладки клавіатури. Років 15 тому я користувався капслоком, який клацав між англ та рос розкладками. Українська у такому випадку, вочевидь, страждала. А кілька років тому я відкрив для себе Karabiner, і зараз по натисканню лівого команда вмикається англійська, правого - російська, а правого альту - українська.

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

Вочевидь, можна було і не писати цього, кому треба — міг би піти пост почитати. :) Але ж більшість з вас або не читала, або не занепокоїлася достатньо, а це ж кожень день приходиться сотні разів дивитися на те, яка зара мова увімкнена, щоб знати, куди перемкнути. Ну просто ідеальне місце щоб задешево трішечки покращити життя. :)

(@ tg)

Macbook Air M1

Я вже четвертий місяць підряд терпів і не купляв новий макбук з процом м1 з двох причин: по-перше, я купив прошку 13 з нормальною клавою влітку, тож трішечки жаба давить, а по-друге, ходять чутки «у третьому кварталі буде про 14 з м2». Але кілька днів тому я відчув, що терпець мій вже вривається і я не можу так далі жити.

А практика каже, що якщо дуже хочеться, то треба купляти, навіть якщо логіка проти. :) Тож я плюнув і купив ейр на 8 озу і 512 ссд. 8 через те, що 16 настільки дорожче, що зелена тварюка аж хрипить, ну і хай там що, а я цілюся на прошку. Тож потерплю, плюс ніякі ідеї, докери та інше ненаситне я не юзаю. А 512 (а не 256) — щоб був повноцінний проц/відео, а не огризки з одним відключенним ядром. :)

Тож майже на 20 тисяч дешевше, ніж влітку, я отримав собі ноут з кращим перформансом і без гудіння взагалі. Немає кулера. Не гудить і холодний. Звикаєш дуже швидко, відкрив прошку щось зробити, а вона почала гудіти і я сиджу і думаю: ну і нашо я ото стіки терпів…

Але насправді був сенс трішки почекати, бо я оновлював все, щоб воно без розетти працювало, а всі схожі релізи це більшою частиною січень-лютий. А зара вже непогано з софтом, тільки прийшлось jsass руками перекомпіляти і зібрати/опублікувати, щоб це був універсальний бінарь — бо перейти на командлайнову тулзу важко, ми його розширюємо додатковими функціями.

Тепер в мене CLJS білд збирається не 9.5, а 6.3 секунди. Але це покращення в 30% не дає реального розуміння, наскільки швидше працює інтерфейс. Я такий довольний, шо капець, ггг. Тепер під час стрімів не буде мені волати у вухо і підпалювати пальці. :)

(@ tg)

Перекладення інтерфейсу програм історично робилося за допомогою функцій, якій ти даєш на вхід ключ (скажімо, 3232 чи index-page.welcome-banner), а вони під час роботи програми йдуть у словничок (напевно, в якийсь файл, що лежить рядом), і беруть справжню строку (типу Привіт, %s) — у яку потім щє підставляють змінні.

Але наприкінці 80-х придумали таку штуку, як gettext, яка, насправді, працює так само, але у якості ключа для пошуку строки використовують вже готову строку, тільки на мові по замовчуванню — скажімо, на англійській. Тобто в нас немає спеціального словнику з англійскими строками, вони написані прямо в коді. Це має три доволі великі переваги:

Висновок: переїжджайте на геттекст, якщо ви ще ні, досить з підходами 80-х жити. :)

(@ tg)

Хочу розповісти пригоду сьогоднішню. :) Ви мабуть бачили по всьому місту веліки BikeNow — їх реально розставили всюди, і мені було дуже цікаво спробувати, які вони. А сьогодні поїхали зі Степаном покататися у парк Пушкіна, і там декілька стояло на вході, тож ось і видалась нагода. Велосипед, як суто міський, дуже непоганий. Єдиний мінус — це його вага, але ж він зроблен з товстезної сталі, щоби витримати всі негаразди свого важкого життя. :)

Але це не пригода. Пригода те, що в кінці я його припаркував, закинув Степанів у багажник і ми поїхали додому. А через чотири години я згадав, що я його просто поставив на підножку, навіть замок не зачинив. Ну, думаю, капець… Почитав хелп: якщо не здаси впродовж 12 годин, то штраф 10к, а якщо впродовж 24, то це вважається крадіжкою і коштує 15к. Не знаю, чи додатково, мені що так, що так не подобається.

Подзвонив у сапорт і він каже, що якби я на замок закрив, то він міг би й завершити мою оренду, а так треба спасати. А велосипед вже не біля парку, а на Смоленській, навпроти будівлі Інкому. Ну мені тут кілька кварталів, тож я стрибнув у машину і поїхав його закривати. :) Якийсь поц його знайшов (як? ходить і мацає всі велосипеди?), покатався, і навіть на підніжку не поставив, так, опер на якийсь паркан. Я його відвіз у зону парковки (до проспекту Перемоги), та й залишив.

Мені за таку свідому поведінку ще й скинули увесь той “накатаний” час до години, тобто 35 грн замість 160 — теж не смертельна сума, але приємно. Взагалі і сам сервіс сподобався, і сапорт добре працює, але ж якихось нагадувань не вистачає, бо це ж яким уважним треба бути, щоб не провтикувати. :)

(@ tg)

Те, що у програмуванні все на соплях тримається — звично всім, хоча й дратує трішки. Люди, буває, собі програми на Хаскелі пишуть, щоб гарантувати, що воно працює, типизація там, все інше — а потім воно виходить у реальний світ, йому приходять реальні дані, і всі гарантії розвалюються, тому що хтось той JSON збирає в 1С і забуває екранувати лапки у строках.

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

Але увесь цей стрімінговий сетап, особливо якщо використовувати опенсорсні/безкоштовні рішення, типу OBS та obs.ninja, Streamlabs, і таке інше, воно взагалі дуже складне, незрозуміле і ламається так хитро, що в мене опускаються руки. Ну тобто вчора в Роми, якого я підключив через ніндзю, дублювався звук мікрофона із затримкою (тобто відлуння). Чому - хоч вбийте, я не знаю. Взагалі те, як я ловив його звук - це смішно, і я навіть не хочу писати сюди подробиці, тому що йшов він зовсім не разом з відео (ррррррр). Хочеться якогось рішення простіше. :))

Але потім теж все погано. Ютуб зара дозволяє робити розділи у відео. Але вони це зробили дуже хитро, я б навіть сказав що хакерським способом — не якоюсь структурованою формою, а парсінгом тексту. Ти пишеш таймінги у своєму відео, і вони додають розділи в інтерфейсі. Супер! Тільки я додав, а нічого не додалося. В інтернеті купа ниття про те, що воно не працює, і ось я теж роблю свій внесок. :) Ніякої валідації ніде нема, тож… хз що.

Хух, наче пару випустив, можна піти підкинути кілька разів малу, чи ще щось продуктивне зробити. 😁

(@ tg)

Знаєте шо? Не дивлячись на таке западло зі сторони погоди, я все одно зроблю стрім, бо точність — це ввічливість, стабільність — це культурність, фідошніки сабжів не міняють… це мене кудись понесло. Просто вибір вечора чогось складний для мене, не дивлячись на карантін, тож плюйте у те вікно і приходьте о сьомій послухати і потім прийняти участь у срачі^Wдискусії.

Ось тут: https://www.youtube.com/watch?v=uNF7QmFiQaw

(@ tg)

Вирішив якось що мені для мікрофона вкрай потрібен жовтий кабель — це я ще Worker Bee користвувався, тож дуже підходило за кольором. А все шо є в магазах та всяких промах виключно сумних кольорів.

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

І ось приходить нотіфікашка, що кабель їде, а паралельно в месенджер олх з 15 фоток подібного змісту, і з вимірами ємності, etc…

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

Осьо він, якщо вдруг знадобиться (не реклама, я просто вражений максимально): https://instagram.com/goodcable

(@ tg)

(@ tg)

(@ tg)

(@ tg)

(@ tg)

(@ tg)

(@ tg)

Вчора з Ромою Лютіковим та Єгором Львівським у рамках конфи React Fwdays обговорювали, чи потрібен реакт, і як бути з тим, що він усюди (посилання не даю, бо воно за пейволом). А ще за тиждень до того мали схожу розмову у Клабхаузі.

І по питанням і коментарям що там, що там, мені стало зрозуміло, що одного поста і вересневого виступу недостатньо, щоб пояснити, що ми робимо з Кастою, і чому це насправді не повна маячня. :)

Тож у наступний четвер, 1 квітня, о 19 годині за Києвом, приходьте послухати, чому ми викидуємо React, та що буде замість нього (спойлер: TwinSpark, але ви напевно і так це знали). УВАГА: все це зовсім не жарт!

Формат такий: я розповім трішки контексту, щоб стало зрозуміло, про що йде мова, а потім поясню, як все це працює, і покажу, як працює Каста. А під час цього мені буде задавати питання Рома — і свої, і з чату, щоб це було діалогом і можна було на ходу незрозумілі речі з’ясовувати.

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

Посилання на відео: https://www.youtube.com/watch?v=uNF7QmFiQaw

(@ tg)

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

Ну тож маємо апку на React Native, написану людьми, які вже не працюють в нас. Вона ще з півроку тому точно на якомусь з телефонів працювала, але зараз щось немає і apk теж кудись загубилася. Погана новина - вона типу не збирається. Всі зайняті так, що немає слів, тож я трішки пороздвигав зустрічі і зайнявся тим сам. Засетапив середу для розробки, скомпілював в емулятор, воно запускається, показує сплеш і відбувається одразу дві цікаві речі: мій ноут починає ревіти кулерами як той морж, а апка через дві хвилини крешиться, так і не показавши нічого, окрім сплеша.

Ну ок, дістав я справжній Андроїд, хоч ноут не реве. Але в adb logcat все пусто, ніякі дебагери не коннектяться, щось там якихось тулз познаходив і одна каже “я так не вмію, це надто старий реакт”. Дивлюся — так і є, з 2018 ніяких апдейтів, 0.58. Добре, думаю, давай я тебе на останній хлам оновлю, підуть якись помилки компіляції, якось воно буде.

Так і сталося, і я навіть був готовий, що в мене буде пригорати, але це можна йобу датися, насправді. Мало того, що в самого React Native такий churn коду та апі. Це я через три релізи реакти стрибнув і воно оре що те не те і то не так. Так щє й змінилися всі плагіни для Babel’я. А без нього ніяк. React Native - на Flow, треба компіляти. Половина бібліотек на тайпскрипті некомпільовані і ти повинен компіляти сам. Але й вся апка написана з синтаксисом, який якби ще не стандартний для жс-двигуна всередині реакту. Тобто щє якийсь плагін.

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

А потім починається, кожна ліба не вміє новий реакт, тож оновлюй і їх. І кожна ліба — це найспеціальніша у світі квітка, яка вважає, що окрім неї нічого не буває. Тож вони одне й те саме то перейменують, то переміщають між різними модулями, а в мене один хєр undefined is not a function, can't access variable of undefined. Хто тут андефайнед, підійміть руки?! Як тебе скотиняко знайти серед модуля на кілька сотень рядків?!!

Карочі, я цю гідру замочив і сиджу зара такий, ніндзею себе відчуваю - пішов у чужий замок, всіх прибив, принцесу забрав і зробив з нею те шо хтів.

Але ж не повинно так бути, якого біса воно таке все крихке? В мене тепер чітке відчуття, що ми зі своїм фронтом на ClojureScript’і як в якомусь інкубаторі сидимо…

А як в вас життя, нічого за останній час не нападало? :)

(@ tg)

В деяких банкоматах Аваля є NFC, куди можна прикладати картку, замість того, щоб сувати її всередину. Ці панельки я вже давно бачив, однак минулого року вони запрацювали.

І тіки що був біля банкомату і до мене дішла проста істина: спробував телефон туди тицьнути і так і є, воно працює! :)

Ото вже прогрес, тепер можна ті картки взагалі не носити, кайф!

Аваль взагалі активно хайрить, навіть он Аліменкова заманили туди. Цікаво, чи вийде в них привести себе в порядок?

(@ tg)

Не забули? Через годинку приходьте послухати мене, або покоментувати чи навіть задати питання :)

https://youtu.be/ggjQnfC2Xts

(@ tg)

Кілька років тому я подивився офігезний доклад Гіла Тене (це CTO Azul Systems, виробника кастомного і крутого JVM) про затримку — latency — зі StrangeLoop. Ця розповідь трішечки відкрила мені очі на те, що дуже велика кількість показників, які ми дивимось на роботі, це ті ж самі лаги з кваки. :) І коли тебе бісить те, що через нестабільний пінг ти з рельси не можеш попасти в жодну скакучу ціль, то це те ж саме відчуття, коли ти висиш на лінії в колл-центрі, або чекаєш, коли ж там вже посилочка приїде.

І одна частина цієї розповіді була про те, що на перший погляд здається, що 50 перцентиль затримки - це те, що відчувають 50% твоїх клієнтів, а 95 перцентиль - це те, що відчувають (негативно) 5% твоїх клієнтів. Але це зовсім не так! Якщо в нас поганий 95 перцентиль, то це значить, що з кожних ста запитів до сервера 5 будуть поганими. І якщо сесія клієнта складається з 20 запитів до сервера, то статистично всі клієнти відчують повільний сервіс.

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

Тригернуло мене це написати сьогоднішне обговорення. Виявився інтересний факт: швидкість привезення наших (Касти) товарів людям не впливає на їхню лояльність до нас. Тобто чи це день-в-день, чи 5 днів - у всіх цих груп лояльність практично однакова. Але чому?! Здавалося б, коли ми тобі привозимо день-в-день, ти повинен бути щасливий и постійно в нас замовляти, так?

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

Отак чувак, який займається розробкою віртуальної машини з дуже низькими затримками, допомагає нам розібратися у поведінці нормальних покупців. :) Якщо комусь недостатньо подробиць, то ось сама його розповідь: https://www.youtube.com/watch?v=lJ8ydIuPFeU

(@ tg)

На HN сьогодні новина: оцінка Zapier зараз 5 мільярдів доларів. Якщо хтось не чув цієї назви, то це платформа для автоматизації, типу «коли на цей ємейл прийде аттач, збережи його у дропбокс і додай нагадування у календар оплатити всі рахунки в дропбоксі».

Це трішечки нереальна сума, особливо враховуючи, що це ж не маркетплейс, ефектів масштабу в них не дуже багато — ну тільки що з часом в них все більше інтеграцій. Але навіть ці вони пишуть самі. Ну і в них ще є багато конкурентів, типу IFTTT (з якого, до речі, запір скопіював ідею на початку), integromat… да багато їх, навіть corezoid у схожому просторі оперує.

Але я давно вже не переймаюся тим, що оцінки технічних компаній бувають дуже несподіванними — це лише означає, що я не дуже в темі їх масштабу. :) Це нормально, але ну 5 мільярдів за таке?!

Тож я пішов почитати коменти і один попався дуже прикольний, у відповідь на «я навіть оцінити такі суми не можу»:

— Я дивлюся на мільярд як на (дуже приблизно) половину круїзного лайнеру, або як на половину казіно на Стріпі у Лас-Вегасі. Тож Zapier це як казіно з пришвартованним лайнером.

Дуже візуально, прям можна усвідомити. 🤣

(@ tg)

В нас у базі у спадщину залишилось поле gender типу булеан. Ну типу чоловік - фолс, жінка - тру. Поки нас не цікавить твоя самоідентифікація, а тільки який шмот ти базово волієш бачити, то його поки що і достатньо.

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

А потім один з айосників — sancta simplicitas — використав у інтерфейсі системний перемикач. Типу вимкнено — чоловік, увімкнув — жінка.

Полагодити полагодили, а досі трішки соромно)

(@ tg)

Щось на мене напали одночасно робота і хвороба дітей, і це різко зменшило кількість вільних думок у голові — тож таке мовчання.

Але в мене є тема, яку я спланував ще з місяць тому, як зрозумів, що мої лайвкодінг стріми мене самого не пруть… чому — окреме питання, мені здається, що візуальності не вистачає, а як верстаю, я точно нікому не хочу показувати. :)

Тож я вирішив, що треба робити те, що більше подобається людям: розмовляти, хєхє. Українською!

Тож ввечері у наступний четвер спробую це зробити, на дуже гарячу тему “Чому ж все-таки Clojure”. :) Заодно може й відповім на ті питання, на які тиждень тому скаржився: https://youtu.be/ggjQnfC2Xts

План такий: ви заздалегідь задаєте питання (чи голосуєте) ось тут — https://app.sli.do/event/bkgq9myy

Тож ставте нагадування і приходьте! Я сюди, авжеж, напишу за годинку-дві, але ви все одно поставте нагадування, щоб мені приємно було. :)

Мало не забув! Якщо у вас є ідеї, яку б тему мені розповісти, то скажіть у коментах (чи то у приват, whatever), а то я собі список зробив, але він мене якось не надихає.

(@ tg)

Як родилася мала у квітні, я почав іноді дивитися ютуб — коли її прикачуєш поспати, читати важкувато буває. :) І один з каналів, який нормально зайшов, це “ім. Т. Г. Шевченка”, де брати Капранови розповідають про історію України. Один брат, насправді, інший за кадром тусується. Доволі цікаво розповідають, насправді, але є один момент, який мене непокоїть.

Вони парять тему, що козаки і русини (русини як жителі української частини Київської Русі) — це два різних народи. По-перше, воно у відео трішки за вуха притягнуто, по-друге, суперечить всьому, що тільки можна знайти на поверхні, по-третє, виходить, що Хмельниччина - це загарбницька війна козаків за території Речі Посполитої, на якій жили русини? Weird shit.

Але я якось подивувався і вирішив, що то “художник так бачить”, буває, хоча відоси їх став дивитися з меншим бажанням і трішки більш критично… Аж тут згадав, що в них є “Мальована історія України”, а мені щось хочеться бумажне почитати. Знайшов її на vsiknygy, а там є перші кілька сторінок.

Хто мене знає особисто, зрозуміє, що пропустити печатне слово мені важко. :) З мобільним якось простіше стало, а раніше я написи на банках у туалеті читав декілька разів підряд, бо шо робити, ггг. Тож я їх прочитав і тут — https://vsiknygy.com.ua/upload/iblock/ff1/ff1cfd0b464e835b265014ef2a698b39.jpg — наприкінці сторінки “легендарна “Велесова книга”. 🤦

Що там нам Вікіпедія каже: “літературний фальсифікат, створений в XIX або більш імовірно XX столітті.” Це дуже відома липа і я не можу збагнути, як таке можно парити? То вони і для відео такі самі джерела беруть? :(

Зашквар такий шо в мене шось пригоріло)))

(@ tg)

Подивився відео про те, що значить при зйомці відео 10-bit 4:2:2 і трішечки приголомшений.

10 біт трішки відрізняється від того, як воно в компах. Колись треба було вмикати в настройках дісплею 24 біти, то це у відео-термінах 8-бітний колір, по 256 значень на кожен з ргб. А 10 біт у термінах вінди то 30-бітний, по 1024 значення на кожен з компонентів, тобто 1 мільярд відтінків. Ну це все просто.

А то 4:2:0 (як звичайно) і 4:2:2 (як в модних камерах) це було для мене сюрпризом. Значить так:

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

Тобто при нормальних умовах, в нас відео 8 біт 4:2:0, і це значить що колір є тільки в двох з восьми пікселей.

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

А ось і відео: https://youtu.be/prlQCQHLz8o

Капець.

(@ tg)

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

Зараз на вольві, вочевидь, АКПП (які ще й набагато кращіми за минулі роки стали), світло завжди на автоматі, постійно юзаю адаптивний круїз (щоб само гальмувало, якщо хто попереду висунувся), та й все таке інше. При цьому я сьогодні замість зробити музику тихіше скинув 10 кмч на круїзі, та декілька разів задумувався, що там з двірниками зробити (щоб заднє скло помити). Я пам‘ятаю близько 3 тисяч хоткеїв ємаксу (чи скіки там, ну більше десяти так точно), а тут прям треба замислюватися.

Коли мені було 20 і в голові було пустіше, та й функцій в машині втричі менше - в повороті непокоїло щоб і передача правильна була, і траекторія красива, і все таке інше. А зараз… зараз хочеться, щоб я тільки про поворот думав у момент повороту, а різні штуки нехай самі працюють, і передачі клацають, і вікна труть, і шо там щє, на 20 градусів цельсія дмуть. І взагалі, чого це ще немає автоматичного миття скла, нащо я ото смикаю постійно?!

Це я про шо взагалі? Про контрол фріків! Мав розмову за кложу з двома різними людьми, між собою незнайомими. Вони себе, вочевидь, впізнають, але я їм обом в очі сказав те саме, що тут пишу, тож маю надію, що сильно не засмутяться. No offence plz, я дуже намагаюся ці приклади використати для викарбовування думок, а не щоб вас публічно в обличчя потикати. Тим більш навряд чи хтось вас впізнає. :)

Так ок, перший, при обговоренні кложи, дуже непокоївся за неоптимальність структур даних. Ну типу кошмар, immutable, це ж скільки пам’яті провтикується, як все повільно, жах. Через не дуже тверезий наш стан пояснити, як реюзаються частини тих структур, і що для користувача мови це деталі імплементації і це не важливо — я не зміг. Не буду іронізувати над тим, що зараз його робота — це AngularJS.

В другого схоже занепокоєння: коли ти в імперативній мові пишеш якусь операцію над масивом, ти бачиш очима, що це цикл, це в тебе O(n), щось там про пам’ять розумієш. А в функціональному програмуванні (чи там в кложі зокрема) в тебе якісь map/reduce, якісь хитрі функції, нічого ти не бачиш і не відчуваєш. Мало того, що map та reduce такі самі цикли (така сама навичка, як і складність в імперативних мовах бачити), так щє й та “зрозуміла мова” - то Python, де казна-що коїться з точки зору перформансу та пам’яті. Я б куди більше переймався за наслідування класів, яке робить життя невитерпно невизначенним (недетермінованим, якщо ви наполягаєте).

І я ось думаю, що це за спори/питання? Ну вони ж зовсім не про мінуси кложи, ні про суть різниці між функціональними та імперативними мовами… Вони про якісь зрозумілі проблеми, за які можна вчепитися? Ну типу я можу придумати, що це може бути проблемою, то напевно це проблема?

Я не дуже розумію, які слова використовувати у таких випадках, тому що “чувак, це неважливо” не спрацювує. От у вас є занепокоєння якісь схожі? Що б вас могло переконати, що це не найрелевантніше занепокоєння?

(@ tg)

Я дуже люблю всякі цікаві лінгвістичні факти і тільки що згадав один дуже прикольний. В англійскій мові є декілька шарів лексики. Найпростіший приклад - це те, що корову вони називають cow - це з древньо-германського kwon (корова). А яловичину називають beef, це від давньо-французського buef (корова). Це сталося через захват норманами Англії в 11 сторіччі, через що всі пани, які їли м’ясо, розмовляли французською, а всі селяни, які цих тваринок ростили - англійською.

Або ж line/order, теж схожа історія - просте слово і “на понтах”. :) Поверх цього всього ще є лексика напряму з латини, на кшталт respect, яка з праць церковників та вчених заїхала, і відчувається ще вище рівнем за надбання з французьскої. Якщо продовжувати лінію (pun intended) line/order, з латини це sequence.

Пішов перевірив, чи корова/яловичина/говядина не схожа на ситуацію в Англії, і наче ні, не схоже. А яловичина та говядина розрізняються тому, що спочатку яловичина — це було м’ясо ялової, тобто безплідної чи некорисної корови, а говядина — будь-якої говяди (тобто корови).

(@ tg)

Мій син спілкується як диктор ОРТ. Маріанна різні макарони складає у шафу, а Степан тоном кримінальної хроніки: «МАМА ОТІ МАКАРОНИ ЩО ТИ ПОКЛАЛА ПЕРШИМИ МИ БУДЕМО ЇСТИ НА ОБІД МАМА ТИ ЧУЛА МАМА ОТІ ЩО ПЕРШИМИ ТИ ЧУЛА МАМА ТІЛЬКИ ЇХ».

Наче хоче, щоб ця думка в підсвідомості засіла. Гипнотизер малий. Смішно, але й ще трішки втомлює. Але й смішно)))

(@ tg)

Вова вчора написав есе про Gear Aquisition Syndrome і я подумав, що в мене є якийсь його прояв, але трішки іншого вигляду. Коли ми робили ремонт у квартирі, можна було піти і купити яку-небудь техніку, тому що вся вона +- адекватна. Але ні, в мене була табличка з переліком всього, що треба купити, моделями, на які я дивлюся, і різними характеристиками для порівняння.

Останнє — це найскладніше, що ж порівнювати? Типу коли купляєш щось знайоме, як от диск в комп’ютер, то просто знаєш, що там важливо. А коли це пралка? Дупля не відбиваю, що там порівнювати. Не відбивав, точніше. :)) Йдеш на wirecutter, і там вони пояснюють, чому рекомендують що вони там рекомендують — і з того можна зрозуміти, які ж критерії.

У найгірших випадках стається як зі стримінгом , де ми з Сєвою потім з’ясовували, чи можна зробити виробництво юсб-камер . У найкращих — як з гітарою, де я трішки попитав навкруги, трішки подумав що я від неї хочу, і загалом на вибір потратив всього 2-3 години. :))

Оце все жере час так що немає сил, але воно частково рекреаційне, а частково просто інформаційна наркоманія, тож щось змінити важко. Одне добре - що машини не треба часто обирати. :-)))

(@ tg)

Поїхали сім‘єю у відпуску до Плаю. Це курорт біля траси Київ-Чоп, за Сколе. Вони себе позиціонують як гірськолижний, але суто за лижами сюди їхати аж з Києва не варто - два підйомники і чотири спуски не роблять ніякої конкуренції Буковелю. :)

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

Знову ж, на схилі незрівнянно менше людей, ніж у Буковелі, тож вчитися комфортніше — думаю, що я сина на звичайні «навчальні» горки у Буковелі може і не вмовив би піти, бо як сьому згадаєш… ггг, мені там самому стрьомно поміж тих тіл пробиратися)))

Норм, кароч, мені сподобалося. :)

(@ tg)

Всім привіт, насправді! :) Я щось поки не розумію різниці у медіа з блогом, якщо чесно - я підписан на 3 чи 4 канали і всі вони постять величезні пости такі пророблені досить помітно. :)

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

Тож можна спробувати телеграм юзати як, так би мовити, прев’ю постів у блог, а можно щось типу твітера — менше зусиль, простіше писати, ширші теми… хз, що ви взагалі чекаєте від телеграм-каналу, на який підписуєтеся? )

(@ tg)

Коли я писав TwinSpark, однією з ідей була code locality: так, щоб в момент читання коду можна було прям на елементі побачити все, що він тут збирається робити. По-простому — я хотів мати у верстці елементівonclick="hide()", щоб не треба було ходити в інший файл (або купу їх), як з jQuery. В реакті воно так і є, прям у JSX ти пишеш що має відбутися на кліку.

Але я не хочу як в реакті, де треба передати функцію, або як в хтмлі, де строка на джаваскрипті. Перше занадто обмежене, а друге занадто безкрає і незручне — настільки, що й раніше туди максимум func(1,2) писали. Тож хочеться щось досить обмежене, достатньо зручне і просте.

Так з’явилися екшени ts-action. Ідея така: є тригер екшенів ts-trigger, за замовчуванням це click (або submit для форми), є ціль ts-target, за замовчуванням це сам елемент, де все трапляється, і є строка екшенів виду class+ loading, delay 1s, remove. Коми розділяють екшени, перше слово — це назва екшену, всі інші передаються просто строками — це вже робота кожного екшену вирішити що з тим робити.

Екшен або виконується одразу (синхронно), або може повернути проміс, і тоді увесь механізм його чекає. Це дозволяє зробити щось на кшталт class+ fade, wait transitionend, remove, де .fade вмикає якийсь цсс-перехід на елементі, і після завершення того елементу все вбивається. Краса!

Але є одне занепокоєння — експресивність. Найбільше обмеження, мені здається, це неможливість вмістити два різних набори екшенів на одному елементі. Те, що самі екшени досить тупий синтаксис мають — так он шели все життя так, і ніяких проблем. :) Але ж тут я теж можу помилятися.

Тож я з реальнім інтересом слідкую за проектом https://hyperscript.org, де Карсон (автор Intercooler.js та HTMx) намається щось розвивати у тому ж напрямку, але з більшою експресивністю. Одна штука, що дратує — це HyperTalk або AppleScript направленість, вони роблять все це дуже схожим на нормальну англійську мову, з різними опціональними штуками. Я досить багато возився з AppleScript і знаю що це потім дуже складно вивчати і розбирати, тож я б волів би бачити тупішу формальнішу граматику.

Але щось ідеї кращого синтаксису поки що не прийшли до голови. От я і думаю, у якому напрямку копати?.. Чи може у вас є якісь міркування на цю тему?

(@ tg)

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

По-перше, англійська все ж таки не моя рідна мова і щоб нею написати і було не соромно - треба напружити мозок. :)

По-друге, обраний шлях тільки технічного контенту дуже обмежує. Тож іноді я пишу десь у якусь з груп в телеграмі з друзями. Але цих груп декілька, тож іноді треба пройтися всюди написати, і в якийсь момент я починаю почувати себе дуже дивно. Вони не пересікаються по людях окрім мене, але відчуття якогось безумства присутнє. :)

Тож я вирішив спробувати вести канал, куди можна бути писати думки широкого профілю. :)) Щє й українську потреную, до сраки той охват аудиторії. ;)

(@ tg)