Недавно я прочитал эту действительно крутую запись в блоге Криса Лавджоя. В сообщении в блоге Крис описывает, как он создал свой собственный алгоритм Youtube и отправил результат на свой почтовый ящик, чтобы не тратить время впустую. Он также открыл исходный код своей работы! Спасибо, Крис!

Его сообщение в блоге было очень интересно читать, потому что я также трачу много времени на YouTube, идя туда, куда ведет меня алгоритм. Этот пост также вдохновил меня начать свой собственный проект, основанный на той же идее!

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

Основная проблема

По сути, основной задачей этого проекта является разработка интуитивно понятного графического интерфейса, который:

  • позволяет пользователям создавать алгоритм визуально, используя различную статистику YouTube (например, просмотры и лайки) и их собственные константы.
  • Используя алгоритм пользователя, упорядочивает и фильтрует результаты поиска в режиме реального времени, чтобы дать им мгновенную обратную связь об их алгоритме. Это поможет им отладить свой алгоритм.

Я хочу, чтобы пользователи чувствовали:

  • Не перегружен множеством математических/статистических жаргонов
  • Не чувствовать себя ограниченным системой
  • Они контролируют, какое видео они потребляют

Основное внимание уделяется дизайну GUI и UX, поэтому я хочу отказаться от любых других технических проблем, таких как:

  • управление развертываниями
  • думаю о масштабировании и кэшировании (очень интересная проблема для размышлений, но не в этом проекте!)

Это означает, что этот проект не будет приложением SaaS.

Я делаю настольное приложение

Этот проект будет настольным приложением с открытым исходным кодом. Я планирую продать его на Gumroad за разовую покупку по цене ниже 5 долларов. Но очевидно, что с открытым исходным кодом люди могут просто клонировать и компилировать его самостоятельно бесплатно, если захотят.

Должен признаться, что я мечтал о создании SaaS, но отказался от него по следующим причинам:

Ограничение API YouTube

По умолчанию приложение может вызывать поисковый API YouTube примерно 100 раз в день. Эта квота, очевидно, может быть увеличена, но в любом случае мне придется ввести некоторое ограничение на то, сколько раз мои пользователи могут вызывать поисковый API.

  1. Я предпочел бы не накладывать никаких ограничений на своих пользователей,
  2. Я не хочу заниматься SaaS-бизнесом, большим или маленьким, основываясь на прихоти Google.

Мое приложение потребует от пользователей добавления собственных ключей API в настольный клиент. Это будет означать, что мне не придется беспокоиться о квотах моего приложения и позволить пользователям выполнять поиск почти столько раз, сколько они захотят. Я знаю, что людям, не являющимся разработчиками, непросто узнать, как получить ключ API, но тут уж ничего не поделаешь ¯_(ツ)_/¯

Ограничить область

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

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

  • аутентификация
  • управление пользователями и их подписками
  • управление котировками API
  • кэширование
  • настройка серверов и развертываний

Я уже делаю все вышеперечисленное в качестве инженера по аутентификации, так что я бы предпочел не беспокоиться о них.

Но сначала подтвердите!

Прежде чем я перейду непосредственно к созданию настольного приложения, я собираюсь сначала создать маркетинговый веб-сайт, чтобы собирать электронные письма от заинтересованных людей и встраивать интерактивное доказательство концепции («PoC»).

PoC будет сделан в React с чрезвычайно ограниченным набором функций и будет работать только с фиктивным набором данных.

Надеюсь, это будут заинтересованные люди, и они помогут мне сохранить мотивацию и ответственность, чтобы действительно выпустить готовый продукт!

Почему я пишу это

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