topdatalab
1.27K subscribers
98 photos
10 videos
17 files
221 links
Канал поддержки книги «Как монетизировать данные». https://topdatalab.ru
Download Telegram
Data Engineer в мою команду в Лондоне!

Начал искать инженера данных в свою команду в Лондоне.
Уровень ближе к Senior. Предпочтительно в Лондоне.
У нас нестандартый open-source стeк: https://t.me/topdatalab/426

Ссылка на вакансию: https://newfts.bamboohr.com/careers/180?source=aWQ9MTE%3D

PS: К сожалению, визу не спонсируем. Если не найду в Лондоне, буду смотреть удаленщиков
🔥93
topdatalab
Как работает Zaraz, иллюстрация к посту выше.
Начал внедрять альтернативу Google GTM и Google Analytics - Cloudflare Tag Manager (в прошлом Zaraz) в финтех проект, чтобы собирать данные с сайта.

Еще раз в чем его плюсы:
1) Исполнение JS кода трекеров на стороне серверов Cloudflare
2) В админке можно подключать рекламные трекеры, или даже свои Custom endpoint
3) Ничего на сайте не нужно делать, только развесить кастомные события. Cloudflare сам внедрит JS
4) Cookie consent кривой, но есть хорошее API.

Как делаю:
1) ставлю Cloudflare Tag Manager на сайт
2) сделали кастомный https endpoint на Cloudflare Worker, который пишет логи на S3 (R2 Cloudflare) в виде JSON
3) прикрутил Duckdb процессор к SQLMesh (https://t.me/topdatalab/459), чтобы забирать данные по S3 и лить их прямо в Postgres не выходя из SQLMesh.

Вот что значит sexy data engineering!
👍8🔥6
topdatalab
Вышла в апреле, толстая - 500 страниц. Пора уже посмотреть на инженерные подходы, мне перестало хватать собственных знаний. Впечатления напишу потом
AI всегда даст под "дых", если вы "плаваете" в какой-то теме.
Поэтому учиться нужно всегда!

Рекомендую эту книгу, прочитал уже треть. Знаниями уже пользуюсь!
Рекомендую, если вы знаете базово Python и планируете писать приложения с данными на уровне выше, чем vibe coding.

PS: Как же на Python неудобно писать сложные приложение по сравнению со Scala 🙁
👍6🔥2
topdatalab
Ожидаемо от Cursor Auto будут чарджить по usage. “Second, we’re updating our limits on "Auto" for individuals. At your next billing renewal after September 15, Auto will contribute to your included monthly usage at competitive token rates. From December…
Если купить годовую подписку на Cursor до 15 сентября, то Auto режим не будет чарджится как API вызовы

UPDATE: подписку купил!
🔥8
Использую Cursor Auto mode, Claude Code, ChatGPT codex именно в этом порядке.

Почему? Прежде всего из-за скорости ответа, она деградирует именно в этом порядке.

На все сервисы я подписан самой дешевой подпиской. И использую их в курсоре.
Еще одна важная особенность Cursor индексирует всю кодовую базу, а Code и Codex делают поиск.

Плюс все эти компании выкатывают апдейты моделей или переключают их на квантизованные (худшее качество) в момент больших нагрузок.
Поэтому я не ведусь на рассказы, что Claude лучше Cursor. Сегодня да, а завтра нет.

Аглоритм мой такой: иду по списку моделей, если вижу, что с трех попыток текущая ничего толкового не сделала, беру следующую.
👍171🍾1
Увидел, что Intercom запустил блог research
https://fin.ai/research/

Ребята вовсю тренируют локальные LLM модели, и используют RAG.
Я туда собеседовался полтора года назад - получил очень приятно впечатление.


Про Intercom: https://t.me/topdatalab/334
Про мой RAG: https://t.me/topdatalab/462
🔥31
Немного негатива про AI кодинг 🙂

1) У меня была серьезная проблема с производительностью веб сервера из-за моей ошибки. Ни один LLM помощник не помог мне ее решить.
Помогла книга, которую я рекламировал выше
2) Ни один LLM агент не предложил использовать MATERIALIZED для CTE в Postgress. Я и сам не знал про эту опцию, пока не подсказали. Включил - улучшил производительность в разы
3) В процессе анализа кода я обнаружил три функции, которые делают одно и то же. Грешу на Claude
4) Примерно через неделю после плотной работы я обнаружил функцию на 1500 строк 🙂 до сих пор с ней разбираюсь
5) В целом AI плохо работают с абстракцией в коде
6) Агенты не подсказали мне использовать Pydantic и data classes

Меня лично эти проблемы заставили учиться серьезнее и обложиться книгами.
Но от агентов я не отказываюсь!
12👍8🔥2
topdatalab
Запустил пару недель назад веб-приложение с RAG 1) Сетка Qwen 3 embed 0.4B - работает прямо на процессоре, поэтому самая маленькая. Пришлось конвернуть в формат ONNX 2) Готовые эмбеддинги в Postgres в pg_vector. Считал на своем домашнем AI сервере Пробовал…
выложил новую версию приложения:
- добавил UI фильтры (htmx + JS)
- переинжинирил код
- добавил трех email провайдеров
- на днях буду менять нейросеть QWEN 3 на Gemma 3 embed

