Try   HackMD

Концепция сайта портфолио творческого опенсорсного программиста фрилансера

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

Я программист-фрилансер, творческого склада характера и у меня много разнородных проектов:

  • опенсорсных, которыми можно поделиться полностью
  • образовательных, где я пошагово объясняю создание какого-то небольшого проекта
  • рабочих про которые можно рассказать интересные детали

Когда-то мне казалось, что разброс интересов - это болезнь от которой надо лечиться. Но в итоге я принял эту часть себя как выгодную особенность. И научился совмещать работу на фрилансе с творческими порывами погружения в свои проекты.

Платформы/Каналы

Есть разные площадки, где я публикую материалы.

  • Github.com код проекта и инструкции по установке и использованию
  • Youtube.com видео демонстрации, уроки, болтовня на интересные темы
  • Medium.com статьи с развернутым описанием некоторой идеи
  • Hackmd.io документация к программам (когда она многостраничная)

Также я использую, но больше для личных целей, а не для публикации:

  • Google Docs - текстовые документы
  • Google Slides - презентации
  • Xmind - майндмапы

Слайды и майндмап обычно служат проектом-черновиком, являясь основой для всех дальнейших материалов, но явно нигде не фигурируют. Со временем я пришел ко мнению, что их тоже лучше публиковать, вдруг кому-то пригодятся.

Но тут вопрос даже не в публикации, а в самом упорядочивании материлов. В таком обилии платформ довольно легко запутаться даже самому. И через несколько месяцев трудно найти нужную ссылку.

Ссылки/Отсылки

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

Если вы опубликовали новую статью связанную с проектом на Медиуме, возможно, вы захотите добавить ссылку на неё под описанием на Ютубе, Гитхабе и в конце других статей Медиуме в разделе "читайте еще по теме".

То есть добавление нового материала вызывает цепную волну исправления старых. Это сложно автоматизировать хотя бы потому, что это разные платформы. И приходится делать эту рутину руками и головой. Крупные компании имеют для этого специального человека вроде контент-менеджера или SMM-щика. А одиночкам вроде меня приходится либо оставить эту затею (несмотря на её логичность и полезность), либо придумать хитрый ход.

Выпутываться из сетей или качаться на них?

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

Но это гипер затратный путь, потому что:

  1. Вы столкнетесь с рядом неудобств уже на стадии создания контента. Даже писать текст не везде удобно. Не говоря о добавлении видео, субтитров и слайдов. С ними удобно работать на знакомых всем площадках потому, что инженеры работали над ними годами. Писать все эти инструменты с нуля, и даже собирать из готовых блоков очень затратно.

  2. Придется постоянно поддерживать инфраструктуру сайта. Если однажды вы забудете заплатить за хостинг, все ваши труды удалит провайдер.

  3. Каждая ваша новая публикация изначально будет оторвана от людей. Чтобы донести её до публики, вам придется прилагать дополнительные усилия (помещать ссылки в соцсети и т.д.)

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

Проекты/типы контента

Чтобы не заблудиться в лабиринте разных платформ и форматов, вам понадобится система/культура сохранения ссылок на ваши материалы.

Сосредоточьтесь на проекте и типах контента:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Пусть всё, что вы публикуете крепится к этим маякам и вращается вокруг них.

Лично я большой фанат маркдауна (формат написания текста). Для каждого своего проекта я завожу маркдаун файл такого вида:

# Название проекта 

## Статьи
[Статья на Медиуме](ссылка/на/статью)
[Статья на Dev.to](ссылка/на/статью)

## Картинки 

## Видео
[Видео на Ютубе](ссылка/на/видео)
[Видео на Твиттере](ссылка/на/видео)

## Аудио
[Подкаст Apple](ссылка/на/подкаст)

## Майндмапы 

## Слайды

## Код
[Код на Гитхабе](ссылка/на/репозиторий)
[Документация](ссылка/на/сайт)

По мере публикации новых материалов я добавляю новые ссылки под соответствующими заголовками.

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

Чем плох Readme.md на Гитхабе?

Работая над опенсорсным проектом, всю информацию о нем помещают на странице readme.md, что правильно. Неправильно ограничиться ею.

На гитхабе обитают только программисты. Если неспециалист забредет туда случайно, его сильно смущает терминология, типа: коммиты, форки, пул реквесты.

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

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

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

OpenSource.guide советуют создавать сайт для проекта. Но если у вас много проектов, то поддержка их все может превратиться в кошмар.

Поэтому я придумал хранить всю информацию о проекте в файле project-name.md, поместить их все в папку projects и они автоматически генерируются в сайт. И у каждого проекта появляется отдельная страница.

Мультиязычность (интернационализация)

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

Я завел для каждого языка отдельную папку: en, ru. Когда на одном языке проект готов, я перевожу его и помещаю в папку с другим языком. На сайте автоматически появляются страницы проекта на разных языках.

Техническая реализация

Чтобы превратить подобные файлы в сайт-фортфолио без лишних усилий, я воспользовался фреймворком Next.js со статической генерацией контента и интернационализацией.

Как творческая единица я получаю представительство в интернете. Если вдруг кто-то заинтересуется мной лично, может зайти и посмотеть: "ну-ка глянем что он делает вообще, какие проекты двигает". И пролистать все мои проекты с кратким описанием.

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

Хотя физически все публикации находятся на разных платформах, мой сайт хранит и предоставляет ссылки на них все. Они сгруппированы по проектам и типам контента. И всё это генерируется как бы из моих черновиков, личных записей, обычных текстовых файлов, превращаясь в пару кликов в полноценный сайт, с разными страницами и языками.

В будущем я планирую подключить систему подписок/рассылок, чтобы люди могли отслеживать все новости по отдельному проекту, или рубрикам (образовательные и т.п.)

Код проекта опубликован на гитхабе по MIT лицензии. В будущем я планирую записать серию видео уроков по созданию подобного сайта с нуля.

Disclaimer

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