✙rozho)))k✙🇺🇦 @full_of_hatred Channel on Telegram

✙rozho)))k✙🇺🇦

@full_of_hatred


Про автора: www.rozhkov.me/about
Про канал: www.rozhkov.me/about-full-of-hatred

Канал про все що не ІТ: @daily_rozhok
дірект: @xrozhokx
блог: rozhkov.me

✙rozho)))k✙ (Ukrainian)

✙rozho)))k✙ є каналом, який пропонує унікальний погляд на усі теми, що не стосуються ІТ. Автор каналу ділиться своїми думками, враженнями та спостереженнями з аудиторією, надаючи нові погляди на різні аспекти життя. Якщо ви шукаєте цікаву та нестандартну інформацію, то цей канал саме для вас. Разом із ✙rozho)))k✙ ви зможете поглибити свої знання, розширити свій світогляд та підняти настрій. Приєднуйтесь до каналу за посиланням @daily_rozhok та отримуйте цікаву інформацію щодня. Також ви можете звертатися до автора напряму за допомогою @xrozhokx або відвідати його блог на сайті rozhkov.me. Долучайтесь до ✙rozho)))k✙ і починайте свою подорож у світ нових знань та вражень!

✙rozho)))k✙🇺🇦

31 Dec, 07:24


Підсумки 2024 😑

🤝Величезна подяка людям які підтримували збори та допомагали мені.

💸Дякую всім підписникам які залишились з @Donate1024Bot.

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

🫡Цього року загинуло декілька бійців, з ким я був знайомий особисто та ділив побут. Честь.

🥳Зібрав бінго — день народження, Різдво та новий рік зустрічатиму на підвалі чергуванні.

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

🥹Дякую всім читачкам та читачам які залишаються зі мною.

🎄Щасливого Нового Року та веселих свят!🎄

#війна
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

30 Dec, 07:24


Втомився боротися з лінтерами

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

На всіх своїх проєктах я використовую статичний аналізатор коду RuboCop. За замовчуванням він досить затягнутий, і я трохи попустив правила.

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

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

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

😤Одним словом, я втомився вимикати інспекції інлайново, та ультанув:

Metrics/ClassLength:
Enabled: false

Metrics/AbcSize:
Enabled: false

Layout/LineLength:
Enabled: false

Metrics/MethodLength:
Enabled: false


Нарешті можна розслабитись та писати весь код в одному файлі😌

#інструменти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

27 Dec, 07:24


Телеграм-бот для скриншотів bluesky

Доробив свого бота який робить скріншоти твітів, щоб підтримував також скриншоти з bluesky.

Прикольно що в мікроархітектурі сервісу скриншотів, тобто враперу селеніуму, я подумав про майбутнє та зробив API яке приймає url та css-селектор. Тому сам врапер переписувати не потрібно було, а лише додати в телеграм-бот регексп який дістає посилання на bsky.

Як і у твітері, в Bluesky розробники зробили спеціальний HTML-атрибут який видає div з власне постом. Єдиний нюанс — в твітері цей атрибут завджи однаковий, а в Bluesky унікальний для кожного користувача та має формат data-testid="postThreadItem-by-#{bsky_profile}", наприклад data-testid="postThreadItem-by-maxua.com". Тому довелося додатково ще парсити й це.

Можна було б рендерити пост самостійно, ATProto дозволяє це зробити, але набагато простіше дописати кілька рядків коду😅

Бот — @chat_keeper_bot. Ви можете додати собі його в будь-який чат, і він теж буде працювати.

#проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

25 Dec, 07:24


Як зробити, щоб http://localhost:8080 було видно в інтернет

🎄Всіх з Різдвом!🎄

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

Розумні люди придумали для цього тунелі. Ви підключаєтесь до машини в інтернеті та створюєте тунель. Машина відкриває 443 порт та проксує всі запити на ваш комп'ютер.

Та ж машина в інтернеті може подбати про доменне їм'я та SSL-сертифікати, щоб гугол не сварився на ваш http://localhost.

Якщо ви раптом ще не використовуєте в роботі такі інструменти то я наполегливо раджу спробувати.

Найпопулярнішою тулзою раніше був ngrok. Пишеш у терміналі щось типу ngrok http http://localhost:8080 і він відкривав тунель, створював вам домен виду randomstring.ngrok.io та підіймав вебсторінку з логом запитів. Дуже зручно.

Звісно гроші за щось треба брати, тому у безплатній версії з кожним перезапуском апки або по таймауту в декілька годин домен змінювався. Дуже незручно, наприклад щоб тестити oauth доводилося постійно змінювати callback url.

За гроші всі проблеми вирішувалися, але хіба ми не програмісти, щоб витрачати 5$ на таку просту задачу?

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

Ось мені знову знадобилося затестити телеграм бота, і я вже зібрався запустити ngrok, але він кудись пропав з лептопу. А може його там взагалі не було.

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

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

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

#інструменти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

23 Dec, 07:24


Купив новий смартфон

У виборі техніки я максимально консервативний. «Працює — не чіпай». Я не страждаю ADHD тому телефони та екрани не розбиваю, не топлю та не ламаю. З 2003 року, коли отримав перший телефон, я міняв їх тільки з причини застарівання. Приблизно 1 раз на 4-5 років.

Перший смартфон я купив у 2013. Це був Jiayu G4S, на той момент «конкурент флагманам». Він служив мені вірою і правдою, але нездала робота тачскріну в дощ, низька точність GPS, а невдовзі й недостатня потужність процесора для нових апок, які ставали все повільнішими, поставили мене перед питанням вибору нового смартфону.

Мій товариш тоді якраз купив OnePlus 3 і нахвалював його.

Тому взимку 2018 року пішов у магазин «Кокос» де купив OnePlus 3T — на той момент вже не конкурент флагманам, але все ще достойний апарат. Все з ним було добре — і 3.5 джек, і фізична кнопка, і потужність. Звісно, з часом апки ставали працювати все повільніше. Я не бачу які цьому можуть бути об'єктивні причини. Пошта як показувала пошту, так і показує, галерея — фото, а мапи — мапи. Чому ж з часом все починає псуватися?

