Ivan Begtin
7.98K subscribers
1.8K photos
3 videos
101 files
4.51K links
I write about Open Data, Data Engineering, Government, Privacy, Digital Preservation and other gov related and tech stuff.

Founder of Dateno https://dateno.io

Telegram @ibegtin
Facebook - https://facebook.com/ibegtin
Secure contacts ivan@begtin.tech
Download Telegram
Программирование уже давно не только отдельная профессия, но и часть ранее, не компьютеризированных профессий/областей знаний.
Компьютерная лингвистика или биоинформатика хорошие тому примеры, но есть и менее привычные области.

Например, программирующие историки. Проект Programming Historian [1] из небольшого руководства много лет назад превратился большой образовательный проект помогающий историкам работать с цифровыми материалами,

Проект существует на английском, французском и испанском языках. Включает 82 урока, по работе с API, сбору данных, настройке цифровой среды, манипулированию данными, Python, сетевому анализу и не только.
Каждый урок содержит всё необходимое для понимания предметной области и применения на практике. А все они опубликованы с открытым кодом https://github.com/programminghistorian

Для исторической науки, по мере оцифровки существующих архивов и коллекций, использование технологий всё более актуально. Среди цифровых гуманитарных наук (digital humanities) это одно из самых очевидных применений.

Какие ещё гуманитарные профессии помимо историков и журналистов Вы знаете где происходит их "цифровой переход" и навыки программирования и работы с данными становятся ключевыми?

Ссылки:
[1] https://programminghistorian.org

#opendata #programming
В рубрике интересных наборов данных проекты по теме машинного обучения для кода, 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
Многие разработчики возмущены появлением Github Copilot [1] и использованием их кода ИИ для написания нового кода. А, тем временем, Brendan Dolan-Gavitt из NYU Tandon School of Engineering создал его аналог с открытым кодом и который можно использовать локально. Встречаем FauxPilot [2] в основе которого модели Salesforce CodeGet [3] и NVIDIA Triton Inference Server [4].

Для работы требуется процессор NVIDIA с объёмом видеопамяти от 2ГБ и где-то до 32ГБ для самых больших языковых моделей, выбор из нескольких моделей предусмотрен.

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

Ссылки:
[1] https://t.me/begtin/4020
[2] https://github.com/moyix/fauxpilot
[3] https://github.com/salesforce/CodeGen
[4] https://developer.nvidia.com/nvidia-triton-inference-server

#opensource #github #copilot #datatools #programming #fauxpilot
Языковые модели могут учить себя программировать лучше

"Пугающее" название научной статьи по весьма актуальной теме Language Models Can Teach Themselves to Program Better [1] о том что языковые модели, в данном случае модель Codex, умеют не только решать программные задачи, но и улучшать код этих решений.

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

Ссылки:
[1] https://arxiv.org/abs/2207.14502

#ai #languagemodels #programming
В журнале IEEE Spectum вышел обзор Top Programming Languages 2022 [1] о самых популярных языках программирования по категориям сводного рейтинга (spectrum), вакансий и трендов.

Там же у них методика [2] на основе частотности упоминаемости на различных ресурсах и

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

В том же журнале об этом отдельная статья The Rise of SQL [3], но там даже не упоминают Modern Data Stack, унификацию языка запросов, восхождение dbt и тд. В общем у меня нет ощущения значительной глубины понимания из той заметки, но, их взгляд на происходящее имеет право на существование.

Для сравнения в исследовании JetBrains за прошлый год на первом месте был Javascript [4] и мне лично, наоборот, это не нравится, JS вообще не вызывает у меня симпатии с самого его зарождения. И у JetBrains в исследованиях гораздо популярнее и востребованнее Go и Rust и другие молодые языки разработки.

Поэтому к публикации в IEEE Spectrum надо бы относится с долей осторожности, но изучать и преподавать Python никогда не поздно;)

Ссылки:
[1] https://spectrum.ieee.org/top-programming-languages-2022
[2] https://spectrum.ieee.org/top-programming-languages-methods
[3] https://spectrum.ieee.org/the-rise-of-sql
[4] https://www.jetbrains.com/lp/devecosystem-2021/

#python #languages #programming
Полезное чтение про данные, технологии и не только:

Данные
- State of gender data [1] есть такая большая тема - учет гендерных особенностей в системах регистрации статистики, учетных системах или, как упоминают авторы, "data systems". Текст о том что учет гендерных данных недостаточен.
- One Data Point Can Beat Big Data [2] о том что не всё решается большими данными и понимание данных и тщательная их фильтрация, избавление от шума, могут дать больше чем просто расширение источников и объёмов данных
- Making Government Data Publicly Available: Guidance for Agencies on Releasing Data Responsibly [3] руководство о том почему и как публиковать открытые данные от Center for Democracy and Technology. Адресовано органам власти (агентствам) в США, но актуально для всех
- Closing the Data Divide for a More Equitable U.S. Digital Economy [4] о неравенстве в доступе к данным и что с этим делать на примере экономики США. В основном рекомендации для регуляторов. Акценты на том что есть многие сообщества (в нашем понимании муниципалитеты) качество данных по которым невелико и они выпадают из многих госпрограмм поддержки. Тема важная, подход системный, но, конечно, инфраструктура и экономика США от других стран существенно отличаются.

