Дневник разработчицы
406 subscribers
111 photos
9 videos
14 files
145 links
Откровенные истории о проектах, работе, учебе и открытиях в мире программирования. Присоединяйтесь и вдохновляйтесь вместе со мной!
Download Telegram
Week_2_Written_communication_skills,_Part_2_Assertive_communication.md
10.3 KB
#UOL #Учеба Ничего себе, в новом модуле универа прям софт-скиллам учат, про STARR рассказывают и тп.
🔥31🤩1
#Учеба
Прохожу вот этот курс от IBM, чтобы зачли в универе как один из модулей https://www.coursera.org/professional-certificates/ibm-data-science
Делала курсовую по визуализации, впечатлилась от фреймворка dash https://dash.plotly.com/, он нужен для того, чтобы датасаентисты клепали дашборды. Под капотом у него фласк, реакт и куча всякого замешано. Можно писать html на питоне, создавать шаблоны для динамических страничек. Прикол в том, что он умеет подгружать данные без перезагрузки страницы при изменении фильтров, но весь UI ты спокойно пишешь на питоне. Найс!
Код на курсе, конечно, был говно с точки зрения структуры, но я если честно ради фана потыкала бы в этого зверя еще.
Еще забавный момент, что работу проверяло с помощью AI. LLM изи поставила мне максимальный балл, что очень порадовало.
Продолжаю проходить этот курс, сейчас на 9 модуле из 12. Хех, чуток осталось.

UPD. На сколько же любой курс проще, чем курс по ML от Яндекс и МФТИ! Я прохожу текущий курс и все еще вспоминаю попа-боль, когда проходила их курс, который я так и не прошла до конца, к сожалению.
🔥101
#Работа

https://www.ks.uiuc.edu/Research/namd/mailing_list/namd-l.2020-2021/0138.html
Когда вместо стаковерфлоу или чатгпт, надо читать чужие переписки, чтобы решить проблему.

Короче, суть проблемы. Вот есть программа NAMD, написанная на С/С++. Для нее сделали несколько сборок - для линукса, для кластера, для запуска с CUDA. У второй версии нет поддержки ARM и макоси, а вот в третьей версии есть. Я использую третью версию, но на сервере мы используем вторую, потому что она вроде как считает точнее, чем третья.
Я локально проверила, что у меня на машине работает. Залила на сервер, у меня все отработало успешно, но чет файл с результатами пустой. Я открываю логи, а там в info потоке, даже не в потоке ошибок вижу следующее:

FATAL ERROR: Pair interaction calculation is not supported in CUDA version

FATAL!!! фатал, такой фатал, но скрипт выполнился успешно.

Они не поддерживают некоторые фичи в версии с CUDA. Что ж… ААААААААААААААА!
Придется загружать две сборки с кудо и без кудо, чтобы жонглировать ими. Как же горит.
🔥4
#Tools
Когда микрофон уже пришел, а вот лапа для него еще нет.
На фото второй стакан из-под кофе под эти нужды, в первом я неудачно вырезала дырку и он сломался.
Забавно, что громкость голоса стала лучше после того как я поменяла usb-c, по которому был подключен усилитель к ноутбуку.
🔥5👍1
#Работа #LLM
Решила ввести новый тэг, потому что #ChatGPT уже одна из, а не единственная llm модель. Так вот.

На работе пришли с запросом, что надо сделать что-то с llm и прозвучало слово MCP. Нам рассказали, что сверху спустили запрос, что надо сделать хоть какой-то POC, а потом внедрять это.

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

Нам дали доступ еще к инструменту, который позволяет внутри задеплоить локально модель с https://huggingface.co, cобрать своего агента в очень простом редакторе, похожем на https://flowiseai.com/, ну и задеплоить свое приложение. Я посмотрела на это чудо, нашла опубликованную модель и показала руководителю затраченные ресурсы, где на модель выставлено 50 гигабайт оперативки. Пояснила ему, что будет очень дорого, если каждая команда будет под свою задачу публиковать свою модель. Плюс, что было бы еще неплохо иметь возможность получить токен для использования корпоративной большой модели.

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

На этой неделе будет встреча с гуру AI в компании. Даже интересно, что это будет.

