Интересное-8

В тему Трампа. Ниже – презентация одной, широко известной в узких кругах, компании, которая, по словам Das Magazine, сделала качественный промоутинг Теда Круза на политическом рынке, а затем – обеспечила победу Дональду Трампу. Пример отличной презентации – наглядность и правильная расстановка акцентов. Это то, как надо делать рекламу своему продукту.

Ну а теперь о других темах:

Подборка бесплатно скачиваемых книг, связанных с Data Science, от O’Reilly. Качаем на свой планшет, читаем, мотаем на ус.

Эти знания пригодятся вам в любой индустрии – статья на RusBase о том, как супермодель Карли Клосс нашла свое призвание в программировании. Мне, как “технарю” до мозга костей, всегда было интересно читать подобные статьи о людях, которые пробуют что-то кардинально отличающееся от того, что они делали раньше. И особенно интересно, когда дело касается перехода из совершенно нетехнической сферы деятельности в высокие технологии и инженерное дело. Карли Клосс, похоже, это вполне удаётся.

Современный Frontend Development – это боль, и ты горишь, и всё горит, и ты в аду… Тысячи фреймворков, которые рождаются и умирают быстрее, чем ты успеваешь узнать об их существовании.  10 things I learned making the fastest site in the world – мнение человека, который варится во всём этом, и просто хочет от web-интерфейса нормальной отзывчивости.
Его рекомендации:

  • Не делать медленных сайтов. Просто не делать. Совсем. Я бы ещё добавил – не используйте React. Или используйте, но только в крайнем случае, когда уже ничто другое не помогает. Рекомендация насчёт immutable.js – хорошая, годная. Но зачем ограничиваться полумерами? Однако об этом – ниже.
  • Mobile first. Это очевидная штука, но не все ей следуют. Делая интерфейс для мобильных устройств, вы волей-неволей выкидываете ненужные вещи, которые в общем-то и в десктопных браузерах не нужны. Заодно оптимизируете код под высокое latency в мобильных сетях.
  • Бенчмарки, бенчмарки. Проверяйте оптимальность и производительность кода сразу, не откладывая “на потом”. Чем раньше узнаете о проблемах, тем для вас лучше. Очевидно, что запуск бенчмарков нужно автоматизировать.
  • Client Side Rendering is expensive. В отдельных случаях он может быть оправдан, но в большинстве случаев удобнее (в т.ч. и с точки зрения отладки) готовить UI на сервере, нежели делать клиента “толстым”. И да, сервер тоже не нужно “утолщать”. 🙂 Пусть просто делает то, что нужно, не более, и делает это быстро(!). Т.е., например, идеально будет не рендерить HTML на сервере, а пытаться делать его сразу статическим и отдавать через CDN. Ранняя загрузка скриптов и данных (preload) – обязательна, и очевидно это всё нужно распараллеливать.

Лично моё мнение такое – следует подойти к проблеме качественно иначе, с другой стороны. А именно – перейти наконец на ClojureScript. 🙂 Заодно вы заимеете доступ к Clojure (т.к. языки мало чем отличаются) – отличному решению для backend-разработки. Никакие immutable.js не нужны, т.к. всё и так иммутабельно, что даст ускорение выполнения кода + уменьшение потребления памяти. Google Closure Compiler идёт в поставке ClojureScript – оптимизация сгенерированного JS-кода “из коробки”. Для любителей React есть Reagent или Om, но всё-таки старайтесь их не использовать. Всегда есть более простые решения.
В своих pet projects я использую для frontend исключительно ClojureScript. Для backend у меня есть “убойная парочка” – Erlang и Clojure. Подобный набор инструментов позволяет решать практически любые задачи (разве что для ML удобнее набросать простые микросервисы на Python, даже без HTTP REST, а просто на обычных сокетах, с бинарным протоколом типа Protobuf).
Мой личный субъективный совет: старайтесь не использовать JS-фреймворки. Если без чего-то можно обойтись – выкиньте это. Оверинжиниринг не нужен, особенно когда речь идёт о frontend-разработке. Всегда делайте проще. Впрочем, эти советы актуальны и в бэкенде.

И напоследок, Awesome Shell – a curated list of awesome command-line frameworks, toolkits, guides and gizmos. Адепты командной строки оценят. 😉