Здесь в Цешин, городе, который расположен одновременно в Польше и Чехии, я вспомнил, что когда-то давно на маке стояла софтина Selfie App: она каждый день с вебкамеры делала снимок после открытия крышки лаптопа. У меня несколько тысяч таких снимков накопилось, занятно потом наблюдать за ростом. Делать селфи каким-то аппом — это влом, а компьютером я точно пользуюсь каждый день. Идеальный инструмент для документации жизни и генерации ностальгических вздохов.
ИИ спешит на помощь! Я ни в чём не эксперт и мало что знаю об устройстве системных сообщений macOS, обратился к помощи ChatGPT и Claude. Вместе мы справились.
Сперва пришлось немного пошпионить на тему того, что система шлёт, когда открывается крышка лаптопа? Получил какие-то цифры, отправил в ИИ, мол, давай, друг, проанализируем. И тут вскрылось интересное: Claude отказывается общаться на тему автоматизированного фото через вебкамеру персонального компьютера из соображений безопасности. Прямым текстом говорит, мол, не буду, это не то, чему меня учили. это не очень безопасно. Я говорю, мне, мол, для студенческого проекта, очень прошу. «Нет, извини, брат, никак, я не такой», — отвечает Claude. А вот у ChatGPT, который под руководством Сэма Альтмана летит вперёд, не обращая внимания ни на что — не было с проблем со подсматриванием!
Мне такой расклад показался забавным — он показывает разницу в отношении к тому, что и зачем всё это. Даже на ранней стадии в более осторожную сетку вшиты стоп-краны. Впрочем, к делу.
Общий, процесс создания решения был такой:
сперва я написал в курсорк скрипт на питоне, который выкручивает яркость экрана на максимум через 5 секунд после открытия крышки лаптопа, включает камеру и сохраняет картинку рядом.
пришлось чуть повозиться с тем, что в системе установлено несколько камер (одна вебка, другая iPhone, третья виртуальная), но это уже мелочи и дебаггинг. Указал нужную по конкретному ID, вроде он постоянный, не должен меняться.
оказалось, что событие именно о крышке отловить питон не может, только выход из режима “я сплю”. Пришлось (и это уже o1-preview уровень) искать альтернативные пути.
Написал Swift-скрипт, который трекает сообщения. Попробовал выключать-включать лаптоп, крышку открывать — и смотреть, какие циферки прилетают. Оказалось, что существует таки отдельное событие на открытие, бинго!
Сделал сервис .plist, который засел в LaunchAgents, и который запускает swift скрипт в фоновом режиме.
Swift-код ловит событие и запускает код на Python.
Картинки сохраняются в Dropbox – успех!
Весь процесс занял меньше получаса. Собрал заодно результат прошлых снэпшотов в один мини-ролик: что-то такое хочется получить через несколько лет. И склеить.
Традиционно, я пишу эти заметки, чтобы задокументировать для будущих поколений (не меньше!) скорость развития технологий. Год назад ни о чём таком нельзя было и мечтать: я, как человек деятельный, вечно дёргал своих программистов в Sliday, отвлекал их от важных долгосрочных разработок. Теперь сам пишу. С помощью новых инструментов.
P.S.: Веду канал ИИзвестия, куда публикую новости и результаты своих экспериментов.
Здесь в Кракове золотая осень. Давно хотел написать об одной мелкой, не очень глубокой, но весьма понятной мелочи. За 15 с лишним лет существования моей маленькой IT компании и личного участия во всевозможных побочных цифровых проектах — я видел очень много сценариев карьерного роста. Поделюсь сегодня наблюдением, может кому будет полезно.
Что такое успешная карьера? Предлагаю грубо определиться с терминологией. Предположим, успех определяется так:
Финансовая стабильность: вопрос денег должен быть «закрыт»: на два уровня выше уровня «работаю, чтобы жить». Денег достаточно, хватает и ещё остаётся. Можно думать о более высоких материях.
Личный интерес: вам должно быть интересно. «Самореализация» тоже подходящее слово. Многие, включая меня и Джордана Питерсона, предпочитают сравнивать себя сегодняшнего с собой вчерашним, и с интересом работать на личностным и профессиональным ростом.
Признание: в здоровом объёме тщеславие — это здóрово. Профессиональный вклад кем-то, кто вызывает ваше уважение, ценится — это всегда приятно, это движет вперёд.
Баланс работы и жизни: обязательно должно оставаться время на себя, семью и хобби. Это параметр базового уровня. Без баланса нет долгосрочного, серьёзного успеха. Я очень трепетно к нему отношусь и, можно сказать, что основные усилия направлены именно на его поддержание и сохранение. Предыдущие пункты постоянно добавляют новые параметры в схему, приходится «перевзвешивать» модель.
Итак, пришло время охуенных советов от человека из интернета. Внемлите.
Для невероятного успеха в карьере, как пишут в умных книжках, на долгосрочной основе нужны три вещи:
быть обязательным, не проёбываться — show up!
быть незаменимым экспертом — знать и уметь: тут и 10т часов вшито тож.
быть приятным в работе и общении — софт-скилз, как это сейчас модно говорить.
Так просто? И да, и нет.
Собрать бинго и проставить приятные зелёные ✅ галочки для всех трёх пунктов не легко, но и не невозможно. Однако, что по-настоящему трудно, так это удерживать такое состояние в течение продолжительного времени. Как долго? Давайте прикинем.
В последнем пункте, который я описываю двумя словами «show up», напаковано достаточно много. Приходить на встречи; не проебываться; выполнять то, что обещал, когда обещал, а если не вышло — нормально объяснять почему так получилось; учиться на ошибках и стараться больше так не поступать. Быть исполнительным и обязательным, скажем так. С этим, как со спортивными тренировками, как непрерывающейся цепочкой занятий в Duolingo (streak) — нужно выработать привычку, нужно войти в ритм, и из него не выпадать. Самая сложная в плане выполнения, с моей точки зрения, концепция. Требует дисциплины, самоконтроля, самооценки, и много чего «само-».
✅ Предположим, дисциплинированность, обязательность и исполнительность — всё это заложили в юности родители, школа, университе. Однако, раньше 25 лет в связи с общей бурной социальной активностью я б от нашего персонажа ничего такого не ожидал. Клёво, что на простых работах в начале карьеры одно из важнейших качеств сотрудника — чтобы он банально приходил на работу, появлялся на рабочем месте — show up!
На то, чтобы стать экспертом понадобится, как ни крути, несколько тысяч часов. Каждая тысяча профессиональных часов — это сфокусированный, достаточно напряжённый с практической точки зрения рабочий год: по несколько часов труда в день, каждый день, минус болезни и праздники. Упорные и талантливые, проходят этот период в разы быстрее, всегда есть гении, тут речь об обычных людях. Выходит, что лет 5-10 нужно потратить на первый пункт.
Разыграю оптимистичный сценарий с исключительно целеустремлёным и осознанным героем. Персонажу 20 лет, он хорошо учился, что-то пробовал делать полезного, и оказался в свободном плавании — вышел на рынок труда. Не буду скрывать, пишу портрет с себя ± год.
✅ В 27 с копейками (5-10 лет усреднил) наработались тысячи часов, и появилась экспертиза.
Если интеллигентные родители или культурные книги и фильмы воспитали приятность в общении — супер, можно сразу ставить вторую галку. А если нет, придётся над этим работать отдельно. Как? Ну вот прям учиться общаться с людьми так, чтобы они не думали, что вы мудак какой-то зазнавшийся. Подобно первому, экспертному пункту, в ситуации с софт-скиллами — нет предела совершенству. Моё мнение, что на это, конечно, тоже нужно время: важно вылезать из пузыря комфортного круга общения, общаться с разными людьми по разным поводам. Жизненный опыт за пару self-help книжек и «10 лайфхаков по улучшению софт-скиллов» не появится. Я бы накинул ещё пяток другой лет на, условно, себя показать и на других посмотреть.
✅ К 35 посмотрел на людей, попутешествовал может, поработал с такими, сякими, научился слушать, входить в положение, выходить из ситуаций. Класс.
Это был пример excellent, исключительно хорошей карьеры. Долго, дорого, сложно. С большой вероятностью, если держать все три качества в состоянии «ВКЛ» — заебёшься к успеху придёшь: придут деньги, признание наклюнется, появится время на время для себя, вовлечённость в предмет труда станет выше — начнётся другая жизнь. Хватит ли силёнок?
Одновременно с этим, за пятнадцать лет постоянного самоконтроля и напряжённого труда можно представить, как это истощает. И здесь-то начинается разговор о реальном лайфхаке, о котором книжки не рассказывают.
Итак, big reveal, секретный соус из моего жизненного опыта. Следите за руками.
Можно ли обойтись одним пунктом из трёх? Думаю, нет — не хватит. Зазнавшийся эксперт-ниибацца, который не ходит на звонки, а, если ходит, ведет себя там по-мудацки — ну нахуй такого эксперта. В мире единицы знатоков, которым прощают всё за мега-мозг.
Также крайне мало успешных болтунов-обаяшек, которым дозволено не шарить и опаздывать.
Очень слабо востребованы гипер-исполнительные неучи, с которыми сложно в общении. Возможно, лишь в органах и бюрократических аппаратах такие приживаются.
Обычные ситуации случаются с обычными людьми. Для большинства, для нормальных — буквально нормальное распределение под куполом — людей выбор скорее всего: «2 из 3». Остальное — исключения.
Если играть, что называется, в долгую и хотя бы два из трех пунктов фанатично выполнять — через 5-10 лет все тоже будет хорошо. Если все три держать (что капец как сложно): это опасность сгореть при входе в атмосферу и топовые доходы, новые горизонты — за вами бегать будут! True story.
Итого: для very good, очень хорошей карьеры от которой не плавится мозг, не ломается психика, достаточно двух пунктов из трех! Каких именно? Каждый выбирает для себя.
Предлагаю ещё раз оценить и примерить на себя долгосрочные критерии, каждый из них нужно не упускать из виду в течение 5-10 лет для того, чтобы он засчитался в этом недопсихологическом недотесте:
быть обязательным
быть экспертом
быть приятным
3 из 3:
«Суперстар» — топовый во всем
2 из 3:
«Профи» — надежный эксперт, но не душка
«Душа команды» — надежный и приятный, но не гуру
«Звезда» — крутой эксперт и душка, но иногда подводит
1 из 3:
«Трудяга» — надежный, но не блещет
«Гуру» — эксперт, но с ним непросто
«Дипломат» — приятный, но не особо полезный
Абсолютно нормальное требование подтянуть «софт скиллы»: никто не хочет работать с мудаками. Такое же нормальное, как «выучи новую технологию» и «не пропускай важные продуктовые даты».
Здесь в Кракове выходные прошли не зря. По просьбам читающих, рассказал, как тренировать свои стили в FLUX.1 Dev. Replicate для этого — идеальная платформа, ничего сверхсложного не понадобится.
Задача: как научить нейронную сеть генерировать картинки в моём, каком надо уникальном стиле?
Что вообще значит «научить»? Как вообще получаются картинки в нейронной сети?
То, как я понимаю процесс в целом: начинается всё с шумного изображения, в котором буквально ничего нет, нет ни одной явной, выделяющейся характеристики. Потом в зависимости от текстового запроса (промпта) пикселы перекрашиваются, чтобы больше подходить под «образ», собранный на основе параметров нейронной сети. Язык, исходный запрос — определяют эти параметры. В модели зашито то, как она представляет текст в изображениях. Через пару десятков итераций пикселы приобретают форму и становятся похожи на что-то осознанное.
Файн-тюнин, точная подстройка — это по сути изобретение нового символа, нового слова, создание триггера, чтобы в выдаче появилось что-то похожее на желаемое. Вы буквально добавляете в лексикон нейроннной сети новый образ. Легко визуализировать этот процесс так: вы показываете маленькому ребёнку, который ещё не умеет говорить, мол, это зебра, зеб-ра. И после спрашиваете: нарисуй зебру? Как умеет, ребёнок рисует полосатое нечто, по памяти, как понял. Если без вашего ведома кто-то показывал на улице дорожный переход и тоже называл это зеброй, то есть шанс, что дитя нарисует белые полосы на асфальте, а не африканское животное.
Текущее состояние мира нейронных сетей лишь имитирует работу невероятно сложного человеческого мозга. Компьютеры тратят кучу сил (буквально энергии в виде тепла), чтобы выдать что-то не ужас-ужас какое кошмарное.
Однако, уже сегодня можно использовать мощные сервера в облаке, чтобы научить общедоступные нейросети своим личным словам и образам.
Здесь в Кракове каждый день стараюсь программировать немного. Вчера возникла идея: что, если выборку данных из большого куска искусственный интеллект (ИИ) будет делать “сам”?
Начну чуть издалека. Уже много лет у меня есть расширение для всех браузеров: Site Palette. Его установили себе где-то сто тысяч человек и средне активно генерируют там палитры из скриншотов посещённых сайтов. Никакого ИИ в расширении нет — чистые статистика и математикам на основе доступных в открытом доступе библиотек.
Что делать с этой всей красотой? Захотелось придумать что-нибудь полезное. Выкачал мегабайты анонимных массивов hex-цветов и решил скормить их ИИ. Разумеется, ИИ не хочет есть 20 мегабайт, это слишком много.
Я не программист, поэтому решил, что код писать будет Cursor, а моя работа будет — говорить ему, что делать. Сначала мы с Курсором решили, что данные (сухой набор цветов типа `#884939`) нужно обогатить: и получили более подобный файл, в котором палитры категоризованы по темам и всякое такое.
Потом я сделал скрипт, который придумывает и предлагает на выбор три темы будущего поста (можно самому задать). Вместе с темой придумывает, как данные вытаскивать из общего набора данных. Для тех, кто не понимает, что такое скрипт, что там кто «спрашивает», выглядит оно приблизительно так:
Потом ИИ пишет питоновский скрипт, чтобы выбрать из 900+ палитр список 10 наиболее подходящих. Что значит «подходящих»? Ну, он, ИИ, там сам как-то решает, что использовать: статистические методы, математику — получаются просто мини-питончики такие. Если требуется посчитать самые популярные оттенки, посчитает. Конвертировать в RGB? Сделает. Отсортировать по яркости? Справится. А если ошибётся? Перепишет. Лучше всех прочих моделей текст писал, конечно, Claude Sonnet 3.5.
Затем я попросил ИИ написать блог-пост с выбранными палитрами. Форматирует чистым Markdown. Уже готово к публикации, но можно улучшить. Далее, ИИ пишет код страницы на html+Tailwind. Так, чтобы было видно цвета из выбранных палитр.
Напоследок, ИИ генерирует заглавную картинку в тонах статьи и, если угодно, пишет поверх неё текст для OG картинки с помощью свеженького Flux 1.1 Pro. Получается не хуже поста с орками.
Метаданные для html страницы ИИ тоже, конечно, пишет. Без всяких позорных слов-паразитов вроде «delve» или «let’s dive in».
Так получаются полноценные, готовые к публикации (с купюрами, после проверки глазными яблоками кожаных мешков, конечно) материалы:
Самое интересное — я не программист и не умею писать на Python. Я, пожалуй, могу его читать и понимать, что происходит. Я построил много продуктов и примерно знаю, что нужно получить в итоге, и могу объяснить это на английском с примерами из интернета. А современные IDE вроде Cursor — пишут код. Вместе с o1-preview, последней, наиумнейшей моделью в октябре 2024 (привет, читатели из будущего!) мы — победили.
Самое интересное в этом процессе было наблюдать, как ИИ пишет кусок кода для анализа данных и буквально вшивает (import) в исходный скрипт для дальнейшего использования. В этом магия программирования. Понравилось, как ИИ весьма креатвно подходит к методам обработки данных, учитывает психологию цвета, тренды, сезоны и всё, что «видит» в исходных данных .
В следующий раз попытаюсь написать программу, которая пишет сама себя. Уверен, теперь это возможно. Last famous words.
P.S.: Полное видео и больше примеров конкретно этого приложение ИИ я показал в Telegram-канале ИИзвестия, который я для души и интереса ради веду уж несколько месяцев.
Здесь в Кракове я вписался в новый проект и начал набирать людей в новую команду. Например, сейчас нужен Frontend Developer, расскажите знакомым. Как только опубликовал вакансию в X, сразу повалили боты. Больше сотник документов, резюме и сопроводительных писем люди прислали. Как водится, часть из них совсем никуда не годится и отправлена наобум и на авось. Так появилась идея написать штуку, которая могла бы резюме оценивать и ранжировать с учётом компанейских «красных флагов» и хотелов.
Удачно сложилось, я сейчас плотно связан с разбором документов с помощью мощностей искусственного интеллекта. Строим с командой большое, промышленных масштабов решение, но ничего не мешает экспериментировать с комнатными, тепличными задачками вроде этой.
Я не программист, поэтому воспользовался cursor.com, эта штуковина умеет конвертировать желания продуктово-настроенного человека в код. Говоришь, мол, так и так, напиши, проверь, работает ли — и пишет, и проверяет. Один из новых, довольно популярных инструментов, ничего особенного. Через год все только в таких и будут программировать.
Набросал схему решения в голове:
Вытащить из PDF текст
Просто чтением текста из PDF, если не получается, то…
Попробовать разобрать с помощью pytesseract, банального OCR то есть. Если не получается, то…
Конвертировать в картинки и послать в мультимодальную модель Сomputer Vision.
Сопоставить с помощью «умной» нейронной сетки требования из моего объявления о работе в job_description.txt и получить:
Оценку совпадений: я чуть ниже опишу, как это оценивалось.
Краткий, с личными деталями ответ кандидату на всякий случай
Коротенькое объяснение, почему именно этот кандидат именно так «замэтчился»?
Ссылка на его вебсайт, если есть
Отдельный (не обязательный) запрос проверяет файлы на бонус-очки и «красные флаги»:
опечатки,
грамматические ошибки,
дырки в карьере
явные противоречия
Результаты двух оценок сливаются в экстазе: пропорция 80/20 по-умолчанию, но можно подкрутить и в другую сторону.
80% финальной оценки — это конкретно сватовство: насколько резюме подходит вакансии
20% — это личные ощущения, желания и персональные «красные флаги» стороны нанимающей. Там же, кстати, про diversity и inclusion написано.
Отдельная функция, насколько это возможно, бегает «посмотреть», что на сайте-портфолио. Если там ошибка (самое печальное), это не добавляет очков кандидату.
После этого стоит задача: сортировать по результатам и вывести всё со смешными эмоджиками и титулами вроде «Unicorn Candidate»
Написать для всех отзывы с учётом полученной оценки. Позвать кого-то на собеседования. Письма никто не отправляет, но, когда их нужно будет отправлять — тексты будут уже готовы.
На этом скрипт заканчивает свою работу и откланивается. Дальше решать придётся человеку.
Что там в кишках?
Далее, по порядку. Откуда взялась схема оценки и сватовства? Самая свежая, самая тормозная, самая умная нейронная сеть от OpenAI o1-preview помогла разработать структурированную схему. Как одна идей из улучшения — для каждого пункта делать отдельный запрос с помощью ультра-дешёвой и глупой модели вроде gpt-4o-mini, вполне возможно, что так результат окажется точнее. Он точно будет прозрачнее.
Схема выглядит приблизительно так, многое происходит «в уме»:
Резюме и описание вакансии подгоняются под единую понятийную систему, приводятся к общему знаменателю.
Искусственный интеллект рассчитывает параметры и выдаёт одну цифру от 0 до 100. Это базовый рейтинг: индикатор того, насколько близко подходит кандидат.
Сердце скрипта — интеграция с API мощной языкового модели Anthropic Claude. Кроме того, я только что добавил поддержку OpenAI. Модель использует передовые методы обработки естественного языка для глубокого анализа резюме и описания вакансии. Теперь Resume Job Matcher может:
Ускорить подбор персонала: Автоматизируя рутинные задачи, вы сможете сосредоточиться на стратегических решениях. Это 100% так, уже проверил на себе.
Улучшить качество найма: Отсев совсем «левых» кандидатов — снижает риски неправильного выбора.
Создать положительный имидж: Персонализированные ответы и профессиональный подход к каждому кандидату укрепят репутацию вашей компании. Эта часть отнимает куууучу времени при каждом найме.
Пока писал этот пост, произошло нечто неожиданное… Проанализировал вчера пачку из приблизительно сотник резюме, отправил нашему главному техническому специалисту кандидата с верхней позиции списка, мол, попробуйте парное программирование устроить. Сегодня они поговорили и — и неожиданно хорошо всё прошло, надеюсь, скоро буду высылать оффер.
Как-то так, мне кажется, ИИ докажет свою небесполезность и захватит мир. Напомню, что в канале ИИзвестия я каждый день публикую результаты своих экспериментов и новости из мира нейросетей. Контент, разумеется, бесплатный и ни на что не претендующий. Мне просто надо куда-то сгружать эту информацию так и эдак. Помогает размышления структурировать. Надеюсь, будет интересно.