Я пока попробовала локально запустить mcp на базе сваггера нашей основной платформы. Я использовала awslabs.openapi-mcp-server. Оно, конечно, запустилось, но с ошибками и там по идее надо думать на счет промптов и разделения инструментов.

В целом, задача интересная, особенно тем, что в корпе пока нет ничего и все только начинается. Даже жаль, что мы сами ничего не предлагали раньше.
5
#Учеба #UOL
Как же иногда грустно находить такие артефакты в лекционных материалах университета. Я не обращаю внимание на разные мелочи и проблемы, но вот такие вещи - прям режут глаз.
⁃ неиспользуемая переменная
⁃ использование built in названия для параметра
⁃ использование списка как дефолтного значения для аттрибута функции.
Как так то?(
😁7👍2
#Учеба #UOL
https://coursera.org/share/d880563940415bb7815b3393776a273e
Наконец добила один из двух сертификатов, которые нужны взамен модулям в универе. Просто ура. Про курс ничего не скажу. Меня не особо впечатлил, но и не разочаровал. Нормальный курс.

Начала второй https://www.coursera.org/professional-certificates/ai-engineer#courses
Не верится, что в универе осталось всего 2 сессии. Учусь последнее время просто на каком-то автомате - надо, значит надо. :)
🔥8👍3❤‍🔥2
#Работа #AWS S3
Недавно на работе добавила использование пары фичей в проекте для работы с S3:
- Пагинация для получения объектов. Делается легко с помощью https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/get_paginator.html
- Получение списка директорий в конкретной директории с помощью первого метода с указанием Delimiter="/" и использованием из респонса CommonPrefixes для получения директорий.
- Получение подписанного s3 url для того, чтобы можно было скачать файл, вместо того, чтобы раздавать его через лямбда функцию. https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/generate_presigned_url.html Есть еще подобное для загрузки файла сразу в S3.
Все три фичи очень простые, но очень полезные. Работая с S3 уже 5 лет, я дошла до этих методов только сейчас. У меня к самой себе вопрос - как так? Но на самом деле, когда находишься в постоянном потоке легко пропустить какие-то очевидные и простые вещи.
👍3🔥3
#Работа
Недавно в новой версии хрома ужесточили политики безопасности и наш весьма специфичный кейс выстрелил нам в ноги так, как никто даже не ожидал.
Внутри корпоративной сети начало блокировать запросы из iframe в другие домены, хотя во внешнем интернете и вне iframe все работает нормально. Но внутри нашего контура внезапно браузер лочит запросы как CORS с ошибкой: Permission was denied for this request to access the 'unknown' address space.. А у нас все пользователи сидят внутри сети и используют эти iframe. Как временное решение я сделала баннер, чтобы пользователи могли открыть наш UI в новом окне и продолжать использовать, потому что тогда все работает нормально даже внутри сети.

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

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

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

Коллега сказал, что они проверили все сервисы на тестовом контуре и все работает хорошо, даже на двух разных поддоменах одного домена. Я была удивлена, потому что знаю, что если нет явного разрешения в заголовках на использование всех поддоменов в рамках конкретного домена типа “*.domain.com”, то такая схема не должна работать. Но коллега заверил, что все хорошо, они проверили. Я наивная чукотская девочка поверила ему, мы завели домены под наши сервисы, привязали, катнули на тестовый контур и порадовались, что все работает.

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

Что ж, теперь мне предстоит задача обновить все бекенд сервисы для использования новых доменов. В целом это надо обновить общий слой, а дальше просто указать новую версию общего слоя и передеплоить весь зоопарк лямбда функций, которые мы используем для UI.
🤯4🔥2
#LLM
Claude и чтение скриншота с ошибкой:
⁃ Переврал домены в указанных урлах, приплел gcloud, когда там был только aws.
⁃ Переврал текст ошибки. Видим CORS - пишем стандартную cors ошибку, делаем стандартные подсказки. Ничего, что ошибка другая.
⁃ Прошу исправить текст ошибки, он мне снова врет, снова придумывает что-то свое.
⁃ Прошу еще раз прочитать ошибку, указываю пару слов из текста ошибки. Он снова врет, снова приплетает gcloud, когда его на скрине и близко нет.
Психанула, сходила в chatgpt. Тот выдал сразу все четко.
А мне всего лишь лениво было открыть внутреннюю сеть, авторизоваться и открыть браузер, чтобы скопировать текст ошибки из консоли.
Что за дичь?
7🥴1
#Работа
Сижу, готовлю обновление для новых доменов. Решила глянуть что-то на проде. Зашла в систему, обновила хром, открыла iframe - все снова работает без каких-либо изменений…
Вспомнила шутку про вагоны.
https://www.youtube.com/watch?v=23fBoqQxSgQ
😁51
#Работа
Кто молодец? Я молодец ^_^
Раскатала на прод новые домены.

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

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

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

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

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

