Ivan Begtin
9.09K subscribers
2.48K photos
4 videos
113 files
5.23K 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
К вопросу о работе с данными в гуманитарных науках, я, честно говоря, долго об этом думал в контексте что много что команда Инфокультуры и я лично делаем в этой теме хотя и гуманитарные науки для нас совсем не основная тема. Но есть, как минимум, такие проекты как finlibrary.ru и Ruarxive.org, а также множество других меньшего масштаба по сохранению цифрового и аналогового культурного наследия.

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

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

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

#opendata #openaccess #humanitarian #contest
8🔥4👍2
Я на выходных столкнулся с очередной ситуацией когда пришлось чистить свободное место на дисках, но при этом не хотелось архивировать некоторые файлы для холодного хранения, они нужны были под рукой. И я вспомнил про утилиту 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
Про форматы файлов, много о них я писал и в контексте ИИ, и в контексте работы дата инженеров и в контексте цифровой архивации. Мало кто системно разные форматы изучает и чаще те кто это делают занимаются цифровой архивацией в очень широком контексте, но в первую очередь думая о сохранении доступности данных и иных материалов созданных в ПО которое уже малодоступно или которым уже невозможно пользоваться.

С чего начать тем кто ищет информацию о структурах файлах и того как работать с разными форматами работать?

1. PRONOM

Это специальный реестр форматов файлов от Национальных Архивов Великобритании и он включает подробное описание сотен форматов файлов включая форматы разных старых приложений или относительно новые форматы для данных такие как JSONl. В реестре PRONOM присутствуют и цифровые отпечатки файлов, помогающие их идентифицировать. Эти отпечатки используются в утилите DROID для идентификации типов файлов по большому их реестру. Утилита сама не обновлялась давно, но цифровые отпечатки из PRONOM обновляются довольно часто, чуть ли не ежемесячно

2. Archive Team Wiki (File formats)

У команды ArchiveTeam есть большой вики проект fileformats.archiveteam.org с большим числом практических статей по разным форматам файлов и о том как с ними работать и как их архивировать. Полезный сайт для всех кто погружается в работу с какими либо относительно популярными файловыми форматами. Вики ArchiveTeam полезно именно своей практичностью и включает материалы из множества источников.

3. MultimediaWiki

Другой Вики проект доступный по адресу wiki.multimedia.cx и включающий описание многих мультимедийных форматов включая те что используются в игровой индустрии и многое про то как заниматься реверс инжинирингом кода для извлечения интересных материалов из тех же игр.

4. IANA Mimetypes

Это реестр mime типов на сайте IANA, покрывает те форматы файлов для которых mime типы зарегистрированы, их много, но не исчерпывающе. Важнее подробное описание каждого типа и ссылки на сами спецификации и области применения.


#readings #fileformats
4👍4🔥32
Подборка полезных ссылок про данные, технологии и не только. В этот раз ссылки на видео:
- Meta Just Changed Data Compression FOREVER (OpenZL Explained) про новый инструмент для сжатия файлов OpenZL. Его важная особенность - это понимание форматов сжимаемых файлов и выбор правильного способа сжатия.
- Trustworthy Data Visualization (Kieran Healy, Duke University) видео с конфренции Posit 2025 о том как создавать визуализации данным которым можно доверять, полезное для всех кто визуализирует данные или читает визуализируемое. Автор написал немало про визуализацию, три книги и много статей ну и выступает весьма неплохо
- Mooncake: Real-Time Apache Iceberg Without Compromise (Cheng Chen) про построение озера данных с Apache Iceberg и Mooncake для реального времени. Заодно и с историей OLTP и OLAP и переход к озерам данных
- Introduction to OpenRefine использование OpenRefine, инструмента для очистки и обогащения данных. Примеры.и применение из работы с цифровыми архивами и библиотеками и не все знают что библиотекари - это основная аудитория пользователей OpenRefine.
- PostgresAI я так понимаю что это пока малоизвестный стартап который обещает применение ИИ для оптимизации баз Postgres. Концептуальная идея на поверхности, я, если честно, думал что появится что-то более универсальное по мониторингу и оптимизации с поддержкой разных СУБД. Честно говоря видео оформлено дурацки.и документация на их сайте практичнее

#readings #ai #datatools #datatools
🔥3👍2
В контексте премии по открытому доступу в гуманитарных науках (humawards.ru) о том как предоставлять материалы в открытом доступе.

