codebuddy.tech

building in public from Vancouver

Создание AI-инструментов между поездками Uber: как я превратил мёртвое время в золото разработки

Привет, меня зовут Крис. Я бывший ремесленник, ставший водителем райдшеринга здесь, в Ванкувере, и я наткнулся на кое-что довольно невероятное. За полтора часа, которые у меня в среднем есть между поездками каждый день, я самостоятельно учусь создавать приложения на базе ИИ прямо на телефоне. То, чего я достиг в эти разрозненные моменты простоя, честно говоря, удивляет даже меня.

Я ушёл из ремесла не по своей воле. Циркулярная пила отхватила мне почти весь большой палец — и всё. Более двадцати лет работы маляром, сантехником и плотником закончились одним неудачным моментом. Не буду притворяться, что я не был зол какое-то время. Но вот в чём дело: быть ремесленником — даже когда инструменты меняются, подход к решению проблем остаётся. Когда сталкиваешься с препятствием, ты не ждёшь, пока кто-то другой его устранит. Ты строишь решение.

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

Мышление ремесленника: решение проблем в коде

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

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

Романтика создания собственных инструментов, однако, реальна. Есть что-то глубоко удовлетворяющее в том, чтобы создать решение, которое идеально подходит под твой рабочий процесс, оптимизировано под твои конкретные нужды, а не под предположения продакт-менеджера о том, что хотят пользователи. Вопрос, с которым я постоянно борюсь: когда этот подход служит продуктивности, а когда превращается в оверинжиниринг, замаскированный под решение проблем?

Первый мост: мой кастомный SSH-клиент

Моё флагманское творение — это iOS-приложение, которое я назвал Terms — сейчас оно в четвёртой итерации. Этот SSH-клиент развивался годами реального использования в те разрозненные моменты между поездками и стал идеально подогнан под мой уникальный рабочий процесс копирования-вставки, речи-в-текст и AI-ориентированного кодинга.

Приложение использует биометрическую аутентификацию — конкретно Face ID. Когда я его открываю, система распознаёт моё лицо и переносит меня прямо в мою VPS-среду, за командную строку. Технология, стоящая за Face ID, впечатляет: камера TrueDepth от Apple проецирует более 30 000 невидимых точек для создания точной карты глубины лица, используя инфракрасное изображение для работы даже в темноте.

Возможность сидеть с телефоном, создавая инструменты с реальным потенциалом, постоянно исправляя баги и оптимизируя — это неподдельное удовольствие. Очень рекомендую. И да, есть что-то по-тихому удовлетворяющее в том, что те же руки, которые когда-то возводили стены и паяли медные трубы, теперь деплоят Python на Linux-сервер с парковки в Ванкувере.

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

Техническая реализация основана на хранении зашифрованных SSH-ключей в связке ключей iOS, что обеспечивает аппаратную безопасность на устройствах с Secure Enclave. Управление состоянием соединения было одной из самых сложных частей — обработка сетевых переходов, когда я перемещаюсь между разными вышками сотовой связи и точками доступа Wi-Fi по всему городу. Я реализовал уровень персистентности соединения, который может обнаруживать изменения сети и автоматически переподключаться к удалённой сессии, часто настолько бесшовно, что я даже не замечаю, что переход произошёл.

Мог ли я добиться схожей функциональности с существующими SSH-клиентами? Безусловно. Но те приложения оптимизированы под общие случаи использования, а моё сфокусировано на моём конкретном рабочем процессе. Кастомные сочетания клавиш, интеграция с iOS-функцией речь-в-текст для кодирования голосом, а также специализированное управление буфером обмена для перебрасывания фрагментов кода между телефоном и сервером — эти функции существуют, потому что я создал их под свои точные нужды.

Мост «видео-в-аудио»: решение трения в рабочем процессе с контентом

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

Мой подход заключался в том, чтобы сначала конвертировать видео в аудио — гораздо более лёгкий процесс, чем загрузка больших видеофайлов. Годами я полагался на стороннее приложение для этого, но когда обновления iOS его ломали или мне нужны были специфические аудиоформаты, я оказывался в тупике. Поэтому я создал собственный конвертер.

Лежащая в основе технология опирается на FFmpeg — мощный открытый мультимедийный инструмент.

Get new posts

Subscribe in your language

New posts delivered to your inbox. Unsubscribe anytime.

Receive in: