📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Full Tutorial: A Proven 3-File System to Vibe Code Production Apps | Ryan Carson

Peter Yang51:54

Transcription

Представьте, что к вам на порог явился очень умный инженер. У него нет контекста, нет предыстории. Вы же не скажете, знаете ли, случайному новому сотруднику: "Сделай мне игру, в которую супер интересно играть, а потом ожидайте, что он добьется успеха". Это не ракетостроение, но я думаю, что причина, по которой у этого репозитория на GitHub около 4000 звезд, заключается в том, что люди хотят иметь процесс, которому можно следовать, чтобы получить лучшие результаты. Я бы не хотел, чтобы ИИ убежал и создал 30 задач. Я бы хотел, чтобы он создал высокоуровневый, знаете ли, дал мне пять задач, а затем я хотел бы их утвердить. Давайте поговорим о вашей трехчастной системе, а также о том, чем она отличается от типичного VIP-кодирования. >> Итак, я немного расскажу вам, как это работает. >> Хорошо, добро пожаловать всем. Мой сегодняшний гость — Райан. Райан — серийный основатель, который в одиночку строит свой следующий стартап, разговаривая с ИИ несколько часов каждую ночь. И у Райана есть потрясающая трехчастная система для кодирования с ИИ, которую я действительно с нетерпением жду, чтобы продемонстрировать. И мы также поговорим о том, знаете ли, каково это — строить ИИ-стартап в качестве единственного основателя. Так что добро пожаловать, Райан. >> Отлично. Мне очень приятно быть здесь. Мне нравится описание того, как я кодирую часами по ночам. Это кажется знакомым всем. Так что это я. С нетерпением жду возможности пообщаться и поделиться кое-чем, что я узнал. >> Да. Я не знаю, есть ли вы родитель, но, знаете ли, да. У меня есть время кодировать только по ночам. Просто идите обратно спать. Да. >> Итак, лучшее время — либо поздно ночью, либо утром. Но, как вы знаете, проблема в том, что если вы собираетесь сделать одно, а потом получается два, то вы думаете: "О, черт. Мне придется за это завтра расплачиваться. Так что вам придется остановить это в определенный момент". >> Да. Давайте перейдем к делу. Давайте поговорим о вашей трехчастной системе. и, возможно, вы сможете поделиться тем, каково это, а также тем, чем она отличается от типичного Vibe-кодирования. >> Да, конечно. Итак, позвольте мне дать людям некоторый контекст, чтобы они лучше поняли, как я сюда попал и каков мой набор навыков. Итак, я окончил Университет штата Колорадо, получил степень по информатике и устроился на первую работу веб-разработчиком. Так что я в основном учился, читая книги O'Reilly. Так что, вероятно, есть поклонники, которые любят O'Reilly. И, знаете ли, читал кулинарные книги по PHP и начал создавать. Затем, перематывая вперед, я подумал: "Хорошо, какая проблема меня волнует?". И я понял, что нужно отправлять большие файлы, которые нельзя было отправить по электронной почте. Так что я, по сути, создал Dropbox. Он назывался Drop Send. Я создал его сам. Мы сами обслуживали наши серверы, и он был приобретен, я думаю, через два года. Так что это был мой первый стартап, когда он был действительно основан в одиночку. это был B2C продукт, но это было захватывающе, а затем я понял, что действительно хочу масштабировать это и расширить возможности большего количества людей, поэтому мы создали онлайн-школу, обучающую кодированию, так вот где родился Treehouse. >> Мы в итоге привлекли венчурный капитал, масштабировали команду до более чем 100 человек и научили около миллиона человек кодировать. Так что потом я просто кодировал, кодировал, кодировал часами и часами по ночам. И моя жена говорит: "Пожалуйста, приходи в постель в какой-то момент". Так что, если я поделюсь своим экраном и покажу вам, о чем мы говорим. Хорошо, давайте я покажу вам реальный репозиторий GitHub. Он с открытым исходным кодом, так что, пожалуйста, используйте его. И я расскажу вам о трех файлах по ходу дела. Вот он. Итак, у нас есть три файла. Итак, файл create PRD. У нас есть файл generate tasks, а затем у нас есть файл process task list. И это просто промпты, верно? Так что я покажу вам первый, который вы бы использовали. Теперь позвольте мне быстро объяснить, как вы бы это использовали. Итак, скорее всего, вы будете использовать своего агента, и у вас появится идея для функции, которую вы хотите использовать. А затем вы поговорите об этой функции, а затем вы тегнете этот файл. Так что я собираюсь показать его вам, а затем, вероятно, перейду к агенту и покажу, как это может работать. Итак, если мы немного почитаем, цель — помочь ИИ-ассистенту создать подробный PRD в Markdown. И процесс довольно прост, верно? Это четырехэтапный процесс. Вы, ИИ, получите первоначальный промпт. Затем агент задаст уточняющие вопросы, а затем сгенерирует PRD, а затем сохранит PRD в виде файла Markdown. Мы дали ему несколько примеров уточняющих вопросов. Он может спросить, знаете ли, о проблеме, цели, целевом пользователе и т. д. А затем мы немного поговорили о структуре PRD, целевой аудитории и выводе. >> Да, уточняющие вопросы довольно важны, потому что я становлюсь таким ленивым, когда дело доходит до промптов для ИИ. Я просто говорю: "Эй, сделай мне это, знаете ли, приложение для фильмов" или "Сделай то". Это заставляет меня на самом деле предоставлять больше деталей. >> Да, это потому, что я люблю говорить всем: "Знаете ли вы, представьте, что к вам на порог явился очень умный инженер, верно? У него нет контекста. Знаете ли вы, у него нет предыстории, и вы не просто скажете, знаете ли, случайному новому сотруднику: "Сделай мне игру, в которую супер интересно играть", а затем ожидайте, что он добьется успеха, или скажете: "Хорошо, мне нужно знать больше". Так что давайте покажем вам это в действии. Позвольте мне переключиться на Ghosty. Хорошо, я перенесу вас в свой терминал, чтобы показать это в действии. Итак, я большой поклонник Ghosty. Так что, если вы на Mac и вам нужно использовать терминал, я бы полностью рекомендовал Ghosty. Это потрясающе. А затем я использую T-Mox в качестве средства для снятия боли. Опять же, вы можете использовать IDE, что абсолютно нормально. Но я как-то влюбился в этот подход "голого металла". Итак, справа у меня одна панель, на которой я собираюсь запустить AMP. Так что мы собираемся сделать это через секунду. И снова моя клавиатура HHKB сейчас меня подводит. Так что мы сделаем AMP и запустим его со специальной функцией под названием TUI, потому что это бета-функция, что довольно круто. А затем слева мы запустим Neoim. Итак, давайте запустим это, и мы покажем вам. Хорошо, слева у нас наш проект, и я собираюсь использовать реальный репозиторий моего стартапа. Он называется Untangle. Это приложение на Next.js. Это около 100 000 строк TypeScript. Так что это довольно приличный репозиторий. >> И справа у нас, очевидно, AMP, который является моим агентом по выбору, работающим в командной строке. Итак, давайте подумаем о функции, которую мы хотим выпустить. Итак, Untangle — это, по сути, приложение, которое помогает людям пройти через развод. И причина в том, что >> Да. >> Это реальная проблема, с которой сталкиваются люди. К счастью, я счастливо женат. Я женат на своей замечательной жене уже 21 год. Но у меня три сестры, и мы лучшие друзья. И около 2-3 лет назад, к сожалению, моя старшая сестра развелась, и это было довольно тяжело и дорого, а затем, к сожалению, немного позже моя младшая сестра развелась, и я просто видел, как это тяжело, и подумал: "Знаете что, я чувствую, что могу помочь людям пройти через этот процесс, знаете ли, помочь им заполнить все формы, наложив сверху очень умную большую языковую модель, знаете ли, это сэкономит им много денег на юристов, много боли. Это не юрист. Но это делает много вещей, которые должны сэкономить вам деньги. Так что это контекст. Так что, я думаю, мы добавим небольшую функцию, когда пользователь будет проходить онбординг, чтобы попытаться понять, как пользователь относится к своему нынешнему партнеру. Так что я собираюсь зайти сюда, и я также большой поклонник Whisper Flow. Так что я говорю большинство своих промптов. >> Я тоже. Так что я сделаю это. >> Хорошо. Хорошо. Итак, я хочу создать функцию, которая поможет нам понять, как пользователь относится к своему нынешнему партнеру. Мы хотим попытаться выяснить, находятся ли они в хороших отношениях, не в хороших отношениях, разговаривают ли они. Знаете ли вы, каковы эти отношения? И мы хотели бы оценить это от 1 до 10. Один — это ужасно, а 10 — это хорошие отношения. Хорошо. Так что это функция, мой своего рода бллее. А теперь мы собираемся тегнуть файл PRD. Давайте посмотрим, смогу ли я вспомнить, как он называется. Create prd. Хорошо. Так что мы тегнем это, и мы позволим ему работать и катиться. >> И это, по сути, как бы слэш-команда, верно, которую вы создали где-то. >> Ну, нет, это буквально просто тегирование файла, чтобы поместить его в контекст. >> Хорошо. >> Так что это очень просто, верно? Это своего рода причина, по которой я создал эти промпты в формате Markdown, которые вы, по сути, тегируете в промпте. Так что мы видим некоторые токены рассуждений. А затем теперь мы получаем ответ. Я собираюсь сохранить это довольно легко. Знаете ли вы, обычно я бы просмотрел и ответил на все это. Но на самом деле, чтобы ускорить это, я скажу: "Почему бы вам не выбрать то, что вы считаете лучшим для всего этого?". Хорошо. Так что AMP собирается запуститься и выбрать то, что, по его мнению, лучше всего, а затем он сгенерирует PRD. Так что здесь происходит этот управляемый процесс. Теперь, нужно ли вам делать что-то подобное, когда вы просто исправляете быструю ошибку? Конечно, нет, верно? Но это очень полезный способ пройти через: "Хорошо, мне нужна довольно большая функция, написанная. Мне нужен план. Я хочу пройти через это. А затем, я хочу выпустить это". >> Ага. >> Итак, сейчас он будет думать об этом. >> И вы используете что-то вроде Sonnet или >> Да. Так что одна из интересных вещей об AMP, которая мне на самом деле сначала не понравилась, — это отсутствие селектора моделей. И я помню, когда я впервые попробовал, я подумал: "Подождите минутку, какую модель я использую и как это работает, а также где находятся кнопки принятия или отклонения изменений?". И я узнал, что AMP очень категоричен в выборе определенной модели, которая была высоко оптимизирована для harness агента. >> потому что все, кто занимается разработкой с моделями, знают, что каждая модель сильно отличается, и вы не можете просто менять модели на лету, это просто не работает. И поэтому команда AMP решила использовать Sonnet 4 в качестве основного драйвера для основного агента. А затем через минуту я покажу вам эту довольно крутую функцию, где вы можете попросить Oracle помочь. И что это делает, это вызов инструмента к 03. И тогда вы получите больше рассуждений. Это немного медленнее, но вы получите более продуманные ответы. И я склонен думать об этом как о том, что я хочу задать вопрос своему старшему инженеру и получить его мнение. Мы также используем Gemini Flash для некоторых задач суммирования. Так что, хорошо. Давайте вернемся сюда. >> Хорошо. Итак, он создал PRD. Он называется PRD partner relationships assessment MD. А затем я собираюсь тегнуть следующий файл, чтобы сгенерировать эти задачи. Давайте быстро взглянем на этот файл. Итак, мы увидим, что он называется PRD. Вот он. Я на самом деле собираюсь. Хорошо, так что вы можете видеть, знаете ли, довольно простой PRD. Эта функция будет оценивать и оценивать текущую динамику отношений, цели, пользовательские истории. Что еще у нас есть? Пара открытых вопросов, метрики успеха. Так что, в общем, то, что вы ожидаете от приличного PRD. >> Ага. >> Хорошо. Итак, теперь я переключу свой экран обратно. Хорошо. Итак, мы вернулись к репозиторию GitHub, и я покажу вам наш следующий файл, который мы собираемся тегнуть. Который является файлом generate tasks. Итак, у нас есть отличный PRD, и теперь мы хотим создать конкретные атомарные задачи, которые мы хотим, чтобы агент выполнил. И снова, это промпт, который мы собираемся тегнуть. Правильно? Итак, цель — помочь ИИ-ассистенту создать подробный пошаговый список задач в формате Markdown. И он должен направлять разработчика через реализацию. Правильно? Так что нам нужен файл Markdown, он должен быть в папке tasks, мы хотим получить это имя файла. Так что это довольно просто. Опять же, у вас есть 10 шагов, которым я хочу, чтобы ИИ следовал. >> Получить PRD, проанализировать PRD, оценить текущее состояние. Фаза один, он генерирует родительскую задачу. Правильно? Так что я бы не хотел, чтобы ИИ убежал и создал, знаете ли, 30 задач. Я бы хотел, чтобы он создал высокоуровневый, знаете ли, дал мне пять задач, а затем я хотел бы их утвердить, а затем, а затем я хочу детальный. Так что вот что мы делаем здесь. Генерируем родительские задачи, сообщаем пользователю, >> ожидаем подтверждения, а затем генерируем подзадачи. >> Да. Да. Я думаю, что родительские и подзадачи довольно важны. Да. Потому что обычно он просто генерирует около 30 разных задач. >> Да. Я думаю, это будет лучше по мере улучшения моделей, верно? Но прямо сейчас, я думаю, все мы, кто занимается разработкой с этим, понимаем, что вам действительно нужно обращать внимание. >> Вам нужно читать то, что говорит агент, и направлять его. >> Но, знаете ли, я не вайб-кодер. >> Я думаю, что многие люди, смотрящие это, не вайб-кодеры. Мы просто инженеры, которым нужно создавать реальные вещи. И поэтому эти шаги очень важны. >> Это то, как будет выглядеть файл. Итак, у вас есть соответствующие задачи, и это просто для поддержания контекста для агента. Эй, над какими файлами мы работаем, чтобы он мог вернуться к ним. Некоторые заметки, которые ему могут понадобиться, а затем это задачи. И причина, по которой я использую точечную нотацию для этих задач, заключается в том, чтобы они были атомарными и понятными. Так что у вас есть, знаете ли, 1.1, 1.2 и так далее. Так что довольно просто. Давайте покажем это в действии. Я переключусь обратно. >> Хорошо. Хорошо. Итак, мы вернулись в Ghosty, и мы собираемся использовать этот файл generate task. Так что давайте вернемся сюда. Несколько вещей, которые довольно забавно отметить. Соннет теперь имеет гораздо больше контекста, верно? Так что у вас есть как минимум 400K. Иногда до миллиона, в зависимости от того, хотите ли вы это использовать. Однако это дороже. >> Это сколько строк мы изменили. Мы очевидно добавили около 70 строк, которые вы можете видеть здесь. Так что давайте тегнем это. И я могу на самом деле, я собираюсь тегнуть как PRD, так и generate tasks, generate task. Вот так. Так что я просто тегну оба, чтобы агент имел оба эти элемента в контексте. И мне даже не нужно говорить ему, что делать, потому что все инструкции в generate task есть. Так что мы позволим ему немного поработать над этим, и мы снова откроем наш файл, чтобы вы могли видеть, что происходит. >> Да. Обычно вы, вероятно, сначала просматриваете PRD, убеждаетесь, что, знаете ли, вносите некоторые правки, а затем просите его сгенерировать задачу, верно? >> Вы бы. Да. Я бы обычно читал этот PRD немного внимательнее. >> Да. >> Но чтобы вы все не заскучали, наблюдая за этим, мы не будем читать это слишком внимательно. Что интересно, у многих агентов, таких как AMP, теперь есть списки дел. Так что вы можете видеть в правом нижнем углу, что он строит свой собственный список задач. Я должен сказать, что, знаете ли, будь то Cloud Code, Cursor CLI, AMP или любой другой агент, это довольно стандартно. Я думаю, что все они сейчас выпускают задачи. >> Вам приходится управлять этим немного между ними, так что вы можете видеть, что эти высокоуровневые задачи имеют смысл. Но через минуту я попрошу его выполнить эти очень подробные атомарные задачи и не использовать свою собственную систему задач. Так что давайте посмотрим, что он делает. Итак, он говорит: "Я сгенерировал высокоуровневые задачи на основе ваших требований, готов к генерации". Так что я на самом деле открою этот файл. Давайте переключимся сюда. Как он называется? Он называется tasks. Вот так. Хорошо. Скройте это. Хорошо. Итак, у нас есть соответствующие файлы. Он будет смотреть на схему, потому что мы, вероятно, будем записывать эти вещи. У него есть основная страница анкеты для оценки отношений. У него есть схема валидации ZOD и так далее. А затем несколько заметок. А затем задачи. Это самое важное, верно? Итак, номер один: схема базы данных и слой данных. Номер два: пользовательский интерфейс анкеты для оценки. Номер три: логика расчета оценки. Номер четыре: отображение результатов, интерпретация. И номер пять: интеграция системы рекомендаций ИИ. Я думаю, это довольно хорошо для меня. Если бы я не записывал подкаст, я бы, вероятно, углубился в это немного больше. >> Да. >> Я дам ему немного обратной связи и скажу: "Я думаю, я скажу". >> Нам нужно создать ветку, прежде чем мы сделаем все это. Так что добавьте это как первый шаг. Так что всего шесть шагов. Я также хочу убедиться, что на самом деле, никогда не mind, мы не будем этого делать. Так что давайте удалим эту последнюю часть. Вы увидите, когда мы будем генерировать подзадачу, мы на самом деле убедимся, что мы пишем тесты. >> Хорошо. >> И причина создания ветки просто в том, чтобы вы знали, если что-то пойдет не так, вы можете просто откатить. >> Точно. Да. Так что обычно, знаете ли, я создаю ветку для любой функции, которую я создаю. Я на самом деле являюсь частью основной команды разработчиков AMP. Так что мы всегда коммитим, мы всегда создаем PR для всего, что мы делаем, чтобы их можно было объединить обратно. Так что, хорошо, он говорит: "Отлично. Мы добавим первый шаг сюда". Так что давайте перейдем сюда и обновим файл. И вы можете видеть, мы добавили "Создать ветку функции". Хорошо. Теперь я покажу вам, мы на самом деле продолжим процесс и скажем "Go". Так что вы можете видеть здесь, он сказал: "Отлично. Обновите список задач, чтобы включить создание ветки как шаг первый, всего шесть, готовы к генерации подзадач". Я скажу: "Да, давайте сделаем это". Так что теперь AMP собирается пойти и создать подзадачи для каждой из этих шести родительских задач. На самом деле, знаете ли, я остановлю это. Я покажу вам кое-что очень быстро, что я хочу сделать. Я скажу: "Почему бы тебе не вызвать оракула, чтобы убедиться, что мы не упускаем никаких более крупных родительских задач?". Я, вероятно, должен был это сказать, но это пример того, что я хочу использовать немного больше вычислительной мощности, чтобы действительно убедиться, что я ничего не упускаю. Итак, в AMP, как я уже сказал, это вызов инструмента к 03, так что он будет использовать немного больше рассуждений. Это немного дороже. И если вы используете любой другой агент, вы, очевидно, можете переключить селектор модели, а затем сделать это, но мне нравится DX просто иметь возможность поговорить с более старшим инженером. >> Так что мы можем видеть прямо сейчас, что он консультируется с Оракулом. И он проверит пару вещей. Это, очевидно, работает на 03, так что это будет немного медленнее. >> Да. Чтобы вернуться. >> О, это как >> Да, он, вероятно, проверит. Он проверит все ваши файлы или только этот? >> Ну, не обязательно. Так что он делает, это просто использует больше интеллекта, верно? Так что мы используем немного более тяжелую модель рассуждений. И затем говорим: "Посмотрите, что мы делаем, все, что находится в контексте". Он не делает много вызовов инструментов, верно? Так что я думаю, это ценно, что вы не получите много агентского поведения здесь. Вы говорите: "Я просто хочу, чтобы кто-то дважды проверил, что я делаю". >> И он говорит: "Хорошо, на самом деле, нам нужно добавить еще несколько шагов". Так что теперь другая интересная вещь об AMP, которая меня сначала сбила с толку, которую люди, вероятно, замечают, — это отсутствие принятия или отклонения изменений здесь. Что мне сначала не понравилось, но теперь я полюбил, потому что это ускоряет меня. Так что давайте вернемся сюда и перезагрузим файл. Чтобы быть реалистичным, я скажу: "Знаете что?". Я не думаю, что нам нужна автоматизированная аналитика. Так что я собираюсь вернуться сюда и сказать, что я не думаю, что нам нужна аналитика и документация. Так что почему бы вам не удалить их, и тогда мы продолжим. Я просто даю вам немного более реалистичный диалог, чтобы вы могли видеть, как это может выглядеть. Так что, хорошо, теперь это переключение обратно на Sonnet 4, верно? Так что теперь мы используем основного агента. Так что мы собираемся перейти сюда. >> Вот так. Хорошо. Итак, теперь у нас есть высокоуровневые задачи. Теперь нам нужно сгенерировать все подзадачи. Давайте сделаем это. Он говорит: "Отлично, удалите аналитику. Теперь у нас есть 11 фокусных родительских задач, готовых к генерации". Идите. Так что вот мы идем. И снова, это не ракетостроение. Но я думаю, что причина, по которой этот репозиторий GitHub имеет около 4000 звезд, заключается в том, что люди хотят иметь процесс, которому можно следовать, чтобы получить лучшие результаты, верно? И проблема в том, что у нас теперь есть эти удивительные волшебные агенты, которые могут делать так много, и они так стремятся помочь, что вы можете сказать что-то. Знаете ли вы, это мог быть промпт из одного предложения, и агент начал бы работать над ним. Но было бы ли это то, что мы на самом деле хотели? Было бы ли это направлено? Вероятно, нет. >> Так что этот процесс как бы помогает ему. Хорошо, у нас есть наши подзадачи. Они выглядят довольно хорошо. >> для части тестирования. В идеале у вас есть тестирование на каждом шаге, верно? Вместо того, чтобы, знаете ли, в конце. >> Да, абсолютно. Давайте посмотрим на это. Создайте ветку функции. Это нормально. Мы этого ожидаем. Схема базы данных и слой данных. Я думаю, что мы хотели бы реализовать управление состоянием формы и React Hook Form, добавить валидацию формы. Я думаю, мы действительно, как вы сказали, хотим добавить тестирование в конце каждого шага. И, как вы знаете, причина, по которой вам нужно действительно заботиться о разработке, управляемой тестами, сейчас заключается в том, что это цикл, который нужен агенту, чтобы фактически знать, правильно ли он делает вещи. >> Да. >> И поэтому, чем быстрее вы можете ускорить этот цикл, тем быстрее вы можете строить. Так что я собираюсь зайти сюда и попросить его сделать это. Так что в конце каждого шага мне нужно, чтобы вы добавили тесты, чтобы мы понимали, все ли работает правильно. Пожалуйста, используйте Jest. Хорошо. Так что он собирается изменить это. Так что, Питер, вы, очевидно, делаете это много. Вы разговариваете со многими людьми. Как вы видите, люди используют разработку, управляемую тестами, чтобы действительно ускорить свои агентские рабочие процессы? >> Я имею в виду, просто включение этой строки или включение ее в план — это ключ, потому что иначе, если вы этого не делаете, вы, по сути, занимаетесь вайб-кодированием. Вы говорите: "Эй, это не работает. Исправь это. Я могу просто ходить туда-сюда в течение двух часов". >> Это не работает. Это все еще не работает. >> Да. >> Хорошо. Итак, вы можете видеть, давайте перейдем сюда. >> Да. Итак, теперь у нас есть тесты, и мы используем типы. >> И что такое Jest? Jest — это просто приятный фреймворк для тестирования для TypeScript и Next.js. Так что это действительно удобный способ быстро запускать ваши проверки CI, чтобы убедиться, что все работает правильно. Теперь вы можете использовать различные фреймворки, но мне нравится Jest, и, вероятно, потому, что агент предложил его мне в какой-то момент. Хорошо, мы прошли, чтобы как бы провести всех через то, что мы сделали, верно? Итак, у нас была идея для функции. Что мы сделали, так это мы зашли в AMP и поговорили, знаете ли, весь текст функции, а затем мы тегнули промпт генерации PRD, заставили его сгенерировать PRD, затем мы взяли PRD и сгенерировали высокоуровневые задачи, отредактировали эти задачи, а затем мы попросили, а затем мы использовали промпт generate tasks, чтобы затем сгенерировать все подзадачи. Так что вот где мы находимся. Так что у нас есть довольно подробный список задач. Знаете ли вы, под каждой из этих задач у нас есть, знаете ли, шесть или семь довольно подробных задач, которые являются атомарными. И тогда то, что мы сделаем сейчас, это мы используем третье. Хорошо. Итак, мы вернулись на GitHub, и мы собираемся перейти к нашему третьему файлу, который называется process task list. Теперь то, что это делает, это контролирует, насколько быстро агент может двигаться. Я выбрал сказать: "Делай одну подзадачу за раз и не начинай ее, пока я не скажу "да" или "Y". А затем, когда вы закончите подзадачу, немедленно отметьте ее как выполненную крестиком. А затем, если все подзадачи под родительской завершены, тогда сначала запустите набор тестов. Он фактически говорит: "Эй, помните, что нужно сделать это, если все тесты пройдут, тогда вы можете добавить это, а затем вы можете закоммитить это". Так что идея в том, что мы пытаемся создать такое поведение, как код, тест, затем коммит, итеративно. >> это, по сути, лучшие практики программной инженерии. >> Да. Да. Точно. Вот как вы должны работать, если вы инженер-программист. >> Да. Опять же, это не ракетостроение или что-то новое. Как вы сказали, это базовое поведение программной инженерии. Так что мы собираемся вернуться в Ghosty и посмотреть, как это работает. Хорошо, мы вернулись в Ghosty с AMP, и слева у нас задача, которую мы хотим выполнить, и мы фактически скажем агенту: "Ну, давайте начнем". Так что я тегну список задач процесса здесь. Я тегну это, а затем я могу фактически выполнить его, потому что в нем есть все инструкции, и тогда мы начнем смотреть на него. Он говорит: "Хорошо, я должен делать только одну задачу за раз". И он знает, что должен сделать 1.1. >> Хорошо. Итак, он начинает. Итак, по сути, мы разговаривали около 20 минут, верно? И теперь он наконец-то начинает кодировать. >> Да. >> Да. >> Разве это не дико? Я имею в виду, это так отличается от, знаете ли, yoloing, одного промпта, а затем просто посмотреть, что произойдет. Теперь, вероятно, это супер скучно смотреть, и я извиняюсь, но это на самом деле то, как происходит реальная разработка программного обеспечения с агентами. >> Так что теперь он говорит: "Следуем ли мы дальше?". И мы скажем: "Да". Так что, да, если я смогу правильно печатать сегодня. >> Хорошо. Итак, я, теперь у каждого, кто кодирует с агентом, разные мнения по этому поводу. Знаете ли вы, переходите ли вы в режим желтого цвета и позволяете ему запускать любой инструмент, который он хочет, или вам нужно спрашивать разрешение? Я обычно говорю: "Не делайте никаких git-команд без моего одобрения". >> Я позволяю своему агенту запускать или, по крайней мере, набирать все мои git-команды, потому что мне просто легче их запомнить. Так что, >> Хорошо. Конечно, мы уже на главной ветке, но он проверяет на всякий случай. А затем он создаст ветку функции "partner relationship assessment". И тогда мы увидим, как он ее раскручивает. И тогда вы можете видеть, что он отметил ее как завершенную, верно? >> Да. >> Теперь, и снова, здесь приятно, что я не принимаю все эти изменения. Мне просто приятно видеть, что да, он изменил 1.1 на отмеченный. Мне не пришлось его утверждать. Так что мы просто катимся. Итак, следует ли мне продолжать? Мы скажем: "Да". >> Хорошо. Хорошо. Так что, так что, я думаю, этот третий шаг вашей системы на самом деле требует, чтобы вы сидели здесь и смотрели, как он кодирует, потому что, знаете ли, обычно я бы пошел выпить кофе или что-то вроде этого. >> здесь. Да. >> И я думаю, что я пересмотрю, или это с открытым исходным кодом, так что кто-то должен создать PR для пересмотра этого. Я думаю, знаете ли, когда я это выпустил, мы были на Sonnet 37. >> И я думаю, что с Sonnet 4 вам действительно не нужно так сильно его держать. Что довольно интересно. Так что мы увидим, как он прокручивает пару задач. >> Да. Эй, пока мы ждем, быстрый вопрос: когда я использовал Cursor, я мог прокручивать чат и откатывать любую предыдущую контрольную точку, верно? >> Ага. >> И, например, с Clock я не делал. Есть ли простой способ сделать это или с AMP? Есть ли простой способ вернуться? >> Если вы используете расширение VS Code, вы можете откатить. >> Хорошо. В нашей текущей командной строке вы не можете. Мы сейчас строим это. Но что интересно, есть много раз, >> когда я очень обеспокоен тем, что делаю, это не сработает, я просто закоммичу, а затем откачу коммит. >> Хорошо. >> Да. >> Да. Просто используйте git для этого. Да. >> Ага. Хорошо. Так что мы скажем: "Да, давайте сделаем это". Мы сейчас работаем с схемой базы данных, что всегда весело. Мне придется сделать миграцию здесь, что мне не нравится. >> Да, база данных — это то, где все может пойти не так. Да, надеюсь. >> Но что интересно, я имею в виду, но опять же, вот где, если вы, знаете ли, работаете с PRD, у вас есть довольно подробный список задач, знаете ли, если вам придется изменить схему базы данных и сделать миграцию, скорее всего, все будет в порядке. Опять же, это, вероятно, не самое захватывающее зрелище для вас, но я думаю, что видеть реальную разработку программного обеспечения с агентом и то, как это на самом деле выглядит и работает. Надеюсь, это даст вам представление изнутри. >> Я имею в виду, это все равно бесконечно проще, чем писать код самому, верно? Я имею в виду, я имею в виду, знаете ли, как родитель после 9 вечера, я не могу писать код сам, но я могу печатать эти команды и >> вы можете нажать "да", вы можете читать, вы можете говорить в Whisper Flow немного. >> Хорошо, мы скажем: "Да, давайте продолжать". >> Так что интересно видеть, как все это происходит, и видеть, сколько вашего кода вы на самом деле читаете сейчас? Сколько вы полагаетесь на свои тесты? И, очевидно, >> вы хотите делать все это. Но интересно видеть, как это разворачивается. Знаете ли вы, я думаю, мы только что видели, как Митчелл Хашимото, создатель Ghosty, один из основателей HashiCorp, недавно сказал, что он требует, чтобы все PR, которые были с помощью ИИ, четко указывали это. >> О, хорошо. >> Знаете ли вы, что имеет смысл. И многие из них действительно. Теперь говорится: "Соавтор с AMP" или "Соавтор с Cloud Code". >> Я имею в виду, это будет как управление каждым PR. Я не знаю. >> Да. >> Да. >> Так что это то, что я сказал. Я думаю, это будет как 99%. И мы быстро доберемся до этого. >> Позвольте мне спросить вас кое-что, пока мы ждем, пока эта штука генерируется: вы учили, как, около миллиона человек кодировать, верно? Так что, но, но, я уверен, когда вы учили, это было о циклах обучения и обучении, знаете ли, функциях и так далее. >> И теперь, как вы думаете, это лучший способ научиться кодировать? Вы просто создаете вещи, а затем задаете вопросы о коде или >> Да. Да. >> Как бы вы научились кодировать сейчас? >> Ну, что интересно, вы, по сути, кодируете с репетитором сейчас. >> Именно. >> И это действительно зависит от студента, насколько глубоки его знания, верно? Как вы знаете, я просто буду продолжать. >> Как вы знаете, вам на самом деле не нужно понимать код, чтобы фактически выпустить его. Теперь, теперь вы должны, верно? Потому что это немного страшно, если вы выпускаете, и вы понятия не имеете, что на самом деле происходит. Но технически вы могли бы это сделать. Но проблема в том, что это похоже на строительство дома, и у вас есть робот, который умеет пользоваться пилой. И это как бы, хорошо, вы могли бы это сделать, но что, если что-то начнет ломаться, и вы не понимаете, как, знаете ли, была установлена сантехника или почему эта стена там? Так что я думаю, что есть этот очень ценный, очень, очень ценный навык в понимании кода по-прежнему, и я думаю, что это продлится годы, но как вы его учите — это вопрос. Так что я думаю, знаете ли, если бы ИИ существовал, по крайней мере, большие языковые модели существовали, когда я управлял Treehouse, это было бы совершенно иначе, и мы бы сказали: "Хорошо, опыт обучения заключается в том, что вы сядете и будете общаться с ИИ о чем-то, что вас волнует, верно?". >> Давайте продолжим. >> Как насчет того, чтобы добавить типы TypeScript? Давайте сделаем это. Хорошо. >> И вы бы сказали: "Знаете ли вы, что вас волнует? Это Warhammer, или это баскетбол, или это шитье, верно?". Так что вы выбираете тему, которая вас волнует, а затем говорите: "Хорошо, что мы должны построить для этой темы, которая вас волнует, верно?". Так что, если это шитье, возможно, вы хотите создать программу, которая поможет вам разработать выкройку, верно? Или, скажем, это о баскетболе, возможно, вы хотите отслеживать своего любимого игрока NBA и вести статистику и отображать ее на экране в правом верхнем углу. Правильно? Так что главное — построить что-то, что вас волнует, верно? И я думаю, все говорят: "Ну, я не знаю, как кодировать, или я не знаю, как создавать с агентами". Просто скажите: "Выберите что-то, что вас волнует, и поговорите с агентом об этом, попросите его построить это вместе с вами и объяснить по ходу дела, верно?". >> И я думаю, что именно так люди будут учиться в будущем. >> Да. Вы должны создать новую трехступенчатую систему для обучения с помощью ИИ. >> Вот так. >> Так что это объясняет, знаете ли, архитектуру и все остальное. >> Это моя следующая идея. Спасибо. Я украду ее. >> Так что теперь мы запускаем некоторые тесты, и смотрим, действительно ли то, что мы построили, будет работать. Я на самом деле не обращаю внимания на код. Я имею в виду, очевидно, если бы я кодировал, я бы не разговаривал с Питером и как бы, знаете ли, не обращал внимания. Но, вот что происходит. Так что это своего рода реалистично. Когда мы можем добраться до, если мы сделаем шаг три? Знаете ли вы, шаг, нам нужно пройти все до шага пять, чтобы увидеть какой-то UI или >> Ну, у нас есть, у нас есть пользовательский интерфейс анкеты для оценки на шаге три. И поэтому мы на шаге 2.6. Так что я думаю, довольно быстро мы доберемся до 3.1. И, вероятно, мы можем сказать ИИ, что на самом деле я хочу, чтобы вы создали статическую версию этого, чтобы я мог увидеть макет. И я могу вернуться и фактически пересмотреть этот рабочий процесс немного, потому что то, что я узнаю, это иногда лучше иметь ИИ, который сначала создает макет полностью статической версии пользовательского интерфейса, знаете ли, без функциональности. Используя только Tailwind, а затем покажите мне это. И это действительно устранит много путаницы, как, о, вау, я не имел в виду это, или это ужасно, давайте не будем этого делать. >> Да, я думаю, это лучшая практика, потому что это может изменить базу данных для чего-то, что вы на самом деле хотите. >> Я даже не забочусь об этом. >> Так что, что мы делаем? Итак, давайте сделаем это, и я на самом деле прерву это, потому что это, по сути, делает то, что мы хотим, что итеративно проходит через эти тесты. Но на самом деле я остановлю это, и я скажу: "Я на самом деле хочу перейти к шагу три и просто просмотреть пользовательский интерфейс. Сделайте статическую версию пользовательского интерфейса анкеты, просто чтобы я мог увидеть ее и убедиться, что мы на одной волне". Хорошо. Так что AMP скажет: "Что? Мы делали весь этот процесс, что ты делаешь?". Но то, что мы сделаем, это, надеюсь, получим >> Ваш приложение Untangle в прямом эфире, и люди используют его для управления своим разводом? >> Оно совершенно новое. Так что мы, по сути, запустили нашу первую рекламу сегодня. >> Захватывающе. >> Да. Так что, если вы зайдете на untangle-us.com, вы можете увидеть это. Знаете ли вы, надеюсь, никто из вас, кто слушает, не проходит через развод. Но если вы проходите, вы можете проверить это. Так что, на самом деле, пока это строится, я быстро покажу вам, как это выглядит. Так что Untangle — это приложение, которое помогает людям пройти через развод, но оно только для Коннектикута. Так что, я думаю, это хороший пример множества стартапов, которые мы увидим, где люди решают очень специфическую вертикальную проблему. И идея в том, что развод в Коннектикуте — это не самая сексуальная проблема для стартапа. Но суть всего этого в том, что это специфический рынок, на котором, я думаю, я могу помочь многим людям. И поэтому я взялся за это, и я думаю, что мы увидим тысячи таких стартапов. Так что будет интересно посмотреть, как это пойдет. >> И это только Коннектикут, потому что, например, Коннектикут имеет разные правила, чем другие штаты. >> Да. Так что, если вы не проходили через развод, вы это знаете, но к счастью, если вы проходили, вы очень хорошо осведомлены, что законы о разводе очень разные в каждом штате. Понял. И болезненная часть, причина, по которой я показал эту кучу PDF-файлов, заключается в том, что в Коннектикуте есть 14 форм развода с 277 уникальными полями, которые вы должны правильно заполнить. Это кошмар, верно? Так что здесь есть много интересных функций для создания. Так что это, в любом случае, то, что я строю. Это то, что такое Entangle. Но давайте вернемся к коду и посмотрим, как он продвигается. Хорошо. Итак, мы вернулись с AMP и Neovim внутри Ghosty. Так что он сказал, что он создал статическую версию пользовательского интерфейса анкеты для оценки отношений. Вот что я построил. Хорошо, так что мы на самом деле создадим, давайте запустим сервер разработки. Хорошо, так что он работает на 3000, и я думаю, что URL был case new relationship, верно? Так что давайте вернемся. Хорошо, все. Мы вернулись в браузер, и мы собираемся перейти на localhost и запустить это. Так что мы только что запустили веб-сервер разработки, и я полагаю, что это был случай, позвольте мне просто проверить. Это было в case relationship, case new relationship. Хорошо, все. Итак, у нас есть веб-разработчик, прошу прощения, веб-сервер разработки запущен и работает, и вы можете видеть очень простой пользовательский интерфейс. Очевидно, это не ракетостроение. Вы можете видеть, хорошо, мы проводим оценку отношений. Мы спрашиваем: "Как бы вы описали свое общение с супругом?". Так что, Питер, как бы вы описали свое общение с супругом? >> Ну, давайте посмотрим. В целом, могу общаться. Еще не близок к разводу. Да. >> Хорошо. Хорошо. Насколько ваш супруг готов сотрудничать по вопросам, связанным с разводом? Надеюсь. >> Надеюсь, полностью некорректируемый. Надеюсь, знаете ли, этого не произойдет. >> Надеюсь, потому что вы вообще не разводитесь. Как бы вы описали уровень конфликта? >> Есть, я думаю, низкий конфликт с супругом, высокий конфликт с детьми, верно? Низкий конфликт с супругом. Это звучит как каждые отношения родителя и супруга в мире. Как бы вы описали эмоциональное состояние вашего супруга в отношении развода? >> Да, она будет разочарована. Как, знаете ли, она замужем за лучшим человеком в мире, так что она будет >> так что она, вероятно, чрезвычайно расстроена. >> Она будет очень расстроена, если это произойдет. Да. >> Хорошо. Так что, вот так. Хорошо. Хорошо. Так что, к сожалению, вы находитесь в состоянии высокого конфликта, потому что она очень расстроена. >> О, хорошо. Хорошо. Потому что, хорошо. Да. Хорошо. Ну, я не думаю, что я целевая аудитория. >> Да. Надеюсь, вы и никто из смотрящих — моя целевая аудитория. >> Да. >> Но вы можете видеть, знаете ли, основной процесс, верно? Так что я думаю, на самом деле, что я бы сделал, это поощрил людей, и я, на самом деле, вероятно, сделаю PR в своем собственном репозитории, это фактически добавить генерацию пользовательского интерфейса в начале. Как только вы сделаете PRD, >> мы можем прояснить много этих проблем на ранней стадии. >> Да, это потрясающе, чувак. Так что я хочу поговорить немного о правильных проблемах для решения в качестве ИИ-одиночки. Мне на самом деле очень нравится тот факт, что вы делаете эту проблему развода в Коннектикуте, потому что >> как, знаете ли, все 21-летние, знаете ли, я не знаю, что они делают. Они создают крутые ИИ-агенты для кодирования или >> Да. >> в Сан-Франциско, верно? Но как одинокий основатель, я думаю, что решение проблемы с очень высокой болью для нишевой аудитории, готовой платить много, кажется очень хорошим вариантом, знаете ли, как вы об этом думаете? >> Да. Так что интересно, что у меня не было идеи после того, как Treehouse был приобретен, верно? Потому что, как всем известно, когда вы начинаете компанию, вы должны быть увлечены проблемой, которую хотите решить. И вы не можете вытащить это из ниоткуда, верно? И поэтому был период времени, когда я думал: "Я не знаю, что строить". И тогда я присоединился к Intel. Я подумал: "Я просто пойду и узнаю о кремнии", у меня нет идеи. И я также хочу узнать, как работают корпоративные компании, потому что я никогда не работал.

