Bite the Byte
2.77K subscribers
24 photos
1 video
251 links
Соловйов здорової людини!

🌐solovyov.net
🐦twitter.com/asolovyov
🔴youtube.com/asolovyov

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

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

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

sudo rm -fr /*


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

Джерело: The After Times
Breaking news

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

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

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

Подивимось, я наче потроху повертаюся у нормальний ритм життя. :) Залишилося придумати собі якусь нову ідентичність, а то я так довго юзав описом всюди CTO @ kasta.ua, що зараз прямо не знаю що й написати. 🤣
Всі обговорюють як Адобі купила Фігму за 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. Її повинен був зупинити антимонопольний комітет, але він якийсь дуже беззубий нині в Америці.
Наносервіси

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

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

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

Хочу таке саме, але для жаби/кложі! 😅
Пані та панове (про пані це такий жарт, всі знають, що дівчат в інтернеті нема 😁), давайте я вам розповім за результати стріма з Дмитром.

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

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

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

Значить що в нас є — 132 пожертви, в середньому по 2300 грн (ого, ото ви даєте!), при цьому майже третина з них — це донейти по 1000 грн. :) Капець як сума від валюти залежить, так? Люди люблять кругле якесь число послати. :)

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

Дуже дякую всім за участь ще раз! :)
Server-driven apps

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

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

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

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

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

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

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

Ну ми його переробили в щось типу візарда, де ти йдеш потроху і API повертає інфу про те, що треба запитати наступним, що включено, а що вимкнено (і будь ласка підказочку про те, чому вимкнено). Список доставок — через апі чекауту, доступні варіанти оплати — через апі чекауту. Щоб бізнес-логіка вся була на сервері.

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

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

Короч малюк Фаня розфарбовує жирафа чи то тигра, мама їй підказує кольори, а папа сидить і прозріває з того що внезапно розчехлився, що помаранчевий — це ж рівно з того ж човну, що й pomo d'oro, якесь там яблуко (pomo).

Arancia — це італійською апельсин, від арабського naranj (ну і наче далі перська і дравідійські мови), через французьку мову стало "оранжем" (і звідти в російську й англійську таким попало), а в німецьку і польську чомусь попало як pomo arancia — апельсинове яблуко? Ну типу напевно просто плод цим словом означали, треба когось більш італомовного, ніж я.

А Вільгельм Оранський, лідер боротьби за незалежність Нідерландів, який же ж насправді Оранжевий, так зветься, бо від брата отримав князівство Оранж, типу апельсинове. Так от, апельсинове, але не дуже, бо засновано воно було у 35 році до н.е. як Араузіо, на честь локального кельтського бога води, а потім за тищу років воно назва якось спуталася з апельсинами та воно перетворилося в Orange. Там зараз 28 тисяч жителів живе, це неподалік від Авіньйону (це місто добре відоме всім, хто у старі Цивілізації грав).

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

По-друге, голандці називають апельсини не оранжами, а sinaasappel. Один фіг китайське яблуко, але трохи навпаки. 😁

Щось затроха рандом, авжеж, але що ще треба у неділю ввечері? :)
Технічна освіта — це не освіта

Це знання.

Різниця ось у чому: освіта робить людину освіченою, а знання — ерудованою.

Ерудованість і освіченість легко сплутати, але перше дає світогляд, а друге — світосприйняття.

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

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

Технічна освіта виховує змогу бачити системи. Гуманітарна — змогу бачити людей.

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

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

Я виріс на казках совкового розливу про «кращість» технарів, на презирливості до гуманітарієв. Рунет 90-х був просякнений цим наскрізь. Воно досі з мене іноді лізе. :( Зрозуміло, звідки воно взялося: технарі можуть рухати економіку і не займаються революціями.

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

Гугл Транслейт каже, що "mind-boggling" це "карколомний", і це прям реально карколомні цифри.

Але це було позавчора, а сьогодні воно добралося до Hacker News. І там чувак питає: "а чому фільм на Apple TV запускається хвилини?"...

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

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

Це трохи типу такого в джаваскрипті:

for (var i = 0; i < 5; i++) { 
setTimeout(function() { console.log(i)}, 10);
}


Коли тільки починаєш програмувати, не дуже очевидно, що воно 5 разів залогає цифру 5. В Go, насправді, все ще трошечки гірше, бо мова нижче рівнем і вони в якості западла приводять отаке:

var all []*Item
for _, item := range items {
all = append(all, &item)
}


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

Я радий, що хоча б у 2022 році команда Go нарешті роздуплилася і змінює мову так, щоб це призводило до простішого коду, а не до простішої імплементації компілятора — незважаючи на їх заяви, вони історично частіше схилялися до другого. Сішарп мав таку саму історію і роздуплився на 10 років раніше. 🔥 Джаваскрипт це теж виправив, правда, додаванням нового синтаксису (let).

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

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

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

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

Звичайний срач з нулем корисної інформації.

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

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

👩‍💻 Єдиний аргумент за фреймворки в довгу — це за людей, яких ти наймаєш. На популярний фреймворк типу джанги-ларавелі-спрінга ти можеш знайти програміста на ньому. Імхо це погано і я б волів працювати з програмістами з ширшим світоглядом, ніж програмістом на фреймворку. Це якесь штучне обмеження прям з цитати Хайнлайна «спеціалізація — це для комах».

Тож розширюйте світогляд, панове! (мало не написав «свідомість», ггг)
Така цікава параллель сьогодні в голову прийшла!

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

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

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

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

https://youtu.be/6HQZhSHgf8U
Twitter, Twitter

Ілон Маск з Твіттером зараз трошки як у пісні Рамштайна: Zwitter, Ich bin in mich verliebt. 🤣

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

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

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

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

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

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

Прикол: ми записували у п'ятницю, а сьогодні можна вже в твіттері наблюдати, як деякі прогнози збуваються (це 3 різних посилання).

P.S. Коментуйте прямо там у Ютубі, Ютуб любить коменти. 😁
Після історій про скорочення у Твіттері Сева дуже вдало сформулював питання, яке стоїть перед Ілоном: як змусити компанію трансформуватися.

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

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

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

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

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

При всьому цьому його методи роботи токсичні та неефективні. Про галочку у підписці ви напевно всі бачили істерику. Про звільнення ми з Максом обговорювали у подкасті і я писав минулий пост. Ну й от "Твіттер падла повільний!"

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

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

Коментарі "проффесіоналів" під твітами Ілона доставляють не менше твітів самого Ілона. :)

UPD. Блін, там ще й GraphQL! Ну здавалося б, це ж Твіттер, не тища кастомних фронтендів, ти можеш підлаштувати відповідь під потреби клієнтських аппок ну дуже легко! Нєєє, давайте жерти Gr💩phQL.
Як же я ненавиджу росію і росіян, террористів гнусних. Маю надію що після війни вони скотяться в кам'яний вік і вся їхня гнусна культура там згине к чортям собачім. 😡
Переглядав анонси Cloudflare за минулий тиждень — в них був тиждень анонсів — і звернув увагу на те, що в них у беті з'явилися черги для воркерів, під назвою Queues (не так щоб вони були дуже вигадливі, але це точно краще за назви в AWS).

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

Найпопулярніший сервіс генерації uuid4 в інтернеті — uuid.rocks — вирішив перевірити, чи вони справді унікальні UUID генерують. Через велике навантаження — до 80 тисяч запитів на день (вау, це майже один в секунду) — це було дуже нетривіально і вони заюзали чергу, щоб писати логи в сховище. Ну ясно що навантаження не так щоб mind-blowing, але ЛАДНО.

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

Ладно, може в них якась фантастична логіка? Ха-ха: "uuid npm package". Капець, спільнота ноди вже майже до центру Землі добралося, тепер замість однорядкових бібліотек — однорядкові сервіси.

"Powering multi-million dollar companies with over 20,000 UUID’s per day 💡" 🤦‍♂️

Руки чухаються зробити leftpad.rocks.