1. В основе открытости данных исследователей лежат принципы FAIR (Findability, Accessibility, Interoperability, Reuse). Описание на русском языке есть в русскоязычной википедии и многих онлайн ресурсах, их легко найти по ключевым словам "принципы FAIR".
2. Ключевое в этих принципах в публикации данных результатов исследований таким образом чтобы их могли использовать другие и в использовании данных другими опубликованные. Использование включает юридические права (свободные лицензии), техническую возможность (удобные форматы и документация) и находимость (возможность найти эти данные).
3. Для публикации данных исследователи в мире чаще всего используют такие порталы как Zenodo, Figshare, Dataverse, институциональные репозитории и специализированные репозитории данных по своим дисциплинам.
4. Альтернативно часто данные публикуются на открытых платформах для публикации исходного кода таких как Github и Gitlab или же через развертывание собственных порталов для данных, к примеру Инфокультура поддерживает портал hubofdata.ru в России.
5. Кроме публикации данных к открытому доступу можно отнести и публикацию открытого кода, как правило, также публикуемого на платформах вроде Github или Gitlab, реже на других сайтах.
6. Конечно, кроме этого существует многие материалы по открытому доступу которые не являются данными или кодом, это могут быть курсы, лекции, просветительские материалы, для которых, впрочем, хорошей практикой является их публикация под свободными лицензиями такими как CC0, CC-BY и им подобные.

В итоге на премию по Открытому доступу (humawards.ru) можно, как существующий проект/результат работы, так и открыть ранее созданный. Опубликовать исходный код, открытые данные, выложить материалы под свободными лицензиями и так далее.

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

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

#opendata #openaccess #contest #humanitarian #opensource
5👍54🏆31
В рубрике интересных инструментов работы с данными, datanomy утилита для командной строки для просмотра метаданных и данных внутри Parquet файлов. Простая штука, работает на базе фреймворка Textual для создания утилит командной строки и позволяет смотреть разную информацию включая схему, метаданные, данные и статистику по выбранному parquet файлу.

Инструментов для наглядного отображения Parquet файлов не так много, хотя и прибавляется. Этот выглядит как полезный.

#opensource #datatools #parquet
👍7
Ещё немного рефлексии по поводу навыков Python разработчиков. Я тут регулярно провожу технические собеседования дата инженеров к команду Dateno, в основном это русскоязычные разработчики/инженеры в разных странах и с разными запросами на ЗП.

Поделюсь некоторыми наблюдениями:
1. От многих собеседуемых есть ощущение что они свою ожидаемую ЗП оценивают по средней/верхней планки по рынку и по минимальной сумме при которой им комфортно жить, но никак не по собственным навыкам. С одной стороны это очень понятно, а с другой, в общем-то навыки часто не соответствуют запросу. Это такой естественный конфликт работодатель-работник, но в целом видно что не все могут оценить свою реальную рыночную ценность. Раньше тоже такое бывало, но что-то в этом году я наблюдаю это чаще чем раньше.
2. Мои задачи на технинтервью состоят из проведения ревью кода, либо старого кода одного из проектов, либо небольшого куска искусственно созданного примера кода с заведомыми ошибками. Часто оказывается что собеседуемый прекрасно говорит, идеально рассказывает про свой опыт, но с простым ревью кода не справляется.
3. Самые частые "затыки":
- непонимание приоритетов. Вместо поиска ошибок, которые вполне очевидны, увлечение стилем кода и форматированием. Это реально какое-то массовое явление, многие сбиваются в стилистику кода вместо фокуса на решении проблем.
- незнание асинхронности в Python. Для дата инженерных задач, особенно при работе наиболее популярными инструментами оркестрации конвееров данных хотя бы базовые принципы асинхронности надо если не знать, то уметь понимать.
- невнимательность. В каждом техинтервью есть задача в которой есть вполне понятные вводные на основе которых можно понять где могут быть ошибки и как их можно увидеть. Многие игнорируют существенную часть задачи и бегут смотреть код.
- недостаток архитектурного восприятия. У Python'а есть какое-то количество шаблонных способов решения задач (как и в большинстве языков) и хороших и плохих практик, например, использование глобальных переменных без четкого понимания зачем это делается - всегда плохо. Или же когда функции перегружены большим числом операций и выполняются долго то при выбросе исключения при отсутствии сохранения текущего состояния невозможно продолжить с места сбоя

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

