Мысли о выборе ЯП 2018

Отправлено 14 авг. 2018 г., 2:35 пользователем Deni Baskovsky   [ обновлено 14 авг. 2018 г., 21:34 ]

Языки программирования постоянно меняются. Вроде бы еще совсем недавно все писали на Java и рассматривали Flash как универсальную технологию для веба. А теперь от Java плюются, а Flash умер окончательно. 
Как известно, при выборе технологии нужно обращать внимание не на то, что делают остальные, нужно выбирать то, что будет лучше работать. Короче говоря, ИМХО сейчас стоит сосредоточиться всего на четырех языках. Из них три уже готовы к продакшену. 

Системный язык (для игр, ОСей и прочих очень сложных и нагруженных всяческой логикой программ) это Rust. 
Язык общего назначения это Kotlin. 
Agda для сложной математики и алгоритмов.
Язык сверхобщего назначения - JavaScript.

Встречайте Qweeto*

Отправлено 11 авг. 2018 г., 14:22 пользователем Deni Baskovsky

* PreMVP

Последние полтора месяца я, находясь в творческом отпуске, делал это. Пробираясь сквозь лес информации, положенной в вики, разбирая заметки в своих многочисленных блокнотах, вычитывая собственные и чужие статьи, мысли и комментарии, я ужимал воедино этот огромный багаж знаний в маленькое зерно, которое при должном уходе, вероятно, сможет прорасти в прекрасное крепкое дерево будущего. В моем случае, это зерно не очередная замысловатая идея, засорявшая и без того заполненные чепухой мозги, а проект, придуманный под окончание универа и, как положено настоящему долгострою, смиренно дожидающий своего наступающего часа. Не бывает же так, чтобы Путь разработчика основывался только на одних факапах и неудачах? Конечно, нет! И чтобы хоть как-то доказать это, я, забираясь в уютненькие заведения со своим макбуком, перечитывал и переписывал сервер, клиент, деплой систему, CI, формировал БД проекта Qweeto. Сложно сказать, что давило на меня больше, но лично отобранные мотивационные цитаты, вкупе с прекрасной музыкой, давали дополнительные силы просто тупо продолжать идти дальше. И сегодня я могу сказать, что фундамент заложен, меня он устраивает, репы закрыты, технологии выбраны на границе революционности и стабильности. Короче говоря, qweeto.com.

Через пару месяцев, когда доделаю верстку и улучшу производительность, я напишу подробнее про проект, а именно: на каких идеях он основан, почему я внедряю социальную составляющую (подсказка: в статье), и зачем вообще был создан ProstoDiary)

Сказ о том, почему YouTube тормозит, а Qweeto still coming

Отправлено 3 авг. 2018 г., 12:29 пользователем Deni Baskovsky   [ обновлено 3 авг. 2018 г., 12:29 ]

Есть одна такая страшная штука, называется браузер. Он построен на Open Web Platform (OWP). Все это мракобесие крутится под еще более страшным монстром - JavaScript. 

Чтобы жизнь фронтэндщика не казалась медом с jQuery и тысяч написанных плагинов под него, с 2012 года активно продвигаются сложные фреймворки, сначала MVC, потом MVVM. В какой-то момент их создатели окончательно тронулись и решили бежать быстрее паровоза, а именно, внедрять в свои фреймворки технологии, которые еще не работали в браузерах. Так появился, например, Babel. Но им этого было недостаточно, и по мановению одного пуш коммита в мастер ветку укатился README.md того, что пора бы все делать через JS, а остальные части OWP (HTML, CSS и пр.) можно делать или на крайняк эмулировать через него. Так раздулся npm и продолжает раздуваться дальше. В какой-то момент количество полифилов перевалило достаточный порог, чтобы все нормальные люди поняли, что что-то идет не так, и в этот момент мир фронтэнда разделился на два непримиримых лагеря: сатанинских задротов, кто говорил что все Ок и это будущее и тех, кто предлагал попридержать коней и оглядеть вокруг. К слову, ваш покорных слуга, оказался из числа вторых, и окружающая его сатана насмехалась своим зловещим смехом, собирая очередной React Create App по полчаса. В это время, ребзя из гугла решила что они могут все и чихали на все стандарты и заручившись поддержкой всего Chrome/ium сообщества выкатили кучу новых спек с custom elements, shadow dom, html import. Все это безобразие привести к продакшн виду поручили ребзе из Polymer. Спустя годы пыхтения и давления на W3C, им все же удалось получить более-менее работающую версию своих черновых API и под громкие возгласы писающих кровью реактивистов, YouTube переехал на Material Design на новом фрейморке. Вот только Polymer, который выводил множество package модулей на плечи браузерного API, нуждался в небольших, но хорошо написанных тулзовинах, которые бородатые хипсторята осилили написать лишь спустя долгие месяцы после релиза Polymer 1. Так появился Polymer CLI. Далее случилось невообразимое. Гугл оказался не таким всесильным, и такая часть API как html import была отвергнута хацкерами из mozilla, а вместе с этим была переделана спека по web components. Таким образом обиженным гуглятам пришлось переделывать свою версию и они впопыхах выкатили Polymer 2, который имел небольшие, но очень опасные исправления, которые исправлять ручками копошась внутри Chrome и YouTube в принципе, не могло принести должного Value. Вот так и подумали наши гордые орлы, что сражаться с React/Vue/Angular предлагая свои говноинструменты как-то не труъ и видимо под предлогом увольнения, выкатили нечто, которое назвали Polymer 3 с LitElement.

LitElement это, если будет понятнее, эдакий jsx на минималках, только построенный на строковых шаблонах ES6. Вместо двустороннего биндинга тут юзается односторонний и поэтому появляется легкая возможность подключения всяких Redux'ов. Таким образом, в 2к18 взяв поиграться с pwa-starter-kit, я был радостно удивлен возможностям, которые мне позволял новый фреймворк. Здесь даже webpack необязателен! Стоит ли говорить, насколько быстро происходит разработка, когда все фичи, которые тот же React делает с помощью трехколесных велосипедах с тонной сборщиков здесь делается нативно? Но, как и в любой истории, в какой-то момент идиллия начала рушиться, стоило было сделать шаг влево-вправо. К тому, что WebStorm будет по-своему делать (читай: кривые) отступы в LitElement еще ладно. Но когда всеми любимый EsLint начинает ругаться на то, что ты делаешь асинхронный import в середине функции, а потом понимаешь, что Polymer CLI не может собрать работающий билд из-за этого, впадаешь в растерянность и остается только ждать. Ждать что разрабы приведут все это к продакшн виду. Пока не будет нормального CLI, который начнет делать рабочие билды не видать ни нового YouTube без полифилов, ни Qweeto на одном порту с серваком. 

Такие дела.

Идея игровой механики ver.2.0

Отправлено 10 июл. 2018 г., 8:37 пользователем Deni Baskovsky

Пока в полустазисе возвращался в Москву, внезапно, пришла идея геймы.

Почему бы не сделать пародийную игру про массовую культуру тупых мемчиков? С нетривиальным управлением: вообще без кнопок, терминала, стиков и свайпов! Использовать вместо них совмещенное управление из гироскопа, GPS, микрофона и камеры?! Заставлять игрока поворачивать голову вместе со смартфоном, кривляться, кричать в микрофон и бегать по сторонам!

Допустим, игрок командует неким персом. Его перс тупой и при этом он попадает в особые гиблые ситуации, например, тонет, а позади него находится спасательный круг. Игроку нужно как-то заставить своего перса повернуть голову на 180С, увидеть круг и уворачиваясь от акул спастись. Но! Перс учится через действия пользователя и тем самые становится чуточку умнее. И каждый раз его приходится обучать заново. Более того, каждый раз он учится иначе. Реакции на то или иное взаимодействие действия различны из-за структуры окружения игрового мира и некой энтропии ML.

Такой вот бред сгенерировал :-)

ProstoDiary: обраотка ашыбок

Отправлено 24 июн. 2018 г., 23:23 пользователем Deni Baskovsky

Dialogflow успешно распознает Entities, достаточно описать необходимые синонимы к нему. Но что делать с ошибочным вводом, когда боту приходит сообщение, например: "50 нублей"? Для этого случая, подключаются специальные спеллеры, например, "Яндекс.Спеллер". 


