Ivan Begtin
9.11K subscribers
2.47K photos
4 videos
113 files
5.21K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and etc.

CTO&Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Email ivan@begtin.tech

Ads/promotion agent: @k0shk
Download Telegram
Пока в России заключённых пытаются лишить йоги, в других странах активно идут эксперименты по социализации выходящих из тюрем и снижению рецидивизма. Один из таких примеров - это Code 4000 [1]. британская НКО обучающая заключённых программированию. Их программа смоделирована по аналогии с программой Last Mile ранее проводившейся в тюрьме Сент Квентин, Калифорния, США.

В Великобритании вся эта инициатива финансируется из специального фонда цифровых навыков (Digital Skills Fund) помогающего вовлекать уязвимые группы граждан в цифровую среду [3]

Ссылки:
[1] https://www.code4000.org/en
[2] https://thelastmile.org/
[3] https://www.gov.uk/government/news/coding-to-be-taught-in-prison-to-help-offenders-return-to-the-world-of-work

#digital #coding
В рубрике интересных наборов данных проекты по теме машинного обучения для кода, Machine Learning for Code [1] из Secure, Reliable and Intelligent Systems Lab, ETH Zurich.

Их команда исследователей-разработчиков применяет искусственный интеллект к задачам разработки и анализа кода. Для чего они уже опубликовали множество проектов с открытым кодом, 5 больших датасетов и моделями с разобранным кодом и десятки научных статей.

Из интересного:
- Nice2Predict - модель структурных предсказаний, используется для предсказаний названий функций
- JSNice - деобфускатор Javascript, активно используется теми кто про него знает
- DeGuard - деобфускатор мобильных приложений для Андроид (.APK файлов), основан на Nice2Predict

А также стартап DeepCode (переименовался в Snyk Code) [2] предлагающий возможность ревизии кода с помощью ИИ и... автоматического исправления ошибок и уязвимостей.

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

Ссылки:
[1] https://www.sri.inf.ethz.ch/research/plml
[2] https://www.deepcode.ai

#ai #programming #datasets #coding
🔥4👍1
Для тех кто учится на чужих ошибках отличный тред на reddit'е где автор делиться опытом применения вайб кодинга на живой системе. В этот тред можно отправлять всех кто думает про вайб кодинг как про "манну небесную" и решение всех проблем. Скорее про создание новых проблем в руках людей не обладающих необходимыми техническими навыками.

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

#ai #coding
1💯21🔥6
Любопытный стартап за которым я слежу - это Factory. Он как раз про то самое вайб-кодирование которое приносит много боли, но поставленное на промышленный масштаб. По сути это реконструкция работы команды разработчиков с разными задачами и разным функционалом и состоящей из нескольких видов дроидов.

Это ни разу не вайб кодинг и не low/no code продукт, а как раз новая хардкорная IDE и среда для усиления команд миддлов и синьёров.

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

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

#coding #it #ai
👍5🤔1😢1
Я на днях также решил проверить на практике вайб-кодирование применение ИИ в разработке и с помощью Cursor обновил и выпустил новую версию iterabledata библиотеки для Python с помощью которой можно можно одинаковым образом читать файлы csv, json, bson, parquet, xls, xlsx и xml так что ты перебираешь объекты возвращается как Python dict. Для тех кто пользовался csv.DictReader или библиотекой jsonlines это должно быть очень понятно.

Я эту библиотеку когда-то делал как ядро для утилит metacrafter и undatum с помощью которой с их помощью можно было анализировать условно любые файлы с данными сжатыми чем-угодно.

В этом собственно отчасти и есть задумка. Наборы данных часто распространяются сжатыми Gzip, Bzip2, LZMA, Brotli или Zstandard, а инструменты для датафреймов или движки вроде duckdb имеют ограничения на поддержку форматов. Также часто данные имеют не utf8 кодировку и вообще удобнее работать в унифицированном интерфейсе.

Так что я написал унифицированные интерфейсы для кодеков сжатия и для типов данных. Заодно написал пример того как преобразовать дампы Википедии из сжатого XML в JSON lines.

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

