Давно читаю Пикабу, но идея для поста приходила ко мне реже, чем зарплата бюджетнику, но тут она появилась ниоткуда.
Всю жизнь пытаюсь выучить английский, и даётся мне это ох как непросто. Прогресс есть: если раньше мой словарный запас был как у трёхлетнего англичанина, то сейчас — как у восьмилетнего гопника из окраины Лондона (примерно 5000–6000 слов). Но этого хватает, чтобы в ресторане заказать «Биг Тейсти», а не объяснить официанту, что я веган с аллергией на глютен.
За годы я перепробовал тонну приложений и понял: учить 12 форм времён без слов — всё равно что собирать «Лего» без деталей. А зубрить слова без грамматики — как набивать холодильник, забыв купить вино. Это два параллельных процесса, как поход в спортзал и поедание пиццы после него.
Полтора года назад я осознал, что грамматику гоняю, а словарный запас растёт медленнее, чем очередь в МФЦ. Решил найти идеальное приложение. Месяц экспериментов — и я понял: всё, что скачал, мне просто не подходит.
Тут меня осенило: я же знаю JavaScript на уровне «сделать калькулятор, который считает зарплату грустного джуниора». Раз готовых решений нет — почему бы не создать своё? План казался надёжным, как швейцарские часы… если не считать, что я даже будильник на смартфоне с трудом настраиваю.
С чего начать? Как запустить эту махину без опыта в фулл-стек и бюджета, сравнимого с содержимым барсетки школьника? Погуглил: нужна база слов. «Херня вопрос! — подумал я. — Скачаю архив — и фундамент готов!»
Как же я заблуждался. Найти топ-1000 слов или 100 самых популярных глаголов — легко. Но это будет просто «слово–перевод», как разговорник для туриста, мечтающего спросить в баре: «Где туалет, и почему ваше пиво такое отвратительное?» Для серьёзного приложения нужны: транскрипция, синонимы, примеры употребления, часть речи, схожие слова, ударение, уровень сложности.
Через три дня поисков я нашёл файлик из Cambridge English Dictionary на 140 тысяч слов. Моя радость длилась ровно до момента, когда я открыл его и увидел там устаревшие термины, названия кельтских деревень, леммы (разные формы одного слова), избыточные формы и словоформы вроде «running». Закинул всё в Excel. Программа зависла, как студент на утренней паре. Просматривать 140 тысяч строк вручную — задача для садомазохиста. Я закрыл файл, включил фильм на английском (с субтитрами, конечно) и забыл о проекте. Желание творить вернулось через две недели — вместе с осознанием, что стриминговая платформа за меня код не напишет.
Далее было написано десяток скриптов для чистки базы. Три недели они удаляли лишнее, а я чувствовал себя Шариковым, который «взял всё да и разделил». В итоге осталось 30 тысяч слов. Пришло время добывать данные: транскрипции, синонимы, примеры… Нейросети тогда были потупее, но мои дедушкины скрипты таки выжали из них ответ в формате CSV. Дорого? Ещё бы! Это же не разовая подписка на OnlyFans, а десятки тысяч постоянных запросов.
Добавил частоту употребления слов из Google, плюс JJB (Adjective modifying another adjective) и JJA (General adjective) для более полной картины. Через два месяца нудятины у меня был словарь на 20 тысяч строк с 17 колонками данных. Доверять нейросетям? Как соседу с отвёрткой в своей квартире: «Верь, но проверяй».
Было решено нанять фрилансеров-переводчиков. Они проверяли данные так тщательно, будто это их диплом, а не мой квест по самореализации. В итоге словарь был готов. А приложение? О нём пока пахло, как от моих перспектив стать лучшим программистом на районе.
пример excel таблички со всеми словами
Давно для себя понял: чтобы запомнить слово, нужны ассоциации. Решено было добавить изображения к каждому слову. Звучит просто, но когда нужно 20 тысяч картинок без нарушения авторских прав, начинаешь ценить тех, кто рисует котиков для учебников.
Разбил задачу на этапы. Сначала парсил изображения по тегам с разрешённых ресурсов. Получил гору файлов, где половина — мемы про «успех», а треть — фото людей, которые явно не давали согласия на участие в моём квесте. Фильтровать пришлось вручную. Нанял 15 фрилансеров, которые судили картинки строже, чем искусствоведы в Лувре. Чтобы они не сошли с ума от объёма, сделал Telegram-бота с кнопками «Подходит» и «Не подходит». Логика простая: если три человека одобряют — картинка добавляется в базу.
Этот этап длился полтора месяца. Общение часто было примерно таким: «Это фото луны для слова "lunatic"?» или «Давайте вы вначале заплатите, потом я проверю». В итоге, как бы я ни ругал ребят, они сделали дело, и мы собрали базу, где как минимум половина изображений отлично подходят для обучения. По стоимости вышло в 140 тысяч рублей — почти как подержанная Лада, но без колёс.
К тому моменту, как я закончил, мой друг-программист (куда более опытный, чем я), которого я уговорил работать со мной, сообщил, что у него личные проблемы и он не может присоединиться к созданию веб-приложения в Telegram. Руки опустились. Писать код для Telegram-бота — одно, а создавать полноценное приложение — как строить дом, забыв, где брать кирпичи. На месяц я переключился на свой канал с квизами по английскому, который использовал полученную базу слов. Получился он, кстати, неплохо — многим людям сейчас помогает изучать язык, даже дизлайков никто не ставит.
Через три месяца подумал: «Мы живём в эпоху нейросетей! Наверняка ChatGPT знает, как сделать приложение». Начал изучать сам и искать исполнителя. Оказалось, что за «под ключ» команды разработчиков просят от 350 тысяч, что для моей голой жопы было дороговато. Пришлось через фриланс найти DevOps-разработчика, который помог настроить арендованный сервер, простаивавший из-за моей безграмотности. Спасибо этому парню: он открыл для меня кучу нового и объединил бэкенд с фронтендом.
Дальше — дизайн. В Figma мы с художником нарисовали интерфейс, который выглядел как мечта интроверта: минимализм, плавные переходы, никаких кричащих кнопок. Переносить это в код на Vue.js оказалось сложнее, чем объяснять бабушке, что «Скайп — это не файлообменник». Почти каждая кнопка требовала тонны строк кода. Теперь смотрю на другие приложения с уважением, как на пирамиды: снаружи красота, внутри — тонны неизведанного труда.
Примерно 4 месяца заняло создание бета-версии. Она включала всё для игрового обучения:
- Уровень пользователя, звание, опыт, энергия, монеты
- Игровые элементы (строительство дома, NFT-персонажи на TON)
- Статистика обучения, словарь, карточки слов, лидерборд
- Чек-ин, ежедневные задания
— Случайная (1 рандомное задание);
— Простая (2 лёгких задания);
Пользователь сам может выбрать формат. Всего смог придумал 10 типов заданий: на экране с анимацией показывается карточка слова, подсказки и варианты ответа.
Чтобы не отставать от моды, потратил 5 дней на интеграцию нейросетевых подсказок. Теперь ИИ объясняет, что «procrastination» — это не болезнь, а образ жизни. По отзывам, подсказки полезны.
Для новичков необходимо было сделать подсказки по интерфейсу - такие небольшие всплывающие сообщения у важных кнопок, которые говорят, зачем ее вообще надо тыкать.
Отдельная тема — ошибки в коде. Это как сериал ужасов, где каждая серия заканчивается на самом страшном моменте. Изменяешь переменную — через два дня кнопка «Статистика» становится порталом в параллельную вселенную.
- Фронтенд: 26 000 строк.
Для одного человека с двумя руками и 24 часами в сутки — немало. Спасибо постоянным подписчикам канала, которые месяц чинили со мной косяки. Ненайденные баги ещё есть, но дойдёт очередь и до них.
Я сдавался минимум 5 раз: закрывал редактор, ругался, но снова возвращался, движемый одной целью - создать полезное как для себя, так и для любого изучающего польователя приложение, цель заработать при этом у меня всегда была второстепенной.
Запустил miniapp 9 дней назад. В тот вечер даже прослезился (a я мужик серьёзный) — всё-таки смог закончить этот огромных труд и поставить галочку на этом жизненном этапе.
Условно бесплатное приложение без рекламы и навязчивых «Оплати». Если не хватает энергии — можно купить её или NFT-ламу (всего 1000 штук, раритет). Но бесплатной версии хватит новичку и профи. Идеально ли оно? Нет. Разным людям — разный подход. Сейчас собираю фидбек, чтобы улучшить эту первую версию, ведь работа не останавливается на этом.
Как приложение выглядит теперь
На этом всё. Если пост зайдёт — расскажу подробнее об этапах кодинга или о создании бота для канала квизов.
Попробовать приложение: https://t.me/CrazyLlamaEnglish_bot