Наблюдение за вайбкодингом

Хочу поделиться списком наблюдений, которые я сделал, пока нейросеть мне вайбкодила исправления для запуска браузера ViolaWWW.

Для начала хочу сказать, что в процессе переписывания кода возникло огромное количество задач. В основном — скучных и рутинных: множество очевидных и мелких правок, с которыми нейросеть справилась на «ура», тогда как я бы в них просто утонул. А вот перед более комплексными задачами она иногда пасовала, хотя мне они были вполне по плечу.

Теперь — по пунктам.

Во-первых, моего внимания нейросеть требовала не так уж часто — что, безусловно, радовало. Однако несколько раз она зацикливалась: вносила одни и те же изменения по кругу, а затем откатывала их через какое-то время.

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

Во-вторых, кое-где она не учитывала свой предыдущий опыт в том же контекстом окне. Приходилось писать: «Смотри, ты ведь уже делала подобное — просто повтори то-то», и это помогало. Зато, и это особенно любопытно, когда исчерпывалось окно, она конспектировала проделанную работу и план в файл, а на следующей итерации читала эту информацию перед началом работы.

В-третьих, у меня сложилось субъективное ощущение, что в разные моменты времени одна и та же модель (у меня сейчас используется Claude 4.5) то «умнеет», то «глупеет» в течение дня. Возможно, это какая-то экономия ресурсов при перегрузке запросами от пользователей, а может, просто случайность.

В-четвёртых, сеть решает задачу гораздо проще, если ей заранее подготовить способ самопроверки результата. Причём сделать это можно её же руками — например, попросить написать тест или предложить сформировать команду компиляции с дополнительными опциями, которые выведут больше ошибок.

Мы сейчас продолжаем переводить приложение на 64 бита (не все куски кода переведены), поэтому я попросил сделать команду make, которая подсвечивает ошибки усечения типа (ключ -Wshorten-64-to-32). После своих исправлений она запускает эту команду и правит оставшиеся ошибки.

Скриншот IDE Cursor с открытым файлом box.c на C, терминалом с ошибкой EXC_BAD_ACCESS и чатом ИИ-ассистента, анализирующего падение программы в функции putHashEntry_str.
Нейросеть в процессе правки падения приложения — она умеет использовать отладчик, чтобы смотреть где упало

2 комментария

Браузер ViolaWWW ожил

В 2017-м году я в своих раскопках в интернете наткнулся на браузер ViolaWWW. Он совершенно незаслуженно забыт, хотя обладал в своё время поразительными возможностями: имел встроенный язык программирования Cmm и собственную реализацию таблицы стилей! Это задолго до появления стандарта CSS!

Пожалуй он заслуживает быть вписанным в историю развития интернета!

В последний раз браузер, думаю, компилировали в 90-е и на моей системе он не собирался. Но я в тот раз сделал попытку оживить его, правда неудачную — окно появилось, но дальше я не продвинулся, слишком много исправлений пришлось бы сделать.

Но теперь ведь у нас есть нейросети! В итоге, я запустил редактор «Курсор», дав ему утром задание успешно запустить браузер, и вечером получил работающее приложение. Мы даже добавили в него поддержку русских букв!

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

За один рабочий день нейросеть портировала этот брайзер под «МакОС» и перевела 32-битное приложение в 64 бита!

Скриншот веб-страницы с заголовком «Editing Photos with Neural Networks» и текстом о редактировании фото нейросетями, включая пример улучшения фотографии Шигирского идола.

5 комментариев

99 бутылок: JOSS

Продолжают писать американскую считалочку «песня о пиве» на всяких странных и не очень языках программирования.

85. JOSS (JOHNNIAC Open Shop System) — язык, созданный Клиффордом Шоу в RAND Corporation в 1963 году для машины JOHNNIAC.

Именно в этом языке впервые появились условные выражения, диапазоны, функции и компактный синтаксис ветвлений, позволявший записывать целые решения в одну строку. Из «Джосса» выросли TELCOMP, STRINGCOMP, CAL, MUMPS, «Фокал» и «Бейсик» — целое поколение языков, унаследовавших его простоту и интерактивность.