А теперь с помощью Cursor'а:
- обновил документацию, переформатировал, добавил примеров
- добавил примерно +30% тестов
- исправил несколько ошибок
- проанализировал каких тестовых данных нехватает, запланировал их добавить чтобы покрыть тестами почти все кейсы

Первое что я могу сказать это то что Cursor даёт очень хорошие результаты во всех задачах написания тестов, документирования и анализа кода. Неидеально, но очень неплохо.

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

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

#ai #coding #python #datatools #opensource
👍13❤‍🔥1
Ещё немного рефлексии по использованию ИИ в разработке. Конечно глядя на 2-ю версию Cursor'а есть ощущение очень большого прогресса в том что с помощью ИИ агентов можно проделать на прикладном уровне. ИИ агент(-ы) точно заменяет джуниоров, сильно помогает миддлам и полезен для более опытных разработчиков.

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

Но ИИ агенты пока не достигли следующей планки, а то есть замены архитекторов ПО. А то есть ИИ может выдать что цикл и обработка в цикле в коде написаны неэффективно, но, например, не может пока проанализировать архитектуру приложения в целом и дать рекомендации в стиле "вот этот код надо переписать на Rust'е и подключить его как библиотеку" или "а вот тут есть такой редкий инструмент/библиотека если его применить то всё будет работать куда лучше" или "а вот у тебя код весь под Ubuntu написан, вот тут его надо перепроектировать и переделать и станет кроссплатформенным" и так далее.

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

#ai #coding #software
👍63🤩1
Я на выходных столкнулся с очередной ситуацией когда пришлось чистить свободное место на дисках, но при этом не хотелось архивировать некоторые файлы для холодного хранения, они нужны были под рукой. И я вспомнил про утилиту filesrepack которую я когда-то давно писал для пересжатия существующих файлов и архивов, это когда архивы и их содержание сжимаются более сильными алгоритмами сжатия чем это было сделано изначально и когда внутри них файлы тоже пересжимаются, обычно без потери качества, или с минимальной потерей в качестве изображений, там где это некритично.

Сама утилита эта работа как обертка вокруг множества приложений в операционной системе: pngquant, jpegoptim, 7z, zip и тд, но вот одна беда что она устарела и её надо было переписать.

Так что я её использовал как второй полигон для проверки кодирования с помощью ИИ (первый был с библиотекой iterabledata).

Итого:
- утилита filesrepack полностью переписана и теперь умеет две команды: repack - сжимать одиночные файлы, bulk - сжимать файлы внутри папки, рекурсивно
- добавлена поддержка множества новых форматов файлов: tiff, parquet, avi, avf, svg, gif, rtb, pages, numbers, key и других
- 90% кода написано с помощью ИИ агента Cursor'а (2-я версия Cursor, режим автовыбора моделей)
- существенные ошибки были лишь пару раз, достаточно легко они исправлялись
- у ИИ агента очень неплохое понимание контекста и того для чего сделано приложение и очень хорошие ответы на вопросы вроде "проанализируй приложение и предложи какие опции были бы полезны для его пользователей" или "предложи форматы файлов которые можно было бы оптимизировать и которые пока не поддерживаются"
- наибольшая польза, по прежнему, в автоматическом написании документации что очень удобно для всякого рода утилит и программных библиотек где не надо скриншотов и сложных сценариев.
- для такого простого практического применения ИИ агенты, действительно, прекрасно подходят и ускоряют работы многократно, а также помогают закрыть дыры в документировании, тестировании и тд.
- по ощущениям можно уже применять ИИ агенты и для промышленного применения в сложных системах, но, конечно, с существенно большей осторожностью и дополнительными мерами по верификации кода
- все в совокупности, конечно, огромный прогресс за последний год. Ранее когда я пытался применять ИИ агенты, было ощущение что галлюцинаций существенно больше чем результата.
- в любом случае джуниорам я категорически не рекомендую начинать изучение программирования через ИИ ассистенты. Что бы понимать насколько созданный код хорош и адекватен нужно уметь создавать его самостоятельно иначе можно наделать серьёзных ошибок

Далее я уже расскажу про практическое применение ИИ для работы с кодом и создания индекса в Dateno, но этим кодом поделиться уже можно только в отдельных отчуждаемых компонентах.