На війні у тебе немає часу чекати поки телефон з 6 гігабайтами пам'яті роздуплиться та перемкнеться з сігналу на мапи, тому я прийняв рішення про заміну.

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

Тому я потицяв туди-сюди та й зупинився на OnePlus 11. На OLX швиденько був знайдений та придбаний «біток з америки» за помірний прайс (17 000 грн).

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

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

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

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

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

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

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

Туди ж т.зв. Sleep Time Optimization, це телефон вночі все вимикає ну бо ти спиш, нема шо комусь тебе турбувати. Ох телефон, як би я хотів, щоб воно так і було насправді😓

Пишіть чому мені треба було купити айфон в коментарях👇

#інструменти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

20 Dec, 07:24


wtf is corepack?

Я регулярно оновлюю всі залежності всіх проєктів на найновіші. Оскільки в мене в основному Rails та Java то це тривіальні процедури: оновити версію рубі на найновішу що вийшла, а потім зробити bundle update. Жодна з версій залежностей в мене не залочена, тому я постійно живу на всьому останньому. В Java трішки складніше, там версії лочаться, тому треба піти й перевірити що зараз останнє, бо автокомпліт IntelliJ щось перестав працювати.

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

Ось я вирішив оновити докерфайл проєкту, бо колись давно виникла проблема з alpine та однією з версій рубі, щось там крашилось, довелося змінити базовий імедж на debian-slim. Разом зі зміною я втратив jemalloc, але тоді це було не таким критичним.

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

Звернув увагу що у мене не змінилась версія yarn. Хто пам'ятає — це така альтернатива npm яку написали у фейсбуці коли npm був ще неоптимальним. З якоїсь причини це є дефолтний пакетний менеджер js-залежностей в Rails. І от я дивлюся що він у мене версії типу 1.22.11 чи щось таке. Дивно, думаю, йду на офіційний сайт, а там пише що вже є 4.x.x. Дивлюся як його оновити, а там corepack enable⁣, а потім yarn set version stable та yarn install. WTF? Читаю далі, а виявляється що «we don't tell you to run npm install -g yarn to install Yarn - we even recommend against it».

Короче в джаваскрипті придумали якусь штуку що зветься corepack і тепер треба робити через неї. Також, вже досить давно додали npx, але я не розумію чим це відрізняється від npm.

Все як завжди. Поки в джаві нічого не змінюється вже 10, а то й більше років і ти як запускав ./gradlew build, так і запускаєш, поки в рубі ти як робив bundle install, так і робиш, джаваскріптери знову видумують щось нове.

Ну гаразд, ще можна відзначити python, де vc-backed контора написала заміну pip, pyenv, virtualenv, poetry, setuptools та ще бозна-чому на расті — uv. Зараз вона на хайпі, всі пісяють кіпятком крім ортодоскальних пітоністів які незадоволені тим що пакетний менеджер пітона написаний не на пітоні.

І це я ще не торкався теми фронтенду! Бо я так розумію що вебпак уже давно потьмянів, і новий shiny object фронтендерів це Vite. То я ще не згадую про rollup (?), parcel(??) та esbuild (???) які можна використовувати для збірок фронтенду.

Зовсім забув про Bun та Deno! Що це, кому, навіщо?

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

В чому причина? Популярність платформи? Ну так подивіться на джаву або на PHP — там такої шляпи немає. Новизна? Камон, 10 год уже SPA-непотріб впевнено крокує по куцим просторам 8 гігабайт вашого макбуку а ви так і не можете визначитися чим ставити пакети.

🤦‍♂️

#спостереження
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

18 Dec, 07:24


Страхи збуваються

Телеграм-бот @Donate1024Bot щоранку розсилає всім підписникам новий збір. Щоб уникнути випадкового подвійного спрацювання, цикл розсилки схований всередину select for update.

Коли робив інтеграцію з Bluesky, то додав код, який також публікує збір у Bluesky. Звичайно, я не перевіряв E2E виклик, і просто скопіпастив рядок з реплу. Виглядало це якось так:

Lock.find_by(key: "daily_post").with_lock do
random_post = Post.random_post

TgUser.pluck(:tg_id).each do |tg_id|
SendDailyPostToUserJob.perform_later(tg_id, random_post.id)
end
random_post.update(posted_count: random_post.posted_count + 1)
SendDailyPostToBskyJob.perform_later(post_id)
end


Запушив код опівночі та й ліг спати.

І звичайно що я побачив наступного ранку? Вірно, 6 однакових постів у себе.

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

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

Уважний читач звісно помітить тривіальну помилку.

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

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

Ймовірно через це декілька людей відписались та не задонатили гроші, і тепер сума зборів впала на 3-5 тисяч гривень😔

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

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

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

P.P.S.: можете порадувати ріжка та підписатися на бот @Donate1024Bot і донатити щоденно хоча б по сотні гривень — то вже буде досить потужно🥺

update: після того, як я написав пост, натрапив на таку штуку в Rails як запуск джоб після коміту транзакції🤯. Хтось уже не раз зіткнувся з проблемою як у мене і написав для неї коробочне рішення. Читайте доки!

#donate1024 #кулсторі
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

17 Dec, 07:24


☝️Нагадую вам про регулярне зарплатне опитування ДОУ.
Цього разу додали опцію для тих хто тимчасово🥲 не в ІТ, тому я заповнив і заохочую вас скористатися нагодою поки є можливість👇
Анкета → https://tally.so/r/wA62By

✙rozho)))k✙🇺🇦

16 Dec, 07:30


Bluesky

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

Послухав черговий епізод подкасту Startups are hard Макса Іщенко, де той схвально відгукується про відкритість Bluesky. Мені ще давно дали туди інвайт, але я не заходив. Вирішив подивитися.

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

Коли я робив Donate1024, то хотів, щоб збори публікувались не тільки в телеграм бот, телеграм канал та на сайт, а ще й у твітер, фейсбук та інстаграм.

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