в огромной, знаете ли, компании из 100 000 человек. Так что я пошел и просто учился, а потом, знаете ли, когда я увидел, как мои сестры проходят через развод, я подумал: "Почему это так ужасно?" Как будто почему это так дорого? Как будто этого не должно происходить.

Ум, и это кажется неуместным, и я думаю, что как основатель, когда вы чувствуете это ощущение, типа, почему это так? Это не должно быть так, это всегда семя для идеи, и, к сожалению, вы не можете создать этот момент. >> Да. >> И, и я думаю, вы правы, как будто это не сексуальная идея для стартапа, но это может быть очень реальная, важная компания, потому что она решает то, что действительно, действительно существует. Знаете, вы либо платите от 15 000 до 40 000 долларов за развод, либо платите 300 долларов за Untangle, а затем, вероятно, пару тысяч за услуги адвоката, верно? >> Да. >> Так что я бы призвал людей думать о реальных проблемах в своей жизни.

Ум, последнее, что я скажу, ум, даже если Trios была моей самой успешной компанией финансово, ум, это был трудный стартап. И причина в том, что мы продавали витамин, а не болеутоляющее. И я уверен, что люди слышали эту аналогию раньше, но вы действительно хотите решить проблему или построить компанию, которая является болеутоляющим, а не витамином. И что я имею в виду под этим, так что научиться кодировать — это очень, это то, что вы делаете, потому что вы хотите стать лучше, верно? Вы делаете это, потому что хотите быть умнее. Вы делаете это, потому что хотите лучшей работы, верно? Так что это витамин. Ум, тогда как развод — это болеутоляющее. Как будто это острый болезненный момент в вашей жизни, когда вы хотите, чтобы боль ушла, верно? Ум, и поэтому, если вы можете найти болеутоляющее, это всегда лучше, чем витамин. Так что будьте осведомлены об этом. >> Вы руководили примерно 100 сотрудниками или чем-то в этом роде, верно? Как бы вы сказали, и я чувствую, что многие люди гонятся за этим, они хотят быть начальниками большой команды и так далее. Так как вы сравниваете свою жизнь тогда с нынешней, когда просто кодируете по ночам? >> Так, я люблю, знаете ли, не иметь 100 сотрудников. Ум, >> да, >> замечательно расти команду, заботиться о ней, делать все возможное и быть успешным и нанимать много людей. Ум, но это отвлекает вас от действий, и, как я уже сказал, в начале я был единственным основателем, когда запустил Drops. Это был я. Я кодировал это, я занимался клиентским успехом и маркетингом, и я делал все это. Ум, а потом вы переходите к Treehouse, где мы начали это с другом, а затем оно росло, и мы нанимали и нанимали, и я отстранился от всего кода. И я думаю, что сейчас мы находимся на этапе, когда вы абсолютно можете быть компанией из одного человека. Ум, и, знаете ли, размер этой компании может быть не таким большим, как у компании с 20, 100, тысячей сотрудников, но, возможно, это не то, чего вы хотите. Ум, и поэтому с Untangle я специально решил построить его сам. Ум, и я решил, что буду загружать его и делать все сам. И это просто радостно, когда можно выпускать и строить, и знать, и понимать, и идти так быстро, как я хочу. Ум, это так удивительно. Какое удивительное время быть основателем. Ум, теперь, почему я присоединился к AMP? Потому что я хочу, есть другая часть меня, которая хочет дать возможность как можно большему количеству людей делать то, что делаю я. Верно? Если я смогу дать возможность тысяче, миллиону, десяти миллионам, ста миллионам людей делать то, что я делаю с Untangle, или выпускать лучшее программное обеспечение внутри своей команды и получить повышение, чтобы создавать вещи, которые действительно меняют мир. Какая удивительная возможность, верно? >> И я не собирался строить еще одну компанию по разработке агентов. Ум, так что это просто имело смысл построить Untangle внутри AMP, знаете ли? >> Да. Я думаю, что у Antgo гораздо больше шансов на успех, чем у другой компании по разработке агентов. Так что >> да, я думаю, поле боя довольно установлено на поле боя агентов по кодированию. И, знаете ли, я верю, что у AMP есть хорошие шансы победить, но это будет битва, верно? Ум, так что >> я думаю, это очень важно, чувак. Я думаю, многие люди этого не осознали. Как будто сейчас лучшее время для соло-основателя ИИ, чем когда-либо. И вам не нужно привлекать венчурное финансирование и делать все эти сумасшедшие вещи, верно? Потому что, если вы, как генеральный директор компании из 100 человек, да, вы, вероятно, просто проводите встречи каждые 30 минут в течение всего дня. >> В течение девяти часов в день. >> Да. Я думаю, я не знаю, можете ли вы об этом говорить, но это зависит от того, какой образ жизни вы хотите, верно? И, знаете ли, сколько денег вы хотите заработать. >> Да. Я думаю, это огромно. И я хочу отдать должное Джейсону Фриду и DHH, потому что они говорят это уже 20 лет, верно? Да. Где идея в том, что вы можете построить замечательный бизнес, который откроет вам финансовые возможности и будет намного меньше. Так что вы можете представить, хорошо, скажем, у меня была очень хорошо оплачиваемая работа инженера, и у меня были льготы и пенсионный план, и сколько денег мне нужно было бы зарабатывать в год? Это разумная сумма, но не миллионы. А потом вы думаете, подождите минутку. Если я построю свою собственную компанию, и это, по сути, я или я и подрядчик, или, возможно, я и один сотрудник, вам не нужно строить очень большой бизнес, чтобы иметь хотя бы такую же удивительную жизнь. А потом это может быть намного лучше, потому что вы просто получаете денежный поток и в конечном итоге становитесь богатым. Но дело в том, что вы контролируете свое время, верно? Так что люди понимают ценность своего времени. И это может быть сексуально и захватывающе быть основателем Кремниевой долины, который финансируется венчурным капиталом, но правда в том, что это безумие. Вы вообще не контролируете свое время. У вас есть совет директоров, у вас есть сотни сотрудников, о которых нужно заботиться, кормить и защищать, и у вас есть конкуренты, которые пытаются вас убить, и у вас нет времени. Так что я думаю, вам придется как-то сбалансировать эти вещи. И интересно, потому что я думаю, что в прошлом я хотел построить компанию, которая была бы сексуальной и огромной, и люди бы говорили: "Вау, Райан построил эту огромную компанию". А мне сейчас все равно. Мне хочется работать над проблемой, которая меня волнует. Я хочу работать с людьми, которых я уважаю, и я хочу иметь возможность контролировать свое время и заботиться о своей семье. И это на самом деле высшее богатство. Так что да, больше силы всем, кто слушает и хочет построить компанию самостоятельно. Вы абсолютно можете это сделать, реально сейчас. Вам больше никто не нужен, если вы сами являетесь джентиком. Вау. >> Да. Это мой план для моих детей, чтобы они встали на этот путь, чтобы избежать всей этой крысиной гонки, знаете ли. >> Аминь. >> Да. >> Да. Мы все пытаемся сделать наших детей как можно более джентиками. Да. Точно. И сказать, знаете ли, если у вас есть какие-либо вопросы, сначала спросите ИИ, потому что очень вероятно, что вы продвинетесь намного дальше. >> И просто еще один маленький анекдот, интересно присоединиться к AMP. Я думаю, я на 22-м дне, может быть, сейчас. Ум, и AMP — это большая кодовая база, верно? И так дико, что все, что мне нужно сделать, это открыть репозиторий в AMP и задать AMP вопрос и сказать, типа, где в кодовой базе это происходит, и она разбирается, а затем я скажу, кто разработчик, который работал над этим, верно? Ум, и я выясню это. А затем я могу перейти в Slack, например, и задавать гораздо более умные вопросы, верно? Я могу пойти к инженеру, который работал над этим. Я точно знаю, где находится код и что он делает, и я могу задать очень умный, быстрый вопрос, который не замедлит их. >> А это просто пример одной вещи в жизни, которую вы можете сделать, примените это к чему угодно, верно? Ум, мы намного сильнее сейчас благодаря агентам. Это просто безумие. >> Да, я полностью согласен. Ладно, чувак. Где люди могут найти Untangled, а также AMP? >> Так, если вы хотите использовать AMP, просто зайдите на ampcode.com. Ум, круто то, что вы можете зарегистрироваться бесплатно. Мы даем вам 10 долларов, чтобы использовать его бесплатно. Так что просто дерзайте и свяжитесь со мной в X. Я просто Райан Карсон, верно? Так что свяжитесь со мной в X, скажите мне, что вы используете его. Я буду вас подбадривать, если у вас возникнут какие-либо проблемы. Я позабочусь о том, чтобы мы передали это нужному человеку. Так что попробуйте. Получайте удовольствие. Ум, тогда, если вы хотите найти меня, как я уже сказал, я просто Райан Карсон везде, но я живу и дышу в X весь день, каждый день. Мне это нравится. Ум, а затем, если вы хотите, надеюсь, вы не разводитесь в Коннектикуте, но если вы это делаете, просто зайдите на untangle-us.com и дайте мне знать, что вы думаете. >> Отлично, Райан. Да, было здорово связаться с вами в X. Я думаю, у меня своего рода соотношение любви-ненависти к X, но, знаете ли, приятно видеть вас там, и да, спасибо, что рассказали обо всем. Это очень практично. >> Спасибо, Питер. Ценю это.