ИИ и умные города
- Why Japan is building smart cities from scratch [5] о том почему в Японии создают умные города с нуля. На самом деле в статье именно на этот вопрос ответа нет, есть рассказ про несколько городов в Японии построенных с нуля. Это интересно, хотя я подозреваю что в Китае в в этом направлении даже больший прогресс.

Технологии и программирование
- Building modern Python API backends in 2022 [6] о структуре и архитектуре современных бэкэндов приложений на Python. Конечно, на самом деле, альтернатив куда больше, но прикладной стек расписан хорошо.
- Ruff [7] очень быстрый проверятель (linter) исходного кода для Python, написанный на Rust. Показывают производительность выше в 10-100 раз чем другие аналогичные инструменты вроде flake8, pylint и т.д.

P.S. Я подумываю выделить рубрику чтение (#readings) в какой-то отдельный формат, например, еженедельную рассылку, в отличие от моей личной рассылки которую я веду не регулярно или же скорректировать личную рассылку (begtin.substack.com) и добавить туда еженедельной регулярности.

Ссылки:
[1] https://data2x.org/state-of-gender-data/
[2] https://behavioralscientist.org/gigerenzer-one-data-point-can-beat-big-data/
[3] https://cdt.org/insights/making-government-data-publicly-available-guidance-for-agencies-on-releasing-data-responsibly/
[4] https://datainnovation.org/2022/08/closing-the-data-divide-for-a-more-equitable-u-s-digital-economy/
[5] https://www.nature.com/articles/d41586-022-02218-5
[6] https://backfill.dev/blog/2022-08-21-modern-python-backends/
[7] https://github.com/charliermarsh/ruff

#opendata #data #government #policy #tech #programming #readings
В полку сервисов/продуктов на базе ИИ по автоматизации написания кода прибыло, в Arstechnica статья и Replit Ghostwriter [1], прямой конкурент Github Copilot и умеющий программировать и объяснять на 16 языках. Они предоставляют несколько тарифных планов, начиная с бесплатного и до $7 в месяц [2] для работы в online IDE.

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

А с другой стороны, конечно, это сильный драйвер в сторону зависимости от облачных платформ, даже ещё больше чем сейчас. Сейчас, по моему личному мнению, настольные IDE очень хороши и мигрировать в облака большого резона нет, кроме тех областей где иначе нельзя. А в продуктах вроде Copilot и Ghostwriter закладывается модель cloud-first и цикл разработки компании получает ещё одну зависимость.

Тем не менее тема очень горячая, у меня нет сомнений что инвестиции в неё и гибриды с NoSQL будут существенно расти в ближайшие годы.

Ссылки:
[1] https://arstechnica.com/information-technology/2022/10/replits-ghostwriter-ai-can-explain-programs-to-you-or-help-write-them/
[2] https://replit.com/pricing

#ai #programming
Для тех кто любит программировать на Python и не любит Javascript не могу не рассказать о таком проекте как PyScript [1], код для исполнения кода Python'а на стороне браузера. Включает как простые, так и сложные примеры [2], а также по нему есть огромное руководство с кучей подробностей [3].

Признаюсь, я лично, никогда не любил разработку фронтэнда именно из-за Javascript'а, какое-то сильное чувство отторжение у меня вызывало его использование, так что не только Javascript'у проникать на сервер, но и Python'у в браузер.

А их свежего и любопытного - руководство по написанию расширений для Google Chrome с помощью PyScript [4].

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

Пока единственное ограничение в том что PyScript более-менее оттестирован в Chrome, но даже в Firefox'е его активно не проверяли.

Тем не менее, экспериментировать можно уже сейчас.

Ссылки:
[1] https://pyscript.net
[2] https://pyscript.net/examples/
[3] https://realpython.com/pyscript-python-in-browser/#modules-missing-from-the-python-standard-library
[4] https://medium.com/@petefison/write-chrome-extensions-in-python-6c6b0e2e1573

#opensource #python #programming
Для тех кто любит диаграммы и не любит рисовать их мышкой, декларативный язык программирования D2 [1] позволяет определить набором простых правил как необходимо отобразить нужные блоки диаграммы и получить нужную диаграмму автоматически.

Опубликовано с открытым кодом [2], может использоваться как утилита командной строки или как библиотека для языка Go.

Развивается стартапом Terrastruct [3] у которого есть облачный сервис генерации диаграмм. Стартап существует с 2019 года, а код D2 они выложили месяц назад. Выглядит он довольно зрелым и похож на внутреннюю разработку выложенную в открытый доступ и открытый код.

Ссылки:
[1] https://d2lang.com
[2] https://github.com/terrastruct/d2
[3] https://terrastruct.com/

#opensource #diagramming #datatools #programming
This media is not supported in your browser
VIEW IN TELEGRAM
В рубрике интересных проектов с открытым кодом Latino [1], язык программирования на испанском языке. Да, примерно как в СССР были языки программирования с ключевыми словами на русском, так же и тут, но в основе испанский.

Язык появился в 2015 году, он вполне работоспособен, хотя и, наверняка, не так продвинут как более общеупотребительные языки разработки.

По синтаксису что-то среднее между Python и Lua.

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

Ссылки:
[1] https://www.lenguajelatino.org/

#opensource #programming