мои наблюдения по LLM кодингу:
- мелкие JS библиотеки плохо поддерживаются (Alpine JS), проще использовать обычный JS
- htmx, Tailwind - хорошо

Смотреть: https://corpsignals.com/app/

PS: не будет AGI 🙂 все это рекламная болтовня AI вендров.
Серьезный софт инжиниринг не заменит, но пишет он быстрее человека, чем я и пользуюсь
👍3
Завтра позвали на
https://www.anthropic.com/events/london-builder-summit-2025

думаю будет полезно


Update:
Hi Roman,
Thank you for your interest in Anthropic Builder Summit London on Wednesday, 1 October 2025.
An email you may have recieved a few minutes ago was sent in error and we apologize for any confusion.
Capacity for the event is very limited, and were unable to approve your application to attend at this time.
However, we will host a number of events in London in the future and would love to have you.  
🙈6👍3🔥31💯1
Неделю назад был модератором панели про AI в Enterprise search, здесь, в Лондоне
🔥13👍7
Вот и Andrew Ng выпустил курс по Agentic AI
https://www.deeplearning.ai/courses/agentic-ai/

В чем его крутость - он не привязан к framework (LangChain и пр). И это хорошо!
Думаю пройду его.
9👍3
Две плохие новости за последний месяц: Fivetran купила SQLMesh и dbt.

Почему это плохо.
SQLMesh относительно молодая компания, ей около трех лет. То, что ее продали, означает, что они не смогли сделать выручку или не хватило амбиций фаундеров.
Думаю, что сейчас фаундеры SQLmesh ходят грустные.

Про dbt не скажу, но SQLMesh наступала ей на пятки.
И такая консолидация плохо повлияет на развитие инструментов.
💯9👍4😢1
В компаниях часто нужно ограничить доступ к данным клиентов или филиалов.
Мне это удалось сделать в Metabase Pro, SQLMesh и Postgres.

Я использовал Row Access level в Postgres. Все управляется из кода SQLMesh.
Для это к конце SQLMesh скрипта нужно написать


JINJA_STATEMENT_BEGIN;
-- Enable Row Level Security
ALTER TABLE {{ this_model }} ENABLE ROW LEVEL SECURITY;
ALTER TABLE {{ this_model }} FORCE ROW LEVEL SECURITY;

-- RLS Policy for data_engineer role (full access)
DROP POLICY IF EXISTS rls_data_engineer_all ON {{ this_model }};
CREATE POLICY rls_data_engineer_all ON {{ this_model }} FOR ALL TO data_engineer USING (true) WITH CHECK (true);
GRANT ALL ON {{ this_model }} TO "data_engineer";

-- RLS Policy for general role (full access)
DROP POLICY IF EXISTS rls_general_select ON {{ this_model }};
CREATE POLICY rls_general_select ON {{ this_model }} FOR SELECT TO general USING (true);
GRANT SELECT ON {{ this_model }} TO "general";

-- RLS Policy for germany role (restricted by legal_entity)
DROP POLICY IF EXISTS rls_germany_select ON {{ this_model }};
CREATE POLICY rls_germany_select ON {{ this_model }} FOR SELECT TO eu USING (entity = 'Germany');
GRANT SELECT ON {{ this_model }} TO "germany";

JINJA_END;

-- ACCESS RIGHTS
ON_VIRTUAL_UPDATE_BEGIN;
ALTER VIEW @this_model SET (security_invoker = true);
ALTER VIEW @this_model SET (security_barrier = true);
GRANT SELECT ON @this_model TO "general";
GRANT SELECT ON @this_model TO germany;
ON_VIRTUAL_UPDATE_END;


Здесь используются три роли с разным доступом:
- data_engineer- полный доступ
- general - полный доступ на SELECT
- germany - доступ только к строкам, где в колонке entity написано Germany

К сожалению pre statement макросы, которые генерируют несколько строк SQL работают плохо в SQLmesh, поэтому использовал Jinja.
Также мне не удалось сделать доступы на уровне колонок. Оно заработало, но в Metabase пользователь не может видеть таблицу, если у него ограничен доступ к одной из колонок. Я пытался обойти это, но нарвался на баг в SQlMesh
https://github.com/TobikoData/sqlmesh/issues/5461

В итоге я вынес колонки с персональными данными в отдельные таблицы.

Как работает с этим Metabase: https://www.metabase.com/docs/latest/permissions/impersonation
73
Примерно с 28 мая DBT запустила новый проект FUSION.
Выглядит как ответ SQLMesh.

https://github.com/dbt-labs/dbt-fusion
Заявили, что пишут на Rust, а не на Python. Не уверен, что это правльное решение для open source проекта.
2👍1