Теперь можно писать с ошибками! Бот всё поймет (;

ProstoDiary: NLP и ML с dialogflow

Отправлено 20 июн. 2018 г., 3:16 пользователем Deni Baskovsky   [ обновлено 24 июн. 2018 г., 8:16 ]

На днях в рамках задачи изучал возможности внедрения в ProstoDiary технологий распознавания естественного языка. На стол попали три технологии: Microsoft LUIS, Facebook wit.ai, Google dialogflow. Все они имеют бесплатный режим пользования, поддержку русского языка, javascript sdk и интеграцию с популярными мессенджерами.Из всех них wit.ai мне показался самым простым, но у него была сложность с интеграцией с созданным проектом. Короче, из-за возможностей Google Cloud я остановился на dialogflow. Уже первые тесты показали мощности ML по-сравнению с RegEx`ами. Учится нейронка достаточно быстро (возможно, только вначале), есть возможность выгрузки интентов (чтобы затем мигрировать на другой сервис) и только недавно зарелизилась v2 версия API. Пока все нравится, но есть опасение, что Google прикроет Dialogflow или смержит в Firebase. Это, конечно, не история с Parse от фейсбука, но пока все же.
https://sites.google.com/site/sajtdenisa/news/_draft_post/Screen%20Shot%202018-06-20%20at%2012.14.49.png

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

Как я увеличил размер JS бандла со 122кб до 288кб и не пожалел об этом

Отправлено 5 мая 2018 г., 2:08 пользователем Deni Baskovsky

Давно стояла задача переделать gotois лэндинг на компоненты. Вариант использования ванильных инструментов себя перестал оправдывать в связи с возрастающей сложностью написания стилей и скриптинга. Сначала был вариант использовать rscss для стилей и Polymer 3. Но учитывая формат кодовой базы я решился остановиться на riot.js. 

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


Попутно поломалась система Lazy загрузок изображений в swiper'е и поехали к чертям анимации заголовок. Еще непонятно как быть с линтовкой и что делать с неработающей подсветкой синтаксиса .tag файлов в вебшторм. 

В остальном, я скорее доволен, переездом на этот фреймворк.

Qweeto: ретроспектива за 5 лет

Отправлено 10 апр. 2018 г., 13:46 пользователем Deni Baskovsky

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

За эти 5 лет скатился Foursquare, Facebook сегодня испытывает давление со стороны общественности, Instagram сделал прорыв от хипстерских фоточек еды и гламурных отфильтрованных телочек к стадной массе быдла, которые уже не знают что публиковать в своих stories. Qweeto находится в стазисе, а я застрял в Москве намного дольше чем планировал. Зато теперь, высматривая Презентацию которую когда-то делал с друганом, легко заметить, что есть идеи, которые проходят вместе с человеком, и только от него зависит, сможет ли он, словно олимпиец, провести этот огонь от идеи к чаше реализации.

ProstoDiary: projects

Отправлено 10 апр. 2018 г., 12:33 пользователем Deni Baskovsky

Не секрет, что проект я веду открыто и трачу на кодинг времени меньше, чем на обдумывание той или иной фичи. Количество Issues ушло за тридцатку и поэтому решил перевести их на проекты. Пока проектов три:
  1. Watch - служит для проектирование портрета пользователя и считыванием всего доступного боту данных (email, прикрепленные аккаунты, перемещение и пр.). Идея в том, чтобы бот знал своего пользователя.
  2. Control - все что связано с финансами и оплатой/контролем и доступными ресурсами. Идея в том, что бот руководит ресурсами/финансами пользователя.
  3. IOT (будущая Qweeto) - бот как посредник между пользователями. Идея в том, что боты могут общаться между собой, совершая разные действия, основываясь для этого на первых двух идеях (Watch/Control). 

ProstoDiary: логирование от Coralogix

Отправлено 27 мар. 2018 г., 4:01 пользователем Deni Baskovsky

Как оказалось, на Heroku с логированием все плохо. Таких сред как Graylog нет, поэтому приходится брать то, что есть в аддонах. Потратив несколько часов на установку разных логов, остановился на Coralogix, который удалось связать в упряжку с winston 3, пока еще находящящийся в состоянии релиз кандидата. Морда у Coralogix некрасивая и неудобная, но пока все работает. Использовать в других проектах категорически не советую. 

1-10 of 159