Протокол Bluesky, AT Proto,  відкритий, а для доступу до API не потрібно проходити через пекельні кола верифікації та отримання токенів. Реєструєшся і твої логін та пароль і є ключами доступу.

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

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

Спільнота вже створила цілу купу апок під Bluesky, ось, наприклад, добірка: https://www.growbluesky.com/

Офіційний SDK для AT Proto є тільки тайпскрипиту та пітону, для вашої мови теж швидше за все буде щось від ком'юніті. Donate1024 написаний на Ruby on Rails, під Ruby є декілька SDK, найживіший серед яких це minisky. Його я й взяв. Трішки повозився, щоб передати логін та пароль, а далі все просто — методи описані в документації, бери й роби. Єдина особливість це те, що для форматування тексту AT Proto використовує не розмітку, а так звані фасети. Тобто замість тут буде [посилання](https://..) передається просто текст тут буде посилання і окремо об'єкт фасету, який вказує індекси початку та кінця фасету та тип (посилання, хештег, юзернейм):

{
index: {
byteStart: 6,
byteEnd: 15
},
features: [{
$type: 'app.bsky.richtext.facet#link',
uri: 'https://example.com'
}]
}


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

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

Щоб прикріпити до поста картинку потрібно її спершу завантажити на сервер, отримати посилання, а потім вставити його у пост. Дещо незручно, але вже як є. Не знаю чи можна завантажувати через API відео, здається що вже так, але я ще не пробував. Через вебклієнт можна.

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

API дозволяє вказати дату коли було зроблено пост. Дуже зручно, щоб перегнати у Bluesky всю історію, що я й зробив.

Результат: https://bsky.app/profile/donate1024.org

Як і в боті, кожного дня на акаунті буде публікуватися новий збір та новий звіт. Підписуйтесь, донатьте.

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

Також підписуйтесь на https://bsky.app/profile/rozhkov.me. Хоч в мене ніяк не ходить займатися мікроблогінгом, буду пробувати.

#проєкти #donate1024
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

13 Dec, 07:24


Захотів зробити апку для скрінкастів

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

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

Але Loom не має апки для лінукса і працює лише як аддон у браузері. Я побачив тут opportunity та подумав — а чому б мені не зробити таку нативну апку? Задача звучить досить просто — іконка в треї, натискаєш на неї — починається запис, натискаєш ще раз — запис завершується і відкривається віконечко з посиланням на твоє відео, яке можна пошарити кому треба.

Чому нативну? В мене є незакритий гештальт. Дуже дратує веб-bloatware.

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

Поліз робити, і...

Виявилося що все не так просто.

Я хотів взяти rust, ui бібліотеку egui, там зробити одну кнопку.

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

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

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

Врешті через високу складність цю ідею я закинув.

Потім знову повернувся, з менш амбітною ціллю. Просто зробити клон Loom. Браузер дає високорівневе API яке ховає всі складності.

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

Розгорнув хеловорлд, згенерував через Claude мінімальну версію запису екрана, запускаю, і... нічого. Дивлюся в чому справа — апка не може запитати дозвіл на запис. Йду на github, щоб дізнатися що Tauri не підтримує WebRTC і поки що не планує це робити🤦‍♂️

Потім я пішов ще раз подвитися як працює Loom та інші веб-додатки для запису екрану. Мені дуже не сподобалося що воно завжди запитує дозволи та також показує бейджик «ви шарите ваш екран». Я ж хочу нативне рішення, тому відмовився від електрону.

Давай думати далі, я ж Java-розробник? Напевне там щось має бути. Ось JetBrains зробили Compose Multiplatform, візьму його, а вже якесь АРІ в джаві має бути. Почав шукати — та ж проблема, є біндинги до ffmpeg якими хз як користуватися.

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

Ще раз подивився на Loom. Ще раз подивився на ffmpeg.

Зібрав однорядкову команду на ffmpeg яка записує одночасно відео екрана, вебкамеру та звук з вебкамери в один файл і накладає вебкамеру власне на запис екрана.

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

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

Думаю що робити далі.

update: читач підказав рішення, автори якого вже пройшли увесь шлях та написали нативну апку на расті: Cap.

#проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

27 Nov, 07:24


Супераппи

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

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

Альо, додаток Київстар, мені від тебе треба тільки статистику по витратах та можливість заплатити, мені не треба пхати «завдання» та «винагороди». Ти просто труба для передачі трафіку!

Уклон, я просто хочу доїхати з одного місця в до іншого. Мені не потрібні «медіатори», не потрібні пропозиції від твоїх партнерів, не потрібен кешбек.

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

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

Виконувати завдання? Я тобі гроші плачу ти, тупа відрижка недолугого менеджера, а ти мені ще вказівки будеш давати?

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

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

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

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

#спостереження
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

25 Nov, 07:24


Продовжую збирати на шини. Половина суми є, кілька комплектів вже в дорозі.

Банка: https://send.monobank.ua/jar/2aVg7SJEso

Кому не довподоби шини, також збираю на 20 допоміжних батарей для мавіків: https://send.monobank.ua/jar/4rxDYvLFDE

Приват: 4627055113374002
PayPal: [email protected]

🇺🇦Дякую всім за допомогу!🇺🇦

✙rozho)))k✙🇺🇦

22 Nov, 07:24


Реклама в уклоні

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

WTF???

Я плачу гроші уклону, не маленькі гроші, а мені за мої ж гроші показують рекламу?

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

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

Хто тут серед підписників є з Уклону, передайте продактам проносних променів. Я колись з ними сидів у коворкінгу в Астарті, але зараз не сиджу.

Дизвподобайка, відписка.

Свої крінжові історії про уклон пишіть у коменти (у твітері це цілий жанр)👇

#спостереження
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

20 Nov, 07:24


Дауншифтери

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

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

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

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

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

P.S.: Ну гаразд, я теж принципово не хотів йти на ЗСУшні ІТ-галери, але то окрема історія.

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

18 Nov, 08:35