По моему опыту довольно бессмысленно расспрашивать про инструменты, ими несложно овладеть. Неважно есть ли у человека опыт в Polars или DuckDB если он владеет Pandas, к примеру, но problem solving однозначно выходит на первый план для все кто не совсем джуниоры.

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

#thoughts #hiring
1👍183🌚321
В рубрике как это устроено у них портал открытых данных Австралии data.gov.au. Относительно недавно его обновили и обратно мигрировали на CKAN с ранее разработанного австралийцами же дата каталога Magda. Почему мигрировали, кстати, я до сих пор в загадках. Magda интересный проект агрегации данных, но довольно сложный технически, может быть из-за этого.

Как бы то ни было сейчас на портале данных Австралии 97 тысяч наборов данных большая часть которых это геоданные, в первую очередь данные о Земле из Geoscience Australia.

Но всей картины открытых данных в Австралии это не покрывает поскольку де-факто Австралия скорее конфедеративная чем федеративная страна, много данных там на уровне отдельных штатов. И в том же Квинсленде на портале открытых данных www.data.qld.gov.au 188 тысяч наборов данных, а на портале геоданных Квинсленда geoscience.data.qld.gov.au ещё 187 тысяч наборов данных.

Всего в Dateno у нас проиндексировано более 548 тысяч наборов данных в Австралии из местных и международных порталов с данными.

Главная особенность Австралии как и большей части развитых стран - это то что геоданные составляют от 50 до 90% всех публикуемых наборов данных.

И, конечно, необходимо учитывать что его огромный пласт открытых научных данных который в Dateno пока представлен не полностью и если охватить и эти данные то в Австралии число открытых наборов данных легко достигнет 800-900 тысяч наборов данных, если не больше

#opendata #australia #datacatalogs
🔥41
AgenticSeek альтернатива Manus умеющая выполнять разные, в том числе довольно сложные задачи требующие запуска приложений и браузера иных агентских операций. Важное отличие - открытый код и локальный (приватный) запуск.

#opensource #ai #privacy #llm #tools #datatools
10🔥1
После экспериментов с простым кодом, я постепенно добрался до тех инструментов которые используются внутри Dateno для сбора данных. Один из них это утилита apibackuper которая помогает вытащить данные публикуемые через API и сохранять их в виде датасета. Фактически это инструмент скрейпинга API через декларативное описание параметров скрейпинга (да, я люблю декларативные описания). У инструмента был ряд недостатков которые я исправлял и думаю что исправил, вот перечень изменений:
- переход от декларативного описания скрейперов с INI (.cfg) файлов на YAML, читать легче, синтаксис приятнее
- валидация YAML описаний через JSON схему
- поддержка ограченичений и таймаутов на число запросов в минуту (Rate Limiting)
- поддержка аутентификации к API
- экспорт данных не только в JSONL, но и в Parquet
- автоопределение формата экспорта данных по расширению файла
- массовое обработка исключений и понятные сообщения об ошибках везде где возможно
- тесты для покрытия большей части кода
- подробная документация
- и всякое по мелочи

Я этот инструмент изначально разрабатывал для для архивации данных публикуемых через API, но сейчас он используется в части кода Dateno для выгрузки метаданных из каталогов данных. Может его даже пора уже перенести из ruarxive в dateno на Github'е, ещё не решил.

На скриншоте то как это выглядит на примере реестра лекарственных средств ЕСКЛП

Для сбора данных достаточно выполнить две команды
- apibackuper run
- apibackuper export current.parquet


Первая выгрузит все данные постранично, вторая сохранит выгруженные данные в parquet файл.

#opensource #datatools #data #dataengineering
42
Свежее постановление российского пр-ва устанавливающее плату за доступ к по запросу к официальной статистической информации на бумаге (!) и в электронном виде (!!). Текст пока только в в виде скана на портале официального опубликования правовых актов, в виде текста он скорее всего появится не раньше чем через несколько дней, на сайте пр-ва базовая задержка в публикации документов 3 дня, но бывает и поболее.

Мне много что есть сказать самому, а заодно я прогнал этот текст через пару ИИ агентов - Perplexity, Manus и Deepseek. ChatGPT разобирать его отказался, а Алиса от Яндекса глубоко анализировать документы не научилась еще.

Результаты анализа Perplexity и Manus'а я прикладываю, а от Deepseek доступно по ссылке.

Что я скажу от себя:
1. Взимание платы за официальную статистику - это существенный барьер в её получении. Выгода гос-ва от запросов будет невелика, а ограничения будут серьезными. Я не знаю кто продумывал эту бизнес модель, но подозреваю что её нет и цель не деньги, а ограничения в распространении.
2. Если для бумажных документов и сложных запросов и необходимости пересылки ещё можно предположить что можно было бы взимать оплату, то для предоставления данных в электронном виде это не оправдано ничем.
3. Сам подход противоречит практикам развитых стран, рекомендациям ОЭСР и тд. Там наоборот идут по пути бесплатности распространения статистической информации
4. Агрессивно взимают плату за любой чих в коммуникации со статслужбами только в наибеднейших странах, в основном, африканских.
5. Собирать и распространять статистику на бумаге в 21 веке это как, даже не могу придумать приличного сравнения, это как самоудовлетворятся предаваться греху на публику или это как выйти куда-нибудь в публичное место и орать изо всех сил: "Смотрите, мы вас ненавидим! Нет, вы смотрите, смотрите же! Реально ненавидим". Потому что любовь к пользователям бумаги не предусматривает, и не должна предусматривать.

#opendata #government #russia #rosstat #statistics #closeddata
💯11😁7👍5🤔4😢3🔥1
Датасет Цифрового архива: контрольные цифры расходов местных бюджетов РСФСР в 1932 году

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

Так, в 1932 году центр предполагал, что суммарные расходы всех регионов на культуру превышают аналогичное значение для народного хозяйства без малого в два раза: 1,8 млрд рублей против 0,9 млрд.

Публикуем датасет, содержащий контрольные цифры расходов бюджетов АССР и местных бюджетов краев и областей РСФСР на 1932 г.

#датасет #ЦАГГ #РСФСР #бюджет
👍107
Австралийский план по внедрению ИИ в госсекторе на 2025 год, охватывает ближайшие полтора года.

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

#ai #policy #regulation
👍104
В продолжение про постановление российского пр-ва про взимание платы за доступ к статистике и то как оно в мире:
- OECD: Set of good statistical practices свод хороших статистических практик от ОСЭР. Включают рекомендации по бесплатному и свободному распространению статистики. Пункт 9.2: A dissemination policy ensures the free dissemination of official statistics.
- OECD: Open access by default рекомендации ОЭСР по предоставлению доступа к данным в режиме открытости по умолчанию
- OECD Principles and Guidelines for Access to Research Data from Public Funding рекомендации ОЭСР по предоставлению доступа к исследовательским данным (микроданным) с открытостью по умолчанию и взиманию платы только в исключительных случаях и в объеме не более себестоимости

Я специально привожу в пример принципы ОЭСР, есть также и позиции других международных и межгосударственных организаций, практики распространения данных в других странах и многое другое.

Практически все они сводятся к следующим принципа:
1. Статистика по всем вопросам являющихся объектом общественного интереса должна быть открыта и общедоступна
2. За доступ к статистике не должна взиматься плата за исключением очень ограниченного числа случаев запросов на доступ к специализированным данным требующих существенных усилий
3. По умолчанию все данные должны быть свободно доступными в цифровой форме и распространяться в открытую максимально возможными способами распространения

#opendata #statistics #regulation #oecd
👍83🔥31
Продолжая рассказывать про применение ИИ агентов для разработки, после экспериментов на не самом критичном коде я добрался до обновления реестра дата каталогов в Dateno и могу сказать что результаты пока что хорошие.

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

Кроме того хорошо отрабатывают задачи которые:
- находят ошибки в метаданных дата каталогов
- находят и исправляют дубликаты записей
- обогащают карточки каталогов тематиками и тэгами
- исправляют геоклассификацию каталогов
- и многое другое что предполагает массовое исправление и обогащение данных

Лично для меня и Dateno это очень хорошая новость это означает что реестр (dateno.io/registry) можно вести теперь значительно меньшими личными усилиями.

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

P.S. Тут я описываю внутренности происходящего в Dateno, которым я занимаюсь как основным проектом и продуктом. А новости проекта всегда можно читать в LinkedIn

#opendata #datacatalogs #ai #dev #datatools
83🔥3🎉2