Недавно я прочитал эту действительно крутую запись в блоге Криса Лавджоя. В сообщении в блоге Крис описывает, как он создал свой собственный алгоритм Youtube и отправил результат на свой почтовый ящик, чтобы не тратить время впустую. Он также открыл исходный код своей работы! Спасибо, Крис!
Его сообщение в блоге было очень интересно читать, потому что я также трачу много времени на YouTube, идя туда, куда ведет меня алгоритм. Этот пост также вдохновил меня начать свой собственный проект, основанный на той же идее!
Проект Криса позволил любому, у кого есть знания в области кодирования, легко получить его репозиторий и создать собственный алгоритм, но я хотел, чтобы это было более широко доступно.
Основная проблема
По сути, основной задачей этого проекта является разработка интуитивно понятного графического интерфейса, который:
- позволяет пользователям создавать алгоритм визуально, используя различную статистику YouTube (например, просмотры и лайки) и их собственные константы.
- Используя алгоритм пользователя, упорядочивает и фильтрует результаты поиска в режиме реального времени, чтобы дать им мгновенную обратную связь об их алгоритме. Это поможет им отладить свой алгоритм.
Я хочу, чтобы пользователи чувствовали:
- Не перегружен множеством математических/статистических жаргонов
- Не чувствовать себя ограниченным системой
- Они контролируют, какое видео они потребляют
Основное внимание уделяется дизайну GUI и UX, поэтому я хочу отказаться от любых других технических проблем, таких как:
- управление развертываниями
- думаю о масштабировании и кэшировании (очень интересная проблема для размышлений, но не в этом проекте!)
Это означает, что этот проект не будет приложением SaaS.
Я делаю настольное приложение
Этот проект будет настольным приложением с открытым исходным кодом. Я планирую продать его на Gumroad за разовую покупку по цене ниже 5 долларов. Но очевидно, что с открытым исходным кодом люди могут просто клонировать и компилировать его самостоятельно бесплатно, если захотят.
Должен признаться, что я мечтал о создании SaaS, но отказался от него по следующим причинам:
Ограничение API YouTube
По умолчанию приложение может вызывать поисковый API YouTube примерно 100 раз в день. Эта квота, очевидно, может быть увеличена, но в любом случае мне придется ввести некоторое ограничение на то, сколько раз мои пользователи могут вызывать поисковый API.
- Я предпочел бы не накладывать никаких ограничений на своих пользователей,
- Я не хочу заниматься SaaS-бизнесом, большим или маленьким, основываясь на прихоти Google.
Мое приложение потребует от пользователей добавления собственных ключей API в настольный клиент. Это будет означать, что мне не придется беспокоиться о квотах моего приложения и позволить пользователям выполнять поиск почти столько раз, сколько они захотят. Я знаю, что людям, не являющимся разработчиками, непросто узнать, как получить ключ API, но тут уж ничего не поделаешь ¯_(ツ)_/¯
Ограничить область
Это побочный проект, и по многим заброшенным побочным проектам я знаю, что мне нужно быть чрезвычайно безжалостным в ограничении объема проекта, чтобы его действительно выпустить.
Как я уже говорил, создание настольного приложения означает, что мне не нужно беспокоиться о таких вещах, как:
- аутентификация
- управление пользователями и их подписками
- управление котировками API
- кэширование
- настройка серверов и развертываний
Я уже делаю все вышеперечисленное в качестве инженера по аутентификации, так что я бы предпочел не беспокоиться о них.
Но сначала подтвердите!
Прежде чем я перейду непосредственно к созданию настольного приложения, я собираюсь сначала создать маркетинговый веб-сайт, чтобы собирать электронные письма от заинтересованных людей и встраивать интерактивное доказательство концепции («PoC»).
PoC будет сделан в React с чрезвычайно ограниченным набором функций и будет работать только с фиктивным набором данных.
Надеюсь, это будут заинтересованные люди, и они помогут мне сохранить мотивацию и ответственность, чтобы действительно выпустить готовый продукт!
Почему я пишу это
Говоря об ответственности, я также пишу этот пост в блоге, чтобы быть еще более ответственным — закончить свой проект и иметь возможность объяснить свой мыслительный процесс. Следующая запись в блоге будет посвящена созданию очень примитивного парсера.