Потом появился человек, который расширил наши границы возможностей, показав, что можно сделать кастомный пайплайн в корпоративном дженкинсе и открыл для меня тулу https://www.serverless.com/, когда я смотрела на SAM и планировала использовать его.

Мы завели новую монорепу, где я прописала новый деплой процесс на базе IaC. Теперь мы потихоньку переносим туда старые сервисы.

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

Теперь вот история с доменами. В такие моменты прям ощущаешь как важно иметь нормальный CICD, когда у тебя больше 100 сервисов. Где-то половина сервисов имеют свой UI, и их все надо было обновить. Я сегодня вмержила 2 пулреквеста и перекатила около 50 сервисов, 12 из них запуском скрипта с локальной машины.

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

Кстати, проблема с новыми ограничениями, кажется, решилась не на уровне обновления браузера, а на уровне обновления настроек dns внутри корпоративной сети, но нам об этих изменениях никто не рассказал. Что ж. Давно пора была привязать свои домены на самом деле. Но не факт, конечно, что они будут работать стабильнее.
👍73❤‍🔥1
#Жизнь #Сингапур
Скоро придет штраф за оверстей в Сингапуре. Я уже 1,5 месяца жду, когда мне продлят визу депенданта тут. Мне сделали короткую визу, чтобы я могла ждать тут, не выезжая. Я ее уже один раз продлила за 2 недели до окончания предыдущей и недавно подали заявление на второе продление на месяц. Но оказалось, что в прошлый раз они не продлили на месяц со дня окончания предыдущей визы, добавили месяц со дня подачи заявки, то есть продление закончилось на две недели раньше, чем я рассчитывала. Да, это было написано в бумажке. Да, я не прочитала это внимательно. Но кто черт возьми в здравом уме так делает? Где логика?
В общем, я сделала неделю оверстей без визы. Штраф до 6000 сингапурских долларов и в крайних случаях до 6 месяцев тюрьмы. Как-то так. Но вроде за несколько дней не должны давать большой штраф.
В любом случае неприятно. 🙁
🤬3🙈3💩2
This media is not supported in your browser
VIEW IN TELEGRAM
#Tools
Навайбкодила себе ради фана персональную страницу в стартапе мужа ardor.cloud

https://1337-2f44a51f-b730-404d-aca7-0c18c009a068.ardor.cloud/

Получилось несколько пафосно даже 🙂
🔥9😁1
#Работа
С утра одна из менеджеров меня спросила, о том как должна работать логика, которую я выкатила на демо стейдж, чтобы проверить ее. Я аж немного опешила. На самом деле забавно, что задача стояла из разряда - надо сделать хорошо. Я уже сделала несколько подходов к тому как это сделать хорошо. Делала логику - бекенд, фронтенд, показывала постановщику задачи и она просила меня изменить что-то под определенные кейсы. В итоге, я глобально изменила подход, выработала список сценариев на основе существующего пользовательского опыта, предложила и сделала решение. Получается, что нормально сформулировала пользовательскую историю я сама в ходе выяснения требований в процессе разработки.

Так вот, мне написала новая менеджер, которая была на моей демонстрации изменений вчера и сегодня она решила проверить то, что я сделала. Я ей написала список кейсов для проверки. Думаете она их добавила в задачу хотя бы? Нет… Пойду допишу что ль…
4🔥3😱1
#Работа
В прошлом посте я преувеличила слегка, постановка задачи на самом деле была на удивление больше обычного и довольно подробная, хотя и сценарии в итоге мы переделали. Однако, кажется, менеджер туда не заглядывала даже.

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

Такая вот классификация костылей.
😁3👏2💯1
#Работа
В этом году с меня начали просить ежемесячные отчеты по команде по закрытым задачам. Каждое первое число я захожу в жиру и делаю скриншот на базе сохранненного фильтра. Я шарила этот фильтр менеджерам, но видимо, для них это слишком, и скриншот на почту им нравится больше. Хорошо, что у меня был опыт отчетов и это не стало для меня большой проблемой - написать запрос на jql.

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

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

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

| Год | количество человек в команде | количество закрытых задач | закрыто мной |
| 2021 | 2 | 28 | 0 | - я еще не работала в проекте
| 2022 | 2 | 59 | 21 | - я пришла в июле, в тот год в сентябре ушел разработчик, который проработал на проекте первые два года, у него было закрыто 31
| 2023 | 2 | 60 | 35 | - тут мы стабильно работали вдвоем
| 2024 | 3 | 109 | 64 | - в этот год мой коллега ушел и мы решили еще сделать +1
| 2025 | 4 | 128 | 70 | - недавно взяли еще одного человека в команду, поэтому правильнее сказать, что в этом году вносили профит втроем, хотя нас теперь 4.

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

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

Горжусь собой 🙂
🔥16👏13👍2
#UOL #Учеба
Всегда думала, что на старших курсах ты уже привыкаешь к учебе и должно быть несложно.
У меня сейчас предпоследний семестр, начались мидтермы и я открыла задания и такая, а что делать то? Это у меня есть опыт-знания, вот это все, и я сижу над этими заданиями и такая - я чет где-то потерялась.

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

У меня три предмета и все три довольно объемные, а времени до 7 января или 8 выходных, включая этот.

Хэштэг_соберись_тряпка!
😁32👀2
#Учеба #UOL #LLM

Как я пишу работы с помощью ЛЛМ?
Я несколько раз пыталась пойти по ленивому варианту и просто скормить задачу и посмотреть на результат. Это всегда был кошмар, в котором невозможно разбраться.
Поэтому я использую такой путь:
• Инициализация и план работ. Задаем агенту правила игры и заставляем написать план, чтобы потом его придерживаться. Там же хорошо указать критерии оценки.
• Заставить модель отложить документацию на последний шаг. Иначе это будет жесткий расход токенов, при этом бесполезный.
• Дальше идем по плану, я заставляю модель двигаться по маленьким шагам и проверяю каждый шаг, читаю каждую его мысль и заставляю постоянно сокращать, переписывать, постоянно уточняю, тыкаю в лучшие решения. К сожалению, первое предложенное решение моделью не всегда лучшее, редко учитывает нюансы.
• В конце документация и перепроверка, что ничего не продолбано по исходным критериям. Да, часто бывало, что модель просто игнорировала значимые требования.

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

Я сейчас использую claude, часто упираюсь в его лимиты, поэтому на время подготовки таких работ просто докидываю денег на него, чтобы использовать api, когда упираюсь в лимиты.

Из примеров улучшений после агента:
• Он забывает про кэширование и оптимизацию. Приходится его просить, вот тут тяжелая операция сделана, давай закэшируем результат, чтобы не повторять в будущем.
• Не пытается проверить результат, а сразу раскатывает на большие данные. Приходится останавливать и говорить, давай проверим для начала.
• Нашла проблему в текстах (я делаю работу по NLP), что в исходных текстах слова бывают слиты. Попросила разделить, указав примеры. Он мне предложил регулярки, которые не покрывают всего текста. Пришлось уточнять - нет ли модели, которая с этим справится и оказалось, что есть. Потом необходимость применения этой модели он предложил по длине слова, хотя есть у nltk словарь, чтобы можно было проверить существует такое слово или нет.

Ну, в общем, мелочи, но они изрядно заставляют включаться. Если бы я делала все сама, то было бы больше рутины, изучения документации. Тут быстрее в плане того, что я могу сразу что-то делать, но задачи встают другие - проверка, осмысление.
🔥4