Збір на зимові шини для підрозділу БпАК

Вітаю товариство! Зима близько і нашим залізним коням потрібні нові підкови.

4 × R16 205/55
4 × R15 265/70
4 × R16 245/70
4 × R16 225/75
2 × R17 225/70 + 2 × диски R17

Загальна вартість ~94,000₴

Банка: https://send.monobank.ua/jar/2aVg7SJEso
Приват: 4627055113374002
PayPal: [email protected]

🇺🇦Дякую всім за допомогу!🇺🇦

✙rozho)))k✙🇺🇦

15 Nov, 07:24


Agency

Є такий термін в англійській який я не знаю як нормально перекласти («суб'єктність» — шляпа). Зазвичай під цим мається на увазі здатність людини активно діяти та змінювати світ довкола себе.

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

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

Отримати в команду тіпа який буде сам шось робити — це неймовірна вдача. На цивільній роботі я був наполовину таким тіпом, бо друга половина — то ріжок-антикапіталіст який постійно ригав від необхідності працювати на дядю (та й працювати в принципі). Оцієї половини якраз і не вистачило, щоб стати VPoE або повноцінним CTO у великій конторі, а не залишитися hands-on-architect.

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

Ну а в армії? В армії таких людей як ви розумієте небагато, і на них все й тримається.

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

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

#робота
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

11 Nov, 07:24


Звіт по збору на РЕБ для РУБпАК

На банку було зібрано 78,311.19₴
Зі збору на наземку було додано 8,585.10
На PayPal зібралось 60$
Всього зібрано: 86,896.29₴ та 60$

Витрати:
-83,591.27₴ для переказу 2,144.25$
60$ переказав з того що було на PayPal
215.75$ переказав мій колега Віктор Данилюк
Всього витрачено 2,300.00$

Залишок: 3,305.02₴ піде у наступні збори.

🙆‍♂️РЕБ уже у бійців та буде прикривати їх дупи від підступних кацапських фпв-шок.

Дякую всім за допомогу!

🫶Особлива подяка моїм колегам — Саші Грабу та Віктору Данилюку, які постійно та потужно підтримують збори💰

✙rozho)))k✙🇺🇦

08 Nov, 07:24


Local-first dev environments

Найбільше мене харить коли код проєкту неможливо запустити локально.

Коли є мільйон залежностей, кафки-хуяфки, редіси-хуєдіси, бридка трійця S3/SQS/SNS, мерзенний OAuth 2.0 та інша шляпа яка не запускається або складно запускається на вашому комп'ютері.

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

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

Коли на старті проєкту лід видає тобі вагон кредів та інструкцій де отримати ще вагон кредів щоб потім захардкодити їх в дотенв-файлі.

Коли тобі пропонується піднімати на ноуті, прости Г-ди, кубернетіс🤮

∈)☼(∋. Очко.

Найцікавіше, що для спрощення розробки міленіали придумали мейнфрейми з тонкими клієнтами — ваш код запуститься на потужному кластері десь в клауді, а ви зі свого IDE будете давати команди. Дуже круто, дякую. Один з найабсурдніших стартапів минулих років це Mightyapp — «Mighty makes Google Chrome faster & use 10x less memory. Mighty speeds up Chrome on your laptop by streaming it from a more powerful computer in the cloud—that makes your browser & other apps run significantly faster.» Просто вдумайтесь, браузер(!) в клауді(!!!)! Ідея звісно не полетіла і фаундер запівотився (хоча це не назвеш півотом) в AI-генерацію логотипів та дизайнів.

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

E2E тести які проганяються по ночам тому що «тест suite займає 2 години» забивають ще один цвях у труну продуктивності. Як щодо того, що запустити їх локально? Ой, не можна? А як мені тоді продебажити тест що падає?

Проєкт має збиратися та запускатися локально без усіх цих хоботів. Цикл read-evaluate-print має бути настільки коротким, наскільки це можливо.

Зовнішні залежності мають бути мінімізовані. Звісно за роки роботи працьовиті міленіали навигадували різних стабів для хмарних сервісів типу DynamoDB Local. Але менше ж з ним — відсутня залежність ліпша за стаб.

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

Без порад.

#робота
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

06 Nov, 07:24


Звіт по зборах на станцію керування TORO Partyphone та 4 радіостанції HIMERA та 2 щогли для екіпажу РУБпАК

Дякую всім небайдужим хто допоміг зібрати кошти!

📺На наземну станцію

Було зібрано 165,171.95₴
Зі збору на рації та щогли додано 236.54₴
Зі збору на плати підриву (один з моїх попередніх) додано 1,866.61₴

Всього зібрано: 167,275.10₴

Витрачено:

Наземна станція: -155,000.00₴
Комісія за платіж: -190.00₴
Тестер РЕБ від фірми gedz.tech: -3,500.00₴

Всього витрачено: -158,690.00₴

Залишок: 8,585.10₴ був переказаний у збір на РЕБ

Станція обійшлась нам на 10,000.00₴ дешевше, тому що у виробника в наявності не було пультів Radiomaster Boxer. Ми маємо запасні TX16, тому то було некритичним.
Станцію вже протестували, незабаром вона поїде робити справи 😎 Крута розробка, все як заводське, на відміну від звичних хлипких та так сяк зліплених на 3д-принтері кріплень та елементів монтажу. Особливо мене радує кейс, бо все FPV обладнання дуже крихке, і погнути або пошкодити антени та кабелі дуже просто.

Тестер РЕБ ще чекаємо, обіцяли відправити в середині листопада.

📻На 4 рації та 2 щогли

Було зібрано 44,816.54₴

Витрачено:
2 щогли «Плечі Атласа» висотою 10.5 м за кеш: -28,500.00₴
4 радіостанції HIMERA G1: -16,000.00₴
Комісія за платіж: -80.00₴

Всього витрачено: -44,580.00₴

Залишок: 236.54₴ переказав на збір на наземку.

🫡Щогли та радєйки теж уже передані бійцям, можете бачити їх на фото.

🇺🇦Дякую всім хто вірить у Сили Оборони та долучився до збору! Без вашої підтримки було б набагато складніше.🇺🇦

💪💰окрема подяка за потужні донати Віктору Данилюку, Ігору Бондаренко, Віталію Ратушному, Роману Бойчуку, Михайлу Глібі, Антону Страчкову. Дякуємо вам!

🫶ще одна окрема подяка моїй подрузі Лайті з БФ «Котики по-київськи» за допомогу з оплатою послуг НП, так, доставка наземки обійшлась б нам у 960.00₴. Лайті дуже багато допомагає нам з оплатою коштовних посилок🫶

😬І нарешті особлива подяка дорогому брату Георгію Кавецькому та підписникам його каналу @sampleName32 за поширення збору. Швидкого вам відновлення, пане!

✙rozho)))k✙🇺🇦

04 Nov, 07:24


100% coverage тести, які нічого не тестують

В далекому 2010 році, коли долар був по 8, я працював на ентерпрайзному проєкті разом з консультантами з компанії Thoughtworks. Тієї, звідки Мартін Фаулер, тієї, що публікує Technology Radar, за яким, ви, ймовірно стежите.

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

Консультанти звісно відразу ж прийнялись виправдовувати свій рейт у 3000$ за день роботи та заявили що для успіху проєкту неодмінно потрібно мати високе покриття тестами.

Наш код у 90% випадків виглядав приблизно так:

class Action {
public void doThing(Context context) {
ResultOne resultOne = ServiceOne.getInstance().doThing(context);
ResultTwo resultTwo = ServiceTwo.getInstance().doThing(context, resultOne);
context.setResult(resultTwo);
}
}


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

Звісно, з коробки такий код не є тестабельним, через статичні методи. Тому спочатку консультанти винесли сервіслукап в окремі методи, а згодом ми зробили там вже нормальний DI.

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

class ActionTest {
@Test
public void testDoThing() {
ServiceOne mockServiceOne = mock(ServiceOne.class);
ServiceTwo mockServiceTwo = mock(ServiceTwo.class);
Action action = new Action(mockServiceOne, mockServiceTwo);
Context context = mock(Context.class);
ResultOne mockResultOne = mock(ResultOne.class);
ResultTwo mockResultTwo = mock(ResultTwo.class);
when(mockServiceOne).doThing(eq(context)).thenReturn(mockResultOne);
when(mockServiceTwo).doThing(eq(context), eq(mockResultOne)).thenReturn(mockResultTwo);

action.doThing(context);
verify(mockServiceOne).doThing(context);
verify(mockResultTwo).doThing(context, mockResultTwo);
verify(context).setResult(mockResultTwo);
}
}


Таких тестів ми писали сотні. Цілі спринти були присвячені ретельному моканню. Каверадж відразу полетів у небеса.

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

Згодом, я зустрічав такі «тести» в інших компаніях на інших проєктах.

Формально каверадж є, а по факту ні.

Писали такі тести? Згодні з тим що вони марні чи вважаєте що все правильно нам консультанти сказали? Діліться у коментах👇

#робота
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

28 Oct, 07:24


Вітаю пані та панове.

🇺🇦Дякую всім хто задонатив на збір на FPV-наземку. Зібрали всю суму, кошти вже сплачені. У виробника в наявності зараз немає пульта, тому вартість на 10000 менше.

А тим часом маємо ще потреби: РЕБ на нижній діапазон, щоб прикрити дупи від ворожих FPV та рації з щоглами, щоб далеко і потужно летіти.

РЕБ — 2300$, радєйки з щоглами — 44500₴. І там і там вже трохи зібрано.

Choose your fighter👇

🙆‍♂️РЕБ: https://send.monobank.ua/jar/QMu8qvgAe

📻Радєйки + щогли: https://send.monobank.ua/jar/5LZU8FT9XV

✙rozho)))k✙🇺🇦

25 Oct, 06:24


Best practices та центри компетенцій в армії

Коли працював в ентерпрайзі в кінці бородатих нульових то застав розвиток так званих «центрів компетенцій» та впровадження продукту Confluence (не плутати з Confluent!). За гучними словами ховалась корпоративна вікіпедія та обов'язок розробити курс+тренінги по продукту, овнером якого я був.

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

Зараз мене надзвичайно дивує та засмучує відсутність адекватної системи передачі знань та впровадження рішень які працюють у війську.

Робота з системами, які, фактично з'явилися посеред війни, кожним підрозділом вивчається заново, заново набиваються ґулі, заново розробляються велосипеди.

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

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

Так само з іншими складниками  — чому не беруть бригаду яка показує результат, та не переносять її досвід на інші?

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

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

Питання є, відповідей немає, час плине, а ми й далі знову й знову робимо від 0 до 1.

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

23 Oct, 06:24


Про розформування ІТ-галер

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

Інакше є ризик що заняття вам придумають за вас, і воно не обов'язково вам сподобається.

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

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

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

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

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

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

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

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

21 Oct, 07:02


Продовжую збір на наземну станцію для FPV.

💰Залишилось 40 тисяч грн

Банка: https://send.monobank.ua/jar/57b4fs7ARj
Приват: 4627055113374002
PayPal: [email protected]

🇺🇦

✙rozho)))k✙🇺🇦

18 Oct, 06:24


Армійські cost та revenue центри

Завжди наголошував що айтівцю-вонабі-кабанчику потрібно знаходитися якомога ближче до клієнта. Бути тим, хто генерує прибутки, а не витрачає. Хендс-он-солюшен-архітектор, який вміє сам запрограмувати демку та продати її клієнту — без одного звільнення🐗, а девопс, ім'я якого CEO згадує лише коли до нього доходить ескалація інциденту на продакшені — це cost centre, який першим піде під ніж скорочень.

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

Через це ми повільно відступаємо.

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

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

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

Історія з нещодавнім розформуванням ІТ-підрозділів якраз дуже проста. Хтось подивився що в штаті є ціла купа людей, які займаються незрозуміло чим і порушив питання щодо перетворення cost на revenue, та й все.

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

Що з цим робити? Вже нічого, всі таймслоти та можливості пройобані, а нам залишається лізти в помиральну яму.

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

17 Oct, 06:24


🇺🇦Військова служба за контрактом — свідомий вибір кращих!🇺🇦

Армія — не хуй!
Служи, кайфуй!


💀Нагадую — список правильних підрозділів для служби.

✙rozho)))k✙🇺🇦

16 Oct, 06:24


R&D на війні

Коли я йшов до війська то мав план — зробити біля підрозділу R&D відділ який буде розробляти, впроваджувати та масштабувати технічні рішення.

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

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

Здавалося, що зсередини можна робити все значно ефективніше.

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

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

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

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

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

#армія #війна
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

14 Oct, 06:24


Збір на станцію керування TORO Partyphone для екапіжу РУБпАК

Пані та панове! Моїм друзям — екіпажу ударних безпілотників для ефективної роботи потрібна якісна та надійна станція керування.

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

Якісна наземка це стабільний зв'язок, зручне транспортування та уражені цілі💥

Комплектація яка нам цікава вартує 165000₴🥵
Можна було б взяти ще один бус, але бус завдяки вам вже є.

Банка: https://send.monobank.ua/jar/57b4fs7ARj
Приват: 4627055113374002
PayPal: [email protected]

Дякую всім за допомогу!

P.S.: я отримав статус волонтера від монобанку, тому зарахування на банку не будуть враховуватися у ваш ліміт витрат.

✙rozho)))k✙🇺🇦

04 Sep, 06:24


Звіт по збору на бус для екіпажу аеророзвідки

Пан Дмитро задонатив 204,005.84₴
Дозібрано на каналі та через @donate1024bot 151,851.45₴

Всього зібрано: 355,857.29₴

Витрати:
Транзакція передплати: -205,000.00₴
Транзакція післяплати: -151,000.00₴
Повернення тисячі грн, бо я провтикав і заплатив більше: 1,000.00₴

Всього витрачено: -355,000.00₴

Залишок: 857.29₴, піде в наступний збір.

💰Гроші за бус я переказував на банку волонтерів які їх приганяють. Випадково кинув на тисячу грн більше, бо забув що перша транзакція була не 204 а 205 тисяч, то мені їх повернули.

🥲Бус чекав поки панове аеророзвідники повернуться з задачі, а потім став на СТО😅, бо шось трохи не так заводиться як треба. Але то вже проблеми які вирішуються власним коштом. Чергове нагадування що навіть якщо заплатиш нормальні гроші, то стан не обов'язково буде ідеальним😕 і кожен корч потім треба ше доводити до кондиції.

🛠Ще туди треба встановити сидіння, я покатався по розборках, але нічого толкового не знайшов, будемо шукати ще. Хто може посприяти в пошуку сидіння-трійки на T5 — буду вдячний.

🤝Дякую пану Дмитру за потужний (no pun inteded) донат! Дякую всім хто долучився до збору!🇺🇦

P.S.: Зі звітом забарився аж на місяць бо все хотів зробити класні фотки з літачками та валізами для них, але то одне то інше то третє🫨

✙rozho)))k✙🇺🇦

02 Sep, 06:24


Відвідав DOU Day Picnic

Цієї суботи DOU провів на території Unit City нетворвкінг-івент DOU Day Picnic. Там була запланована велика програма: стендап, дискусії, стенди мілтек-компаній, військових бригад, фондів та компаній, фудкорт та різноманітні розваги.

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

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

Втім в день проведення я все-таки зміг порішати питаннячка та забігти туди на годинку в обід та приєднатися до панельної дискуії ввечері.

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

На вході зустрів пана Климова, але той не мав часу, тому тільки привіталися, всередині вже побачив Бабіча з Бабічатами та перекинувся з ним кількома словами. Пройшовся біля 3д-принтерної суєти Романа Лютикова. Мене впізнали двоє підписників, пану Данилу привіт. Решту часу провів у розмові з біздевом компанії Himera, чиїми радейками ми користуємося, та й побіг у справах.

Ввечері приїхав вже на свій виступ. Я складав компанію серйозному дядьку з 95 ОДШБр та двом поважним панам, наскільки я зрозумів, головним по розробці ІТ-продуктів в МО.

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

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

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

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

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

❤️Дякую ДОУ за організацію й класний подаруночок, та чудовим Марії Дубініній та Віці Осиповій за запрошення❤️

#події #війна
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

21 Aug, 06:24


Обісрався з Wi-Fi роутером

Рік тому коли геть втомився від мікротіку, звернувся до громади за порадою який роутер брати. Люди звісно радили все підряд, у кого що стоїть. Але ж я багатий айтівець! Тому вирішив гуляти на всі гроші, по-багатому та обрав кубик Amplifi HD з двома антенками за 8500₴(!). Приніс додому увімкнув і отримав 100 мегабіт замість тисячі. Я думав то тимчасова поломка, але насправді весь час роутер постійно скидав аплінк на провайдера до 100. Допомагали тільки ребути. На форумах я знайшов людей з такими ж проблемами, але рішення не було. Офіційного сервісу в Україні здається теж немає.

Коли почалися відключення світла, то я спробував зробити ДБЖ на мінімалках. Роутер живиться через Type-C, тому без перехідників працював від повербанка. Я купив повербанк де була заявлена наскрізна зарядка, та під'єднав його.

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

Терпець урвався, тому я знову взявся до вибору роутера. Почитав відгуки там, сям, подивився OLX, бо я беру тільки вживане залізо, та й зупинився на TP-Link Archer AX23. Знайшов такий за 1600₴, написав, поїхав, забрав, приїхав, увімкнув, налаштував.

Все запрацювало відразу (логічно), роутер без проблем вхопив гігабіт, і не збивав до 100, ніяких дурнуватих налаштувань «апаратного NAT» робити не довелось, а швидкість виявилась в півтора-два рази вищою ніж на оврепрайcнутому шматку лайна від Ubiquiti.

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

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

#інструменти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

19 Aug, 06:24


Куди рекрутуватись у 2024

Вітаю панове військовозобов'язані!

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

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

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

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

Вам потрібен підрозділ з мотивованих та підготовлених людей. Як відомо, з мотивацією та підготовкою у звичайних мобілізованих є певні проблеми, тому нас цікавлять підрозділи де 1) проводять який-не-який відбір та 2) якісно готують.

В ЗСУ/НГУ з тих бригад про які мені відомо це звісно 3 ОШБр та 12 БрСпП «Азов».

Але служити можна не тільки в ЗСУ. Крім цього у нас воюють спецслужби: СБУ та ГУР. У спецслужбах ретельніший відбір, краще забезпечення, вища зарплатня та очевидно спеціальні завдання, а не просто багатомісячне утримання ділянки фронту. Зараз людині з вулиці набагато простіше потрапити у ці структури, тому не втрачайте можливості!

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

СБУ — телеграм канал — сайт, там є посилання на анкету для вступу в ЦСО «А»

ГУР:

загальний сайт з анкетою
Артан — телеграм канал — сайт
Братство — телеграм канал — сайт
Реванш — телеграм канал — сайт
Химера — інстаграм
Шаман — сайт
Кракен — телеграм канал
Афіна — телеграм канал
Стугна — телеграм канал

Особенное предложение для граждан рф и этнических русских:
РДК — телеграм канал — сайт

ЗСУ:

3 ОШБр — телеграм канал — сайт
108 ОМБ «Вовки Да Вінчі» — телеграм канал — сайт
92 ОШБр, батальйон БпАК «Ахілес» — телеграм канал — сайт
414 ОПУБАС — телеграм канал
Сили безпілотних систем — сайт
ССО — телеграм канал — сайт

НГУ:

12 БрСпП «Азов» — телеграм канал — сайт

---

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

Але у вас, айтівців, все ж є хороші шанси попасти в БПЛА, рер, аналітики, зв'язківці.

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

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

Думайте, пересилайте друзям, знайомим та колегам. Якщо знаєте ще хороші підрозділи — пишіть у коментарі, я додам.

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

06 Aug, 06:24


Performance by design

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

Зазвичай все що я пишу на Java то роблю на Spring Boot, через багату та зрозумілу екосистему та відносну швидкість розробки.

Цього разу для загального розвитку взяв vert.x, який заявлений найшвидшим Java-фреймворком згідно з результатами Ultimate Web Frameworks Benchmark.

Мій проєкт складається лише з двох ендпоїнтів — /health для перевірки чи все ок та /api/screenshots власне для скриншотів, тому бойлерплейту було мінімум.

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

Thread Thread[vert.x-eventloop-thread-0,5,main] has been blocked for 2031 ms, time limit is 2000 ms

Якщо ж час обробки перевищує хард-ліміт, то ліба викидає експешн:

io.vertx.core.VertxException: Thread blocked
at java.base/java.lang.Thread.sleepNanos0(Native Method)
at java.base/java.lang.Thread.sleepNanos(Thread.java:491)
at java.base/java.lang.Thread.sleep(Thread.java:559)
at java.base/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446)
at me.rozhkov.snapshottr.App.handleScreenshotRequest(App.java:79)


При цьому код продовжує працювати, але експешн буде в логах.

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

Я завжди виступаю за sane defaults, бо в сучасному світі занадто багато опцій, варіантів, прапорців, та перемикачів, щоб конфігурувати то все кожного разу.

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

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

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

Пишуть що Premature Optimization is the Root of all Evil, але я з цим не погоджуюсь. Нормально роби — нормально буде, і для цього не треба витрачати надмірно багато часу та зусиль. Просто з початку задайте собі адекватні обмеження та дотримуйтесь їх.

☝️Практична порада

👉Подивіться чи підтримує ваш фреймворк схожу функціональність та увімкніть її.

#інструменти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

05 Aug, 06:24


Телеграм-бот для скриншотів твітера

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

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

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

ШІ швидко підказав потрібний код:

def screenshot(link)
browser = Ferrum::Browser.new({browser_options: {'no-sandbox': nil}})
begin
browser.go_to(link)
browser.network.wait_for_idle(duration: 2, timeout: 30)
path = "tmp/tweet_#{Time.now.to_i}.jpeg"
browser.screenshot(path: path, selector: 'article[data-testid="tweet"]', quality: 95, format: "jpeg")
path
rescue StandardError => e
Rails.logger.error("Error capturing screenshot: #{e.message}")
nil
ensure
browser.reset
browser.quit
end
end


За 5 хв протестив локально — все працює як треба! Заливаю, не працює. WTF?

Починаю розбиратися. Спочатку думав що проблема в alpine на якому зібраний базовий образ. Потім думав що проблема у твітері який блокує запити. Потім в, тому що недостатньо пам'яті. Потім в, тому що браузер закривається. Перевів з альпіну на дебіан, переконався що курли на твітер з хоста проходять, додав пам'яті, зробив браузер перзистентним.

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

Врешті я здався і вирішив переписати все на Java. ШІ швидко підказав потрібний код на Selenium:

driver.get(url);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
WebElement element = driver.findElement(By.cssSelector(cssSelector));
File screenshotFile = element.getScreenshotAs(OutputType.FILE);


Я нашкрябав вебсервіс який би виставив ендпоїнт до інтернету.  З минулого разу я згадав про Ulitimate Web Frameworks Benchmark, і такий думаю, давай не буду брати Spring Boot, а візьму vert.x. Сказано—зроблено—задеплоєно. Запускаю — не працює😅

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

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

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

Потім подивився що скриншоти треба в рамку, бо телеграм їх обрізає по висоті. Додав паддінгу 50px та й вспокоївся.

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

Бот — @chat_keeper_bot. Ви можете додати собі його в будь-який чат, і він теж буде працювати.

#проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

30 Jul, 06:24


Пілоти та штурмани до-GPSних часів

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

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

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

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

У вас немає детальних супутникових знімків, лише топографічні мапи.

Дивовижно!

А як робили нічні вильоти(🤯)? А як накладались маневри при зіткненнях з винищувачами противника? А якщо попав у хмари?

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

Цікаво, як працювали штурмани-пращури? Теж такі «о, озеро в формі х*я, значить ми тут, потрібно зміститися східніше»?

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

Дивовижно!

P.S.: зрозумів чому навігаторам у фантастичних всесвітах (Дюна, WH40k) відведена така важлива роль.

#спостереження
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

29 Jul, 06:24


Жалюгідний стан українського ТҐ — дрібні канали та ТҐ-верс

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

В навколоайтішних, але не програмістських каналах я не шарю. Читачі, підказуйте, чи є в нас круті QA, дизайнери, продакти, маркетологи, редактори, фаундери?

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

upd: ще канали про які я не знав:

🔥Кіт і Лампа — найближче до того що я маю наувазі, топ канал.
Kito San News — був СТО став військовим, хороший контент
Юра Пузіченко, він же «Пан Пузіч» подає надії! Пише регулярно.
🔥Стендап Сьогодні — топ, мінімум форвардів та ютубів, максимум власного контенту
Мамкін Архітектор — теж непогано
Євгеній Гизила — туди ж, але пише нечасто
Роздуми Спрощенця — забив на канал
Алекс про усе — постить в основному меми
igoro.pro — канал з одним постом та одним підписником. Сподіваюсь автор не заб'є!

Є ще декілька каналів, я вирішив зібрати все в одній купі та зробив каталог: https://blogigram.com. Старі підписники пам'ятають цей проєкт, з якого я колись хотів робити зручну-телеграм читалку лонгрідів, але не доробив. Шкеритись від орланів та зал у посадці — не писати код, і я звісно дуже сумую за програмуванням тому реанімував проєкт і планую потроху його розвивати поки телеграм не закриють.

Якщо ви знаєте ще якісь авторські канали, то пишіть в коменти — додам до списку.

P.S.: сам початковий список я взяв у автора каналу import __hello__. Дякую за підбірку!

#мета #проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

26 Jul, 09:24


Жалюгідний стан українського ТҐ (та ІТ)

Надзвичайно засмучений тим що у в українському навколоайті телеграм просторі немає контенту.

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

Чому так? Декілька гіпотез:

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

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

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

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

- ТҐ не є популярним, всі пишуть на лінкедін/фейсбук/твітер

- Насправді в нас багато крутих авторів, але я про них не знаю.

Українське ТҐ тягнуть на собі півтори каліки. Більш-менш стабільно пишуть тільки Бабич та я. І то, в Бабича половина постів це анонси стрімів та інших відео, друга половина це збори й тільки третя половина це текстовий контент. Решта здулися:

- Соловйов продався корпорації та не має часу — фіксить численні баги метабейзу

- Осипенко підняв лям грошей і не має часу — пише промпти

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

- Лучків напевне зайнятий — знайшов великий проєкт

- Іщенко щось писав, але не в тг, та дуже швидко здувся і перейшов в подкаст

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

- Миколайченко крутить поди та апгрейдить кластер на новий мережевий стек і не має часу писати

- Меньшиков мав класний канал, але давно на нього забив, а як війна почалась то взагалі нічого не писав

- Турський постить тільки анонси відосів на своєму ютубі

Канали поза категорією:

- Фрілансер по жизні — бізнес, там одні анонси відео та курсів

- Німчинський — бізнес, записує відоси, а тексту майже не пише

- Малєєв — пише часто, але в основному це реакції на новини/події, а не власні кулсторі

- Довгополий — пише активно, але в основному це реакція на якісь події, завуальовані звіти про діяльність та скарги на втому від тривалих поїздок за кордон (first world problems гггг). Я б його не відносив до категорії ІТ, але для порядку в списку є.

Продовження про дрібніші канали та каталог українського ТҐ — наступного тижня, бо не влізає в ліміти.

#мета #проєкти
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot

✙rozho)))k✙🇺🇦

22 Jul, 06:24


Продовжую збір для екіпажу аеророзвідки

upd: збір завершено, дякую всім!

🥹Вашими зусиллями вдалося зібрати 100k та користувачі @Donate1024Bot досипали ще 30-ку.

🤌Залишилося зовсім небагато: 20k

Банка: https://send.monobank.ua/jar/ACgJSssRbj
Приват: 4627055113374002
PayPal: [email protected]

🙏Дякую за підтримку!

✙rozho)))k✙🇺🇦

18 Jul, 06:24


Dogfooding у вітчизняному мілтеку

Одна з великих проблем вітчизняного мілтеку — це відсутність нормального догфудинга.

Наприклад є така програма «Кропива». 99% юзкейсів Кропиви — це поділитися координатами. Для цього розробники зробили т.зв. «Тенета», якими звісно ніхто не користується, бо ненавчений.

Ви б знали як передають ті координати! Найчастіше — скидують в сігнал фотку(!) екрана планшета з Кропивою де в куточку є кори. Отримувач бере то фото, парсить кори й забиває вручну на своєму планшеті.

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

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

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

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

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

В тому ж комплексі для управління камерою є декілька хоткеїв: подивитися вліво під 45, вправо під 45, та прямо під 45. Але немає просто «подивитися прямо» та «подивитися вниз на 90»! А ці функції дуже важливі. Зараз оператору доводиться тиснути «прямо під 45», а потім вже вручну доводити камеру вверх на 0 або вниз на 90, це просто неймовірно харить.

Якби програміст UI провів би хоч десяток бойових вильотів, то він би собі набрав беклогу на рік вперед.

Це все дрібні ергономічні фічі, але в сумі вони дають потужний кумулятивний ефект. Ніби все ок, але там недороблено, там треба якось вивертатися, там робити додаткову роботу.

Я вже мовчу про неконсистентність у розмірах та видах шрифтів.

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

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

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

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

#армія
permalink | @full_of_hatred
👇Щоденні донати💰на ЗСУ🪖
🫡@Donate1024Bot