Минутка просвещения

Читать в телеге. Когда-то там были посты не только от меня.

Swift

На неделе немного “поразвлекался” со Swift 6 и больше что-то не хочу. Напрягли меня следующие моменты:

  • Очень тяжело поставить старую версию. Зачем мне это надо? Протестировать обратную совместимость.
  • Linux идет нафиг с мажорными багами на двустрочный код.
  • Собственные фреймворки Apple (например, XCTest для тестов) тупо не совместимы со Swift 6. Конкретно для фреймворка тестов есть замена (тоже от Apple), но это верно не для всех.
  • Как тебе такое, Илон Маск?
    $ xcodebuild -showsdks
    ....
    
    macOS SDKs:
        macOS 14.0                    	-sdk macosx14.0
        macOS 14.0                    	-sdk macosx14.0
    
    думаете, это одинаковые SDK? Разумеется, нет :/ И это те самые два SDK, один с пиками.

В целом — ожидаемо, конечно, это экосистема Apple, изволь все делать на последнем Маке с последними версиями ПО, и твои пользователи должны делать то же самое или идите нафиг все. Но очень легко что-то (случайно) обновить и дороги назад уже не будет. Такая разработка дорога как для кошелька, так и для нервов :/

СсылкаКомментировать

Адаптивная архитектура

Классный доклад про “противопоставление” “гибких методологий” и архитектуры. Начинается с разбора популярной боли во всяких скрамах-аджайлах: полная шляпа с архитектурой и связанными решениями. Но по ходу доклада вырисовывается картина, когда можно совместить качественную архитектуру и гибкие методологии.

Один из ключевых моментов — важность общего языка для обсуждения и документирования архитектуры. Рассмотрены минусы UML (“очень сложно, до свидания”) и плюсы C4 (общие абстракции без фокуса на обозначениях) — в целом коррелирует с моим опытом. Визуализация и документирование необходимы для рефлексии, чтобы задумываться и как-то осознанно подходить к проектированию, а не махать в воздухе руками.

Помимо этого есть интересная идея о применении аналога планнинг-покера для оценки рисков архитектуры, подсвечена польза ADR и под конец есть рассуждения о том, как понять, сколько времени инвестировать в проектирование.

СсылкаКомментировать

Автогенерация субтитров с помощью Whisper

Захотелось посмотреть что-нибудь простенькое на сербском с сербскими субтитрами. (Внезапно) оказалось, что это тебе не русский, на котором есть все в 5 озвучках и с 10 видами субтиров скачать FullHD без регистрации и смс. Если озвучку еще можно найти, то субтитры — нереально (даже если искать, например, хорватский, который на 99% такой же).

Решил изменить подход — найти какую-нибудь утилиту для транскрибирования и автоматом перевести звук в текст. Ну это ведь сейчас каждая колонка умеет, правда же? *падме.жпг*. Почти сразу вышел на Whisper от OpenAI. Есть и другие варианты, но половина из них не поддерживает сербский, и многие заброшены.

Раз это ИсКуСтВеНый ИнТеЛеКт, то и задачку подберем поинтереснее — Сунђер Боб Коцкалоне! Там почти все гнусавые, но это ж ИИ, наверняка должен понимать контекст и все такое, а я этот мультик не смотрел никогда, проникнусь наконец богатым источником шаблонов для мемов…

На удивление, никаких токенов и регистраций для использования не нужно, все можно запустить локально. Установка скачивает пол-интернета, но зато утилита запускается элементарно:

whisper SundjerBob0101.mp4 --language Serbian --output_format srt --model large

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

На выбор есть несколько моделей. Маленькая — вообще ни о чем, в средней даже я со своим уровнем “А минус 1” вижу косяки. Казалось бы, большая модель, да еще с явным указанием языка, должна работать хорошо (тем более что работает она весьма не быстро), но результат разочаровал. Некоторые фразы транскрибированы лучше, некоторые хуже по сравнению со средней моделью. В добавок к этому, местами текст пропадает совсем, местами появляются цифры, иероглифы или просто мусор. Текст постоянно переключается с кириллицы на латиницу (что считается неприличным). Самое разочаровывающее — есть слова, которых нет в языке вообще. Т.е. эта шляпа не просто не держит контекст, она даже по словарю не смотрит слова. Не получится взять субтитры за основу, чтобы поправить немного ошибок.

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

Еще я попробовал pyTranscriber, который использует Google API под капотом. Результат чуть похуже, но в разы быстрее. Но главный минус — не ставит тайминги, и результат — это просто текстовый файл.

В общем, распознавание речи выглядит все еще не до конца решенной проблемой.

СсылкаКомментировать

Способы предотвращения ошибок управления памятью

Хорошая статья про то, какие существуют способы предотвращения ошибок управления памятью. Лирику про гримуары можно пропустить. Еще статью можно использовать как указатель на кучу малоизвестных языков программирования, в которых экспериментируют со свежими идеями.

СсылкаКомментировать

Не надо быть перфекционистом

В последнее время наткнулся на несколько статей, связанных с перфекционизмом:

  1. Как заканчивать (пет) проекты — чисто жиза:/ Определите цели и что надо заранее, нет перфекционизму — “и так сойдет”, имейте дедлайн, заканчивайте маленькими кусочками, не бросайтесь пилить свежую идею, а дайте ей отлежаться, отмечайте победы и спихните часть работы на кого-нибудь.
  2. Fuck “Founder mode” — всем насрать, делай нормально, а не идеально, не надо быть “гением”.
  3. Care Less About Work — всем насрать на продуктивность, и если всегда будет делать как “правильно”, ничего с этого не поимеешь, кроме нервов. Делай, что просят, но не более, не стоит оно того.

Короче, надо меньше париться и беречь нервы:) Вроде очевидно… Хотя мне все еще чаще всего приносит удовольствие именно улучшать процессы (обычно те, которые не просили) и видеть, что стало лучше. Но для достижения успеха нужна либо хорошая команда, либо относительная автономность.

СсылкаКомментировать

Улучшение streams

Классный доклад про будущее API streams (которое нужно для изменения коллекций в функциональном стиле). Рассмотрены фундаментальные штуки, сформулированы требования и обозначены трудности наивных подходов. Ну и представлено новое API из JEP, которое удовлетворяет требованиям и планируется в JVM 24.

Выглядит помощнее того, что есть в Котлине. Бойлерплейт все еще торчит, но выглядит более гибко и продумано. Насчет Scala — не знаю, там из коробки дорого-бохато, и что-то свое относительно нетрудно добавить. Но для Java — это просто космос.

СсылкаКомментировать

Генерация классов в Java: ASM и Class-File API

Неплохой технический доклад про различные способы генерации классов Java во время исполнения. Рассказано в том числе про то, как работают всякие прокси-классы в Spring и Hibernate, а так же новое API для этого в свежих JVM.

СсылкаКомментировать

"Поиск" по научным статьям

В продолжении темы про мертвый поиск. Еще даже до написания того поста у меня была идея (вполне очевидная), что было бы прикольно написать поисковик по “достоверным” источникам (научным статьям, википедиям, официальным документациям и т.п.) и, возможно ссылкам первого уровня из них. У идеи куча минусов, но, казалось, что она будет работать лучше в некоторых сценариях, чем “обычный” поиск.

Поскольку эта идея не очень оригинально, кто-то это уже сделал — consensus.app.

Consensus is an AI-driven search engine that specializes in extracting and condensing scientific insights from peer-reviewed sources. The goal is to democratize access to expert knowledge and make science more approachable.

Звучит отлично! Жаль, что не работает:

Что самое грустное, даже каких-то приколов и смешнявок не получилось сделать — я попробовал позадавать еще всякие “спорные” вопросы, но на многие из них поисковик говорил, что либо недостаточно данных, либо что “нужен нюанс” и “наши модели обнаружили сложный вопрос недостаточно точны чтобы дать ответ”.

На нормальные вопросы я получал так себе ответы, которые не сильно отличались от “обычных” результатов поисковика.

СсылкаКомментировать

Сборник бесплатных API

https://www.freepublicapis.com/. В основном всякий мусор и что-то локальное, но есть и полезные вещи. Несколько примеров:

Впрочем, с учетом того, что сайтик попал в топ HN, есть небольшая надежда, что со временем там появится больше полезных ссылок (сейчас там 246).

СсылкаКомментировать