#opensource #tools #ai #coding #thoughts
👍104🏆2
Для всех ИИ агентов для кодинга у меня есть довольно простой тест который большая часть из них ещё полгода назад пройти не могли. В Армении есть портал статистики statbank.armstat.am который много лет назад создавался за счет помощи ЕС и с той поры не обновлялся. Он построен на базе движка с открытым кодом PxWeb шведско-норвежской разработки который прошел большую эволюцию за эти годы, но в Армстате используется очень старая его версия с интерфейсом созданным на ASP.NET с большим числом postback запросов что не критично, но неприятно усложняет сбор из него данных. Я такую задачу отношу к скорее утомительным чем сложным, потому что отладка на них может быть долгой и замороченной.

У меня с этой задачей всегда была развилка из 3-х вариантов:
1. Создать и оплатить задачу для фрилансера (в пределах от $50 до $250 за всю работу)
2. Поручить одному из разработчиков/инженеров в команде (по уровню это задача скорее для аккуратного джуна)
3. С помощью ИИ агента сделать такой парсер

Поскольку задача не приоритетная (в Dateno данные собираются с более современных инсталляций PxWeb и через API), то для таких проверок ИИ агентов она прекрасно подходила. И я её пробовал решать и через ChatGPT, и Copilot, и Manus и Claude Code и первую версию Cursor'а, в общем много вариантов.

Они либо утыкались в то что определяли что это PxWeb и делали код для API который не работал, или проверяли что код для API не работает и писали что ничего дальше сделать не могут, или писали плохой код для скрейпинга веб страниц который не работал.

В итоге могу сказать что окончательно рабочее решение сумел сделать Antifravity от Google. Но каким образом, через запуск Chrome локально и автоматизированно пройдясь по сайту определив его структуру и создав код на Python который с некоторыми ошибками, но в итоге извлекал списки показателей и умел выгружать данные. Неидеальные, потому что так и не научился выгружать данные в форматах отличных от CSV, несмотря на несколько попыток и при том что через веб интерфейс это все работает, значит ошибка не в оригинальной системе.

Тем не менее, это уже результат примерно 2-х часов работы, что соответствовало бы времени в течение которого пришлось бы потратить на проверку работы фрилансера или разработчика в команде.

Что в итоге:
1. Количеств задач отдаваемых фрилансерам стремительно падает кроме малого числа где фрилансер большой профессионал в своей специализированной области.
2. Зачем нанимать джунов? Этот вопрос все острее с развитием ИИ агентов
3. ИИ агенты все успешнее решают "замороченные" и "утомительные" задачи с которыми ранее не справлялись

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

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

#opendata #opensource #ai #coding
👍94
Продолжая тему применения ИИ агентов для разработки, у меня есть ещё одна достаточно сложная задача для ИИ агентов - это коллекция похожих, но отличающихся скриптов по сбору и обработке больших статистических баз данных. Они слишком тяжелые чтобы их вот так просто гонять через системы оркестрации и не требуют ежедневного и даже еженедельного обновления.

Этих скриптов много, штук 20, они последовательно:
1. Выгружают справочники, списки показателей и метаданные из статистических баз
2. Выгружают первичные данные, обычно JSON или CSV
3. Преобразуют первичные данные в файлы parquet
4. Загружает файлы parquet в аналог даталэйка
5. Готовит карточки датасетов для загрузки в индекс Dateno

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

Задачей для ИИ агентов было в проведении анализа кода, преобразовании его в единую утилиту командной строки с помощью которой можно вызывать команды из отдельных скриптов, а также в приведении в порядок кода внутри. Это сложная задача, объективно, не математически, а инженерно и потребовало бы много ручной работы если делать это без помощи ИИ агента.

И вот что я могу сказать, по итогам:
1. Copilot для этого просто неудобен, фактически с задачей такого рода он не справляется.
2. Cursor 2.0 лучше, но все равно код недостаточно функциональный, преобразование в библиотеку для Python из скриптов случилось плохо
3. Antigravity выдал если не хороший, то приемлемый результат с систематизацией настроек под каждую платформу и возможности вызова отдельных команд. Сами команды могут содержать ошибки, но это уже нормально, это уже итеративная работа по приведению этого кода в порядок

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

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

#thoughts #ai #coding
52