Что в «Джоссе» необычного? Из тех языков, с которыми наиболее вероятно столкнуться в реальной жизни, он, разумеется, напоминает какой-нибудь простенький «Бейсик», но при этом содержит конструкции, которые редко встречаются в современных языках программирования.

Во-первых, строки здесь нумеруются с точкой. Это позволяет наглядно группировать подпрограммы — принцип, без изменений перекочевавший в «Фокал», с которым я сталкивался в детстве. Кстати, многие операторы «Фокал» так же позаимствовал у «Джосса».

Во-вторых, интересно устроена запись функций. Такого я, кажется, нигде больше не видел: в моём коде функция b(n) принимает один аргумент и возвращает значение в зависимости от того, какая проверка сработает.

В-третьих, в языке используется постфиксная запись операторов — for и if ставятся после выражения. Похожие конструкции существуют в «Перле» — не самом популярном сегодня, но всё ещё используемом языке.

Ну и мелочи: перевод строки обозначается подчёркиванием (_), умножение — интерпунктом (·), «звёздочка» при этом служит для экспоненты, «неравно» записывается отдельным символом (≠). Таких деталей в «Джоссе» много — перечислять можно долго.

* "99 Bottles of Beer," written in JOSS on Oct 16, 2025
* by Evgeny Stepanishchev (https://bolknote.ru)

Let b(n)=[n=1:" bottle"; n≠1:" bottles"].

1.1  Set n=99.
1.2  Do part 2 for i=n(-1)1.
1.3  Do part 3.
1.4  Stop.

2.1  Set j=i-1.
2.2  Type i, b(i), " of beer on the wall, ", i, b(i), " of beer.".
2.3  Type "Take one down and pass it around, no more bottles of beer on the wall." if j=0.
2.4  Type "Take one down and pass it around, ", j, b(j), " of beer on the wall." if j>0.
2.5  Type _.

3.1  Type "No more bottles of beer on the wall, no more bottles of beer.".
3.2  Type "Go to the store and buy some more, 99 bottles of beer on the wall.".

Go.

Язык давно уже не используется, поэтому мне не удалось найти, где можно было бы выполнить на нём программу. Обычно в таких случаях я просто пишу код по описанию, не проверяя его, но здесь впервые пошёл другим путём — написал несколько тестов и «завайбкодил» интерпретатор по описанию, взятому из «Википедии».

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

Текст песни «10 бутылок пива на стене» в терминале: отсчёт от 10 до 0, затем «пойти в магазин и купить ещё, 99 бутылок на стене»; внизу строка «bolck: JOSS $ _

5 комментариев

Редактирование фото нейросетями

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

Если раньше приходилось вручную вытягивать детали и закрашивать дефекты с помощью «умных» инструментов, то теперь я всё чаще просто загружаю снимок в нейросеть и даю короткую команду вроде: «выправи перспективу, убери блики, улучши детали, но сохрани все надписи в неприкосновенности».

Иногда приходится повторять генерацию несколько раз — уточняя запрос или просто выбирая лучший вариант. Процесс в деталях случаен, но даже так это всё равно быстрее, чем править снимок вручную.

Вот, например, первая же попытка наскоро улучшить фотографию Шигирского идола, сделанную в 2010 году в Екатеринбургском Музее истории и археологии Урала. Тогда мы ездили туда с другими блогерами по приглашению «Росатома» — посетить Белоярскую АЭС.

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

Два высоких деревянных резных артефакта с геометрическими узорами, выставленные в стеклянных витринах на фоне тёмно-зелёной стены музея.
Слева — Шигирский идол, снятый в музее Екатеринбурга в 2010-м году, справа — его обработка

2 комментария

Расширяем кафе

Хорошие новости: слева от нас освободилось большое помещение — 80 м², где больше десяти лет находился пункт выдачи «Вайлдберриз». Мы уцепились за этот вариант, потому что в кафе ходит очень много народу, и площади явно не хватает. В общем, будем расширяться, пока есть шанс.

Сначала надеялись обойтись «косметикой», а позже, поднакопив денег, сделать полноценный ремонт. Но, осмотрев помещение, поняли, что в таком виде оно для посещения не подойдёт. Да и кухню нужно расширять. Так что будем сразу делать всё как следует: надеемся, в декабре закончить отделку и начать объединять залы. Пока же кафе продолжит работать в прежнем формате.

5 комментариев

«Мышастик»: отдал ноду на время

Давно ничего не писал про «мышастик». Напомню: это меш-сеть поверх протокола LoRa, которая позволяет обмениваться текстовыми сообщениями даже в условиях сильно зашумленного канала.

Признаться, я мало слежу за этим проектом, но всё же вижу, что количество нод постепенно растёт. В качестве поддержки я какое-то время назад купил ноду с экраном на «электронной бумаге». Была мысль помочь покрыть центр, где связность почти отсутствует, но толку оказалось немного. Моя нода постоянно работала в офисе, однако — поскольку это всего лишь второй этаж — её сигнал мало кто ловил.

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

Сегодня отдал на время свою «бумажную» ноду, чтобы она поработала одним из таких мостов — будет работать в одном из высотных зданий КФУ в центре, оно на горке, удобное место.

Рука держит чёрное устройство с антенной и экраном рядом с белым зарядным кабелем с европейской вилкой на фоне серой плитки.

12 комментариев

Деньги начала эры интернета

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

Эту карточку я тоже купил по чьей-то просьбе и после активации оставил себе — 5000 рублей это был максимальный номинал и приличная, в общем-то, тогда сумма.

Такие карточки нужны были, чтобы положить деньги на счёт специальной платёжной системы — она позволяла делать покупки в интернете, как и более популярный международный аналог — «ВебМани». Банковские карты ещё не настолько вошли в обиход, хотя уже тогда было очевидно, что они вытеснят такие эрзац-системы.

Лицевая и оборотная стороны подарочной карты Яндекс.Деньги номиналом 5000 рублей с номером 1064-37570, паролем и кодом проверки на деревянном фоне.

3 комментария

«Боинг» и дискеты

Много раз читал, что компания «Боинг» до сих пор обновляет своё программное обеспечение в некоторых самолётах через дискеты — мол, оборудование произведено давно, модернизация обойдётся очень дорого, поэтому ничего не меняют.

А тут, в чате с мемасиками от бывших коллег, увидел адаптер, который выпускала компания «Сони». Он позволяет работать с карточками «Мемори Стик» через флоповод. Чего бы «Боингу» на такие не перейти? На «Ебее» они до сих пор продаются, причём есть и конкурентные решения — например, что-то похожее выпускала «Фуджифильм».

Интересно, что в адаптер, кроме «Мемори Стика», вставляются ещё две батарейки-таблетки CR2016 — ведь карточке нужно питание, а взять его больше неоткуда. Их ёмкости хватает примерно на 16 часов чтения или 12 часов записи.

Адаптер Sony Memory Stick/Floppy Disk Adaptor MSAC-FD2M: чёрный корпус с жёлтой надписью, логотипом Memory Stick и оранжевыми полосами, маркировка INSERT.
Адаптер, который выпускала компания «Сони» — MSAC-FD2M

6 комментариев

Мой блог

Мне тут попеняли, что у меня в блоге нет определённой тематики, поэтому и подписываться на него не интересно.

Ну так у меня и не блог. Я могу назвать свой сайт блогом только в том смысле, который вкладывали в это слово, когда оно только появилось — сетевой журнал.

Никаких дополнительных смыслов тогда в этом слове не было и я в них не нуждаюсь тоже. У меня нет планов сделать себе таким образом имя или как-то монетизироваться.

У меня совершенно другие цели — это моя публичная внешняя память. В этом качестве мой сайт мне очень часто пригождается.

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

9 комментариев

«Дар мой»

Сегодня мы с друзьями отправились в поход и по пути заехали к старому знакомому. Он нашёл какую-то старинную печать и решил показать нам. Сказал, что на ней будто бы что-то написано на иврите. В принципе понятно, почему ему так показалось: как и все печати, эта была сделана в зеркальном отображении, и в таком виде буквы действительно напоминают иврит.

На самом деле (на моём фото печать отзеркалена) там написано «дар мой». Видимо какой-то меценат века назад настолько много жертвовал, что решил сделать себе печать для этой цели.

Добавлено: я только обратил внимание, что в конце слова «дар» нет ера, то ли не поместился, то ли я погорячился с веками.

Ржавый болт с гайкой, лежащий на зелёной текстурированной поверхности рядом с круглым отверстием, заполненным рыхлым коричневым материалом.
Тёмная круглая печать с выгравированными буквами «ДОР» и «АНО» на зелёном текстурированном фоне.

6 комментариев

Интересные липучки

Купил недавно себе найковскую куртку на межсезонье — и жена обратила внимание на то какие у неё интересные «липучки».

И правда, раньше таких не видел: сделаны не по принципу репейника, а скорее как «Лего» — мелкие пластиковые столбики входят между такими же столбиками на другой стороне.

Пока непривычно: когда застёгиваешься, нет ожидаемого щелчка или ощущения сцепки. Кажется, что что-то должно защёлкнуться, а ничего не происходит — из-за этого я всё время проверяю, застегнул ли. Зато есть и плюс: обычные липучки часто цеплялись за свитер и выдёргивали из него шерсть, а эти — нет.

Жёлтая куртка с четырьмя чёрными липучками на внутренней стороне воротника, сшитая из гладкой ткани с видимыми швами.

2 комментария

FP8 и Nvidia A100

Недавно вышла новая модель Qwen3 с 80 миллиардами параметров. Мы её решили попробовать, но оказалось, что версия фреймоворка vllm, которую мы используем, с ним несовместима. Чтобы не экспериментировать на своём оборудовании, арендовали у «Селектела» две Nvidia A100. Хотели что-нибудь поновее, но всё расхватали.

Модель рассчитывали взять квантованную до FP8, такая есть в выпущенном наборе моделей. Нам она хорошо подходит — как раз уместится в память наших карт. Я рассчитываю, что 80 миллиардов с точностью восемь бит побьют предыдущие тридцать с вдвое большей точностью.

Но нас тут ждало разочарование — карты A100 тип FP8 не поддерживают, есть только эмуляция через FP16. Так как карты с FP8 всё равно пока арендовать не получится, выделили себе четыре A100 и поставили полную модель, без квантованния. Не совсем то, что хотелось, но всё равно полезно посмотреть как встанет и немного погонять по производительности.

В итоге, «завалить» модель одновременными соединениями не вышло (модели, которые мы крутили на одной или двух H100 заваливались), время ответа от нашего эталонного промпта получилось от 3,59 секунд до 8,74. Это очень быстро.

Скриншот вывода nvidia-smi: 4 GPU NVIDIA A100 80GB PCIe, драйвер 535.216.03, CUDA 12.2; загрузка 93–94%, память почти полная; процессы VLLM::Worker_TP0–TP3 по ~80330MiB на каждом.

3 комментария

Частота мерцания монитора

Мне в «Телеграме» в комментариях к посту про мерцание ламп напомнили про «карандашный тест» (легко гуглится). Там же написали, что были ребята, которые могли на глаз, при помощи этого теста, определить частоту мерцания — настоящая суперспособность.

А я тут вспомнил, что во времена расцвета мониторов с электронно-лучевой трубкой мог по мерцанию экрана определить частоту обновления. Это было очень важно в те годы, чем выше была частота, тем меньше утомлялись глаза.

Причём частоты примерно до 85 Герц я различал, глядя на монитор, а при более высоких частотах приходилось хитрить — открывать на мониторе что-то большое и яркое и смотреть мимо него, боковым зрением.

На фотографии мы с братишкой за моим компьютером у меня на работе в конце 1990-х—начале 2000-х. Помню, что у этого компьютера был огромный монитор и возможность установить второй процессор — тогда многоядерные системы были в диковинку, и не каждая ОС поддерживала такую конфигурацию.

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

4 комментария

Мигают ли лампы

Многие знают, что у некачественных ламп может быть повышена так называемая «пульсация» — они мигают с частотой, достаточно высокой, чтобы мы этого не замечали напрямую. Для неё установлен норматив, и его превышение плохо сказывается на глазах: они быстрее утомляются, поэтому такие лампы лучше не покупать.

Мне кажется, что я замечаю пульсацию даже тогда, когда её частота очень высокая. Лампа вроде бы светит ярко, но при этом света как будто всё равно не хватает. В такие моменты специальных приборов у меня под рукой нет, но я научился мерять пульсацию камерой смартфона.

Для этого надо переключиться в режим, где можно настраивать характеристики камеры вручную (у меня это режим «Профи») и сильно уменьшить выдержку. Например, у меня на скриншоте выдержка установлена в 1/1250, на этой отметке очень хорошо видно мерцание светодиодной ленты, световое пятно которой я сфотографировал.

Скриншот интерфейса камеры Leica Authentic с настройками: ISO 12800, выдержка 1/1250, диафрагма F2.82, баланс белого 3600K, формат JPG, разрешение 12.5M.

7 комментариев

Дочка в новой школе

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

Друзья пока не завелись, но отношения со всеми очень хорошие. Класс вообще отличный — спасибо учительнице: руководит добром и лаской, но, когда нужно, повысит голос и наведёт порядок.

Очень радует, что для обратной связи не надо «записываться на приём» в неудобное время, как было в предыдущей школе: сами пишут, рассказывают, если есть спорные ситуации — улаживают и вводят в курс дела родителей.

На прошлой неделе написали заявление, чтобы дочку отпускали одну. Она увидела, что за многими другими детьми не заходят: они сами выходят из школы и идут к машинам, а некоторые уже ездят на общественном транспорте. В общем, попросилась, чтобы и её так отпускали. На общественный транспорт ей пока ещё рановато, но договорились, что мы к школе подъезжать не будем — она сама перейдёт две дороги и выйдет к остановке, где мы её будем ждать.

Было как-то переживательно её так отпускать, поэтому в пятницу порепетировали — я шёл за ней в некотором отдалении, а она прошла весь маршрут. Особенно внимательно смотрел за тем, как она переходит дорогу. Когда мы рядом, она запросто может уйти в свои мысли и вообще не заметить машин. Но нет — тут спокойно шла, смотрела по сторонам.

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

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

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

Скриншот приложения с аватаром, надписью «Evolution Walking», меткой «Школа» и кнопкой «Включить режим Уроки»; справа — индикатор заряда 87%.

2 комментария

Поход: нагрёбся

Немного поднадоели походы — однообразно. Не то чтобы мы консерваторы, но ездим всегда в одну и ту же сторону: привлекает, что людей нет — пойди найди ещё такое место. А тут — необитаемые острова, нетронутая природа.

Вот только лодки у нас своей нет, поэтому договариваемся с местными. За годы появилось несколько знакомых.

А тут у В., нашего самого постоянного «извозчика», сломался мотор на лодке. Я, с одной стороны, расстроился, а с другой — даже обрадовался. Хоть что-то новое! А кроме того, преодоление возникающих препятствий — часть походной романтики. Какой же поход без этого?

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

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

Зелёный внедорожник УАЗ с номером А777ВС 16 буксирует лодку на прицепе; на лодке сидит человек в камуфляже, рядом красный забор и деревья.

Оставить комментарий

Колоризация бабушкиного фото

Хочу показать уникальное фото, оно у нас одно такое. На нём моя бабушка, Клавдия Фёдоровна, мама моего папы. Фотография, вероятнее всего делалась на доску почёта.

Уникальность его в том, что оно колоризовано в советское время, папа говорит, что скорее всего в ателье, судя по цветам — зелёнкой, марганцовкой и йодом видимо анилиновыми красителями (как меня поправили в комментариях).

Портрет пожилой женщины с уложенной причёской, в белой блузке и ярком зелёном платке с розовыми цветами и пайетками, на нейтральном фоне.
Колоризованное фото Клавдии Фёдоровны — моей бабушки, мамы моего папы

Кстати, я бабушку примерно такой и помню, в каком-то таком возрасте, хотя я её такой видел только в детстве. Умерла она в 2009-м, пока мы с женой были в свадебном путешествии. Очень хорошо, что смог тогда приехать к ней в гости до отлёта.

5 комментариев

Приступ «гопникомании»

Постоянные читатели могут помнить, что я являюсь поклонником двух текстовых квестов «Гопник», написанных неизвестными авторами в нулевых. Я очень плохо отношусь к этой субкультуре, тем не менее эти квесты почему-то запали мне в душу. Поэтому я иногда возвращаюсь к этой теме и даже потихоньку пилю форк второй части, правя в нём ошибки, кое-что рефакторя и иногда добавляя в игру что-то новое.

Исходный код оригинальной игры, по всей видимости, канул в лету, но мне когда-то повезло наткнуться на неоконченный порт этой игры под Линукс. С тех пор я ей иногда занимаюсь.

Пиксельный портрет мужчины в кепке с сигаретой и надписью «ГОПНИК-2», подзаголовками «ОКОРЕНИЕ», «УЛЬТУРНОЙ», «ТОЛИЦЫ» на тёмном фоне.
Заставка оригинальной игры, взятая из текстового файла описания

Недавно в мой репозиторий пришёл некий активный гражданин и навёл там суеты, за что я ему благодарен. В частности, он подчеркнул кое-какие изъяны в балансе, плюс оказалось, что в процессе перевода кода с сишного printf на модуль Си++ fmt, я поломал буферизацию в Винде, которую когда-то чинил простым макросом.

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

Тем не менее, как мне кажется, с нейросетью я делал исправления куда быстрее, чем это вышло бы у меня без неё. Кстати, очень здорово выручают тесты — если попросить нейросеть написать тест, а потом добиться чтобы он заработал (или хотя бы не сломался), то участие человека требуется минимальное.

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

16 комментариев

Новый пылесос

У нас дома теперь новый пылесос. Перед прежним у него есть неоспоримое преимущество — он умеет мыть тряпку. Для этого у него в станции есть бак с чистой и грязной водой и он несколько раз во время уборки возвращается туда, чтобы промыть тряпку от грязи.

Прежний пылесос катался с одной тряпкой по всей квартире. И хотя перед каждой уборкой мы меняли тряпку на новую, кидая старую в стирку (у нас их целый набор), это не избавляло ото всех проблем. У нас дома собака и пылесос часто размазывал этот собачий запах на всю квартиру, после чего её приходилось проветривать.

Ещё у него нет лидара, его заменяет набор камер. Из-за этого он гораздо тоньше и пролезает под диван, прежний туда не помещался.

Ну и вишенка на торте — у этого пылесоса есть роботизированая рука. Пока один раз поигрались в ручном режиме и всё. Там что-то надо настраивать, у меня пока времени не было. Как я понял, с её помощью пылесос может собирать раскиданные вещи в специальное ведёрко, но сложно пока сказать насколько это полезно.

По остатку — промывание тряпки на станции очень полезная функция, остальное приятно, но можно и обойтись.

Робот-пылесос круглой формы с чёрным корпусом и серебристой верхней панелью стоит на деревянном полу.

8 комментариев

Утилита cdecl

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

cdecl> explain char *(* const volatile (*(*hydra)(int (*)(void), char * const * restrict))[13]) (unsigned long, char * const [static 3]);
declare hydra as pointer to function (pointer to function (void) returning integer, restricted pointer to constant pointer to character) returning pointer to array 13 of constant volatile pointer to function (unsigned long integer, non-empty array 3 of constant pointer to character) returning pointer to character

cdecl> declare fp as pointer to function (pointer to char) returning pointer to array of pointer to char
char* (*(*fp)(char*))[];

3 комментария