Привет, Хабр! Давно меня тут не было. Программирую уже 15 лет, а писать сюда перестал - сказать было что, но загруженность проектами не оставляла времени. В этот раз хочу рассказать вам историю о том, как поиск "нормального" учёта финансов привёл меня к разработке собственного сервиса и к покупке загородного дома, который раньше казался недостижимой мечтой.
Сразу оговорюсь: это не рекламный пост. Я не буду убеждать вас, что мой сервис - единственно верный. Я хочу показать, как устроена логика, которую я проверял на себе, и предложить вам попробовать её на своём опыте. А заодно честно расскажу, почему я вообще решился превратить "эксельку" в приложение.
С чего всё началось: проблема, которую не решали "готовые" решения
Я перепробовал, наверное, всё: "Дзен-мани", CoinKeeper и кучу других приложений. И понял что они не дают ясной картины будущего. Они отлично показывают, куда ушли деньги в прошлом, но не отвечают на главный для меня вопрос: "А что будет через месяц, через полгода?"
Я видел, сколько потратил вчера, но не видел, что через два месяца мне предстоит крупный платёж и что если я сейчас не сбавлю обороты, то к концу месяца снова останусь с пустым счётом. Классика: каждая трата по отдельности кажется нормальной, а в сумме - минус.
Решение родилось в Excel - и это не шутка
Я начал искать алгоритм для себя - не приложение, не SaaS - просто пытался понять, как управлять деньгами так, чтобы всегда видеть горизонт и постепенно в Excel выкристаллизовалась модель, которая работает.
Читать далееДелал интерактивную открытку на день рождения и хотел, чтобы картинка не просто появлялась, а «рисовалась»: сначала карандашные линии, потом по касанию её заливает акварель, причём с рваным краем, как у краски, которая впитывается в бумагу.
Готовых решений под такое не нашёл. Видео не подходило: нужна была реакция на тап и чёткость на любом экране. В итоге всё собралось на чистом SVG, паре фильтров и небольшом количестве JS. Ниже разбираю по шагам, с кодом и граблями, на которые наступил.
Читать далееМожно ли запустить настоящие языковые модели на списанной FPGA за $50 - без NVIDIA? В первой части я запустил Qwen, а теперь разобрал openTPU до RTL, собрал прошивку в Vivado и проверил 8 нейросетей в 165 запусках.
Покажу реальные замеры, устройство кристалла, грабли и почему добавление умножителей не решает проблему. Спойлер: в ту же стену памяти сейчас упираются и дата-центры за миллиарды.
Читать далееВ этой статье я честно делюсь личным опытом интеграции Claude Code и Gemini Notebook через неофициальные библиотеки. Разбераю архитектуру этого решения, сталкиваюсь с неизбежными костылями автоматизации и отвечу на главный вопрос: где заканчивается реальная польза и начинается избыточное усложнение.
Читать далееВ мире по сей день используют разные системы летоисчисления. Так, в еврейской традиции счёт лет ведут «от сотворения мира» 7 октября 3671 года до нашей эры, а у мусульман сейчас 1448 год со дня Хиджры, когда пророк Мухаммед повёл своих сторонников из Мекки в Медину, и для обеих традиций очень важную роль сохраняют именно лунные месяцы. Однако главным общемировым стандартом уже не первый век является григорианский календарь, ведущий отсчёт от Рождества Христова — или, в более светском варианте, «от начала нашей эры». Григорианский календарь настолько общепринят и привычен для современного человечества, что даже в КНДР в 2024 году отказались от летоисчисления эры чучхе с года рождения Ким Ир Сена в пользу общемирового стандарта. Однако так было далеко не всегда. В христианском мире большую часть его истории использовался доставшийся от Римской империи юлианский календарь, введением которого вместо громоздкой, сложной и даже чреватой коррупцией древнеримской системы мы обязаны лично Юлию Цезарю и его преемнику, первому императору Октавиану Августу. Правда, с самого начала в нём был заложен баг, проявившийся лишь со временем.
Читать далееТеперь каталог живёт в HTML и CSS: текст, таблицы и схемы лежат в одном проекте и правятся вместе, PDF получается печатью из браузера. CorelDRAW остаётся только на полиграфическую доводку. Насколько это проще, видно по предыдущему каталогу: 35 страниц, текст и таблицы через Word, схемы через Inkscape, макет в CorelDRAW — и каждая правка означала новый экспорт и повторную ручную доводку. Что дал этот странный подход и чем пришлось заплатить.
Читать далееМы разделили Tuna на два слоя. Точки входа на Envoy принимают трафик, туннельные ноды держат подключения клиентов. И те и другие разнесены по дата-центрам двух провайдеров в России, Германии и Нидерландах. Отказ сервера или целого дата-центра теперь означает переподключение за секунды, а не простой. Регион выбирать больше не нужно, а вебхуки от Telegram доходят до туннеля, где бы ни работал клиент.
Читать далееПосетитель открыл товар A. Граф предлагает B, похожее описание — C, изображение — D. Как собрать из этих списков рекомендации, не складывая баллы с разным смыслом?
На примере работающего проекта на Coveo показываю весь путь: исторический граф товаров, готовые векторы описаний и изображений, до 300 кандидатов и ранжирование с LightGBM. Разбираю квоты источников, пропуски в признаках и парное обучение — включая случай, когда купленный товар вообще не попал в кандидаты.
Модель уже обучена, качество измерено, рекомендации доступны через локальный HTTP API. В статье — устройство системы, результаты сравнения с простыми методами и ограничения этих выводов. Код и инструкция воспроизведения открыты.
Как собрать 20 рекомендаций8-11 октября после атак беспилотников пострадали три дата-центра Яндекса: Сасово, Калуга и Владимир. 11 октября Яндекс отключил в веб-версии Диска скачивание папок, альбомов и нескольких файлов сразу. У меня на Диске 1,8 TB файлов и еще около 160 GB фото в безлимите. Терять это не хочется, так что я сел делать бэкап.
План был простой: rclone, VPS в Нидерландах, Google Drive на 2 TB. На деле почти каждый шаг уперся в какую-то особенность Яндекса. Ниже по порядку: что сломалось, какие цифры получились и как обошел. Скрипты и инструкции выложил на GitHub, ссылка в конце.
Читать далееАстрономы обнаружили невиданный прежде тип «планеты‑феникса», возродившейся из пепла умирающей звезды. Открытие, которое учёные назвали «совершенно неожиданным», позволяет предположить, что в космосе могут скрываться и другие подобные возрождённые миры. Кроме того, оно может дать представление о будущем нашей Солнечной системы.
Безымянную экзопланету обнаружили на орбите белого карлика HS 0209+0832, расположенного примерно в 270 световых годах от Земли. Белые карлики представляют собой звёздные остатки, которые иногда называют «звёздами‑зомби». Они образуются после того, как красные гиганты исчерпывают запасы топлива и в конечном итоге сжимаются до небольших плотных объектов. HS 0209+0832 — особенно молодой белый карлик, температура которого всё ещё достигает около 35 000 градусов Цельсия. Это указывает на то, что превращение произошло в последние несколько миллионов лет.
Ранее учёные обнаружили в спектре HS 0209+0832, который впервые наблюдали с помощью космического телескопа «Хаббл» в конце 1990-х годов, несколько неожиданных тяжёлых элементов. Среди них были алюминий, титан и никель. Обычно такие элементы не встречаются в белых карликах, поэтому их присутствие указывало на необычные процессы. Однако до сих пор данных было недостаточно, чтобы установить их природу.
В новом исследовании, опубликованном 5 октября в журнале Nature Astronomy, учёные более подробно изучили HS 0209+0832. Используя модернизированные приборы «Хаббла» и данные других обсерваторий, команда получила более детальный спектр звезды‑зомби. Он выявил высокие концентрации дополнительных тяжёлых элементов, включая цинк, медь и ниобий, который прежде никогда не обнаруживали в белых карликах.
Читать далееЛюбой человек, который интересуется освоением космоса, знает дату 20 июля 1969 года: человек впервые ступил на Луну. Правда, лишь чудо спасло нас от первой лунной катастрофы, и у этого чуда есть автор — Маргарет Гамильтон.
Дело в том, что за несколько минут до посадки «Аполлона-11» бортовой компьютер начал выдавать сигналы тревоги 1201 и 1202. Ни Нил Армстронг, ни Базз Олдрин не имели никакого представления, что это за сигналы: вероятность их появления была практически нулевой. Сигналы свидетельствовали о том, что компьютер перегружен: механизмы планирования задач не могли выполнять свои функции, задач было слишком много, и они полностью исчерпывали вычислительные ресурсы. Радар сближения начал передавать информацию в колоссальных объёмах, хотя она совершенно не требовалась. Официальная причина — непреднамеренное переключение тумблера одним из астронавтов, но причина на самом деле не важна. Ведь было лишь два варианта: либо прерывать миссию, либо рисковать главным для Соединённых Штатов космическим событием эпохи. И американские астронавты выбрали… ничего не делать.
Всё потому, что само программное обеспечение выполнило перезапуск с контрольной точки: очистило очередь процессов, сохранило все критически важные задачи и отбросило менее приоритетные — без участия инженеров с Земли или астронавтов. Несмотря на ошибку, было получено прямое разрешение на продолжение посадки, и Луна была покорена.
За этим покорением стоит множество людей, но человеком, предвидевшим невозможную ошибку и то, что на неё нужно реагировать, была Маргарет Гамильтон — математик, программист, инженер. Её чаще знают как автора кода для лунной миссии, но она была одной из тех, кто развивал проектирование систем, способных пережить любые ошибки, в том числе и те, которые, как тогда считалось, человек просто не может совершить. В некотором роде Маргарет действительно спасла космическую программу своего времени, после чего вошла в число серьёзных мыслителей, которые рассматривали программное обеспечение как полноценную инженерную дисциплину, и посвятила всю жизнь развитию этой дисциплины.
Этот текст будет посвящён истории жизни Маргарет Гамильтон, математика, программиста и инженера, которая недавно покинула этот свет. Многие знают её лишь как автора кода для лунных миссий, но лишь одной «луной» её жизнь не ограничена. И начать, как обычно, стоит с детства, ведь именно там чаще всего закладывается путь людей, что меняют мир, особенно с учётом того, что сама Маргарет с удовольствием вспоминала о нём.
P.S. Я не планировал выпускать этот текст до отдельного материала про SAGE и чётких связей с лунной программой, но обстоятельства порой сильнее. Маргарет покинула этот мир, прожив солидные 90 лет, и прожила их ярко, хотя, к сожалению, несколько скрытно от посторонних глаз. Так что этот текст посвящён её жизни сразу в двух смыслах слова.
Всем привет, с вами Сергей Ковалёв, менеджер выделенных серверов в Selectel. Сентябрь снова радует нас анонсами железа. Huawei и Alibaba с разницей в пять дней показали планы по ИИ-ускорителям, Fujitsu представила ARM-процессоры MONAKA, а NVIDIA и AMD без пресс-релизов пополнили каталоги. Ниже обзор рынка за месяц: от модулей памяти на 512 ГБ до ускорителей, которые обходятся без HBM.
Читать далееПро свет и тьму мы поговорили в прошлой статье, а сейчас, раз уж мы вышли на свет, давайте поговорим про соблазн и соблазны, но придется немного пошалить, иначе тему раскрыть будет невозможно.
Статья, как и в прошлый раз взялась из-за того, что я не нашел ответ на вопрос почему Apple пошли от яблока Ньютона до яблока раздора. Написано все что угодно, но при чем тут яблоки и почему именно яблоки я не нашёл.
Читать далееАвиакатастрофа 27 марта 1968 года явилась следствием состояния здоровья Серёгина В.С., несовершенства эргономики расположения приборов самолёта и возникновения иллюзии у Гагарина Ю.А. при входе в облачность.
Читать далееЯ провожу существенную часть рабочего дня на встречах и обсуждениях. Когда родился ребёнок и начались бессонные ночи, я стал упускать детали. Какой срок назвали? Кто обещал вернуться с ответом? О чём мы в итоге договорились?
Так началась история Рекордера. Сначала я собирался купить готовое приложение. Потом стал сравнивать Whisper, Parakeet и GigaAM. В итоге проверил 32 конфигурации распознавания и собрал каскад из двух моделей: одна даёт основу текста, другая исправляет неточности. На моих записях это исправило каждую пятую ошибку (WER упал с 27,0% до 21,7%).
Из экспериментов получилось бесплатное приложение для Mac, которое записывает встречи и переводит аудио и видео в текст локально. Расскажу, как выбирал модели, что измерял и какие очевидные решения не сработали.
В статье есть промт для агента, чтобы собрать всё самому.
Читать далееУ моего голосового ИИ-администратора Айки был голос на Yandex Realtime, но не было лица. Я добавил его поверх уже работающего голоса: сервис аватара получает готовый звук и двигает под него губами.
Сравнил Simli и Anam на одном портрете и одном голосе. По дороге разбирался с паузой перед ответом, запуском видео на iPhone и с тем, что на моём мобильном интернете без VPN видео не подключилось. Для второго персонажа выяснилось, что портрет выглядел фальшиво не из-за лица, а из-за пустого фона за ним.
А при проверке перед публикацией нашлась гонка в отмене подключения, которую я пропустил.
Читать далееУ меня несколько своих подписок Claude, и Claude Code работает почти весь день: я пишу сам, параллельно крутятся агенты. Пятичасовой лимит заканчивается в самый неудобный момент, недельный — задолго до конца недели. Дальше всё одинаково: открыть терминал, выйти, залогиниться другим аккаунтом в браузере, вернуться в сессию и вспомнить, на чём остановился. В какой-то момент мне надоело делать это руками.
Так появился ccswap — демон на Go для macOS и Linux. Когда текущий аккаунт подходит к лимиту (или когда я прошу), он перелогинивает Claude Code в другой. Запущенные сессии подхватывают новый аккаунт примерно за полминуты, ничего не перезапуская. Ниже — как он устроен, на чём я спотыкался и почему пользоваться им стоит с открытыми глазами: у Anthropic есть правила, которые касаются этой затеи напрямую.
Читать далееОткрытые модели против облака: T-one, GigaAM или Deepgram: что реально тянет обычный CPU для живых субтитров в звонке
Мне понадобились живые субтитры на русском в звонке один на один, и я захотел уйти с облачного Deepgram на свой сервер. Поставил стенд и прогнал T-one от Т-Банка, GigaAM от Сбера и Vosk на обычном CPU, на колл-центре и на получасовой живой сессии. Главный вывод оказался не про модели: один и тот же код на двух серверах с похожим числом ядер дал разницу в ёмкости в разы. Внутри замеры качества и задержки, грабли, расчёт окупаемости и открытый код стенда с зондом, который за минуту покажет, сколько потянет ваш сервер.
Читать далееСовременные LLM это не интеллект, а очень хороший интерполятор. Индустрия это понимает и поэтому оборачивает «трубу в трубу». Написал заметку о том, почему, по моему мнению, этот путь ведёт в тупик и что можно сделать вместо него.
Читать далееПродолжение статьи «Назад в машинный зал: как собрать эмулятор PDP-11/70 с телетайпом, блэкджеком и без Rust» (первая часть).
Для тех, кто пропустил первую часть: посмотреть живой эмулятор PDP-11 в браузере можно здесь — amesk.github.io/yaPDP/pdp11.html.
Первая часть была про магию: как оно вообще заработало. Эта — про обычную инженерную прозу: нетерпение, компромиссы и их последствия.
Если интересно — добро пожаловать под cut.
Читать далее