Точка входа
572 subscribers
13 photos
1 file
60 links
Спасибо, что зашли на канал!

Субъективно про будущее и настоящее IT сферы от разработчика ПО
Download Telegram
На днях открыл для себя MIT OpenCourseWare. Был удивлен, что один из самых сильных технических ВУЗов мира вот так свободно открывает все свои лекции и конспекты. К слову, обучение в данном вузе стоит от 3 млн рублей в год

По утверждению самих авторов, такой поход к образованию с открытыми лекциями побуждает преподавателей тщательней готовить свои курсы. Материал не сильно отличается от того, что преподают в топовых российских ВУЗах, но подача материала явно нестандартная. Может мне просто повезло, но в первой лекции, которую я посмотрел, были цепи Маркова, суть которых пояснялась на примере Симпсонов

Здесь можно посмотреть список всех курсов (там присутствуют не только технические специальности): http://ocw.mit.edu/courses/audio-video-courses/

Круто то, что публикуются курсы различной давности. Интересно смотреть на манеру преподавания различных периодов. Судя по википедии, лекторы обновляют свои материалы на сайте, так что присутствуют достаточно свежие (2014-2015г.) лекции. Из плохого: еще нет приложения для мобильников, как у Coursera - не всегда удобно смотреть/слушать с компа
Работа с графикой, всегда выглядит впечатляюще. Вдвойне круто, когда это работает в браузерах. Что интересно, я ни разу не встречал в резюме, чтобы люди, рабоающие с JavaScript, указывали хоть какой-то опыт работы с WebGL. Даже про обычную работу с Canvas не особо часто говорят. Хотя, на мой взгляд всем JS разработчикам стоит попробовать поиграться с холстом, сделать, например, какую-то простенькую псевдо 3D игрушку

Для работы с WebGL рекомендуют обычно эту библиотеку: http://threejs.org
По крайней мере, интерактивную рекламу для больших компаний делают с помощью нее

Здесь можно посмотреть пример реализации модели человеческого глаза: http://www.vill.ee/eye/
(на мобильниках тоже открывается, но не получится удобно повертеть глаз)
В последние дни всех накрыло игрой про покемонов. Я не фанат игр, но меня радует сама механика. Она приближает людей к тому, что дополненная реальность - это нормально

Успех игры от нинтендо дает свежий глоток воздуха другим стартапам, работающим в этой теме. Ведь на самом то деле, про дополненную реальность говорят давно, я даже помню, как в университете на первом курсе сидел и слушал представителя компании AR Door о том, какие крутые проекты они делают. Но не все вопросинимали дополненную реальность всерьез. А игрушка с покемонами смогла продвинуть идею в массы

По этой теме есть хорошая статья про то, что "Pokémon Go" - это еще один шажок к виртуальной реальности: http://www.vox.com/2016/7/12/12152776/pokemon-go-augmented-reality-beginning

#AugmentedReality
Вчера посмотрел презентацию по лучшими практиками написания приложений на Go. Хочу прокомментировать в нескольких постах основные моменты, которые пригодятся не только Go программистам

1. Пишите тестируемый код

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

Особенно эта боль остро чувствуется в языках с динамической типизацией. Например: функция всегда ожидала на вход число, а тут она начнет получать (null / nil) и начинает падать. Разработчик в принципе не мог помнить, что от чего зависит в проекте, соответственно ругать его - не самое лечшее решение, чтобы избежать подобных проблем. В таких ситуациях лучше всего писать приложение (автоматические тесты), которое тестирует ваше приложение. Такой подход поможет выиграть время, которое вы бы могли потратить на ручной прогон приложения

Не подмуайте, что все так гладко - придется писать код по-другому - он должен быть готов к тому, что его будут автоматически тестировать. По опыту могу сказать, что в основном, необходимо помнить про 2 взаимосвязные вещи:

1) избегать глобальные состояния (global state);

2) делать "инъекции" зависимостей (dependency injection) в тестируемые функции

Эти советы можно хорошо прочувтсвовать при работе с фреймворком AngularJS - там практически везде необходимо использовать инъекции зависимостей и уходить от глобального состояния. Рекомендую потратить несколько дней на опробывание данной технологии - лично для меня этот опыт был бесценен

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

По теме тестирования хочу посоветовать отличную книгу "Как тестируют в Google". После прочтения, становится понятно, как массивная компания все еще имеет возможность так быстро двигаться. Секрет в особом подходе к тестированию (неожиданно, да?)

P.S. Я начинаю прорабатывать видео курс (бесплатный) по программированию на Go, и если вам интересно понаблюдать за разработкой реального приложения со многими проблемами и их решениями, стоящих на пути разработчика (в том числе и автоматические тесты), то напишите "+" мне в личку @dkostenko
Слайд с тем, что нужно помнить во время написания кода
Не думал, что напишет столько людей. Спасибо, что читаете посты!

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

1) @brain_party

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

Подписывайтеся, возможно, пересечемся на какой-то из встреч

2) @NeuroScienceRu

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

Проматайте ленту на месяц назад - по пути будет встречаться только актуальная инфа, есть что почитать
Сегодня составлял вакансию на frontend разработчика. Решил не просто копипастить и править предыдущую вакансию, а написать новую, с нуля, и заодно актуализировать вопросы для соискателей. Пока писал, гуглил, что спрашивают/требуют другие компании и нашел хорошую статью, которая, в целом, отражает текущее положение дел на фронте: https://medium.com/creative-business/why-is-it-so-hard-to-find-a-front-end-developer-cb92848a7c6f#.u7v6n3lxk

По моему мнению, самая важная фраза из статьи: a good front end developer needs to be a good back end developer as well. Как мне кажется, именно поэтому хороших фронтов так непросто найти

Для тех, кто хочет стать разработчиком переднего конца, есть несколько неплохих и до сих пор актуальных списков с вопросами для проверки своего уровня:
1) https://github.com/h5bp/Front-end-Developer-Interview-Questions/tree/master/Translations/Russian
2) https://github.com/adam-s/js-interview-review
3) https://github.com/khan4019/front-end-Interview-Questions
Многие заметили, что я кидаю материалы на английском языке. Так вышло, что хороших статей с переводом достаточно мало, поэтому приходится читать/смотреть на английском. Сейчас у меня это получается уже гораздо проще, чем раньше. В этом посте, хочу рассказать о своем "пути" изучения английского и помочь тем, кто ищет свой "путь"

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

Я сразу понял, что изучить язык "без смс и регистрации" не получится, поэтому поставил себе цель: через год смотреть фильмы / слушать радио на английском и понимать 80-90% происходящего

Цели я достиг и вспомная, что помогло лучше всего, хочу отметить 3 момента:

1) Необходимо иметь быстрый способ перевести то, что не понимаешь. Иначе в голове начинается кашка и теряется смысл читаемого.

Для этого я использую расширение Google Translate в хроме: https://chrome.google.com/webstore/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb
Выделяешь слово, и оно моментально переводится. К сожалению адекватных альтернатив для мобильника не встречал. Если кто видел, отпишите плиз (@dkostenko)

2) Общение с носителем языка. В наше время это сделать достаточно просто - по скайпу. Для этого достаточно загуглить "уроки ангглийского по Skype" и выбрать, с кем хочется пообщаться. Мне повезло, я практически сразу нашел отличного преподавателя (из Лондона), с которым мы не просто шагали по стандартным урокам - мы обсуждали жизненные моменты, детали, которые были интересны мне, а не авторам зауныльных пособий

Хочу поделиться контактом этого преподалавателя. Его зовут Оливер, в скайпе его можно найти как "Ollie.vdh". Я очень благодарен ему, за то, как он поднял мой уровень - его подход к преподаванию действительно необычен, рекомендую пройти тестовый урок

3) Читать/смотреть на английском по интересным для себя темам, а не по "охране окружающей среды" или "столицы мира" (конечно, я понимаю, что это хороший и инетресные темы, но так получилось, на английском мне интересней изучать что-то по IT)

Я достаточно часто сижу на https://medium.com
Там много интереснейших статей по любым темам на простом английском. Так же не обошлось и без фанатичного прослушивания BBC News (http://www.bbc.co.uk/radio/player/bbc_world_service) или просмотра симпсонов в оригинале
Посетил лекцию Рональда Бейли по современным биотехнологиям и отношению к ним, на которой он ловко разносил моралистов и консерваторов. Они, конечно же, не сидят сложа руки и раз за разом штампуют новые страхи, которыми пытаются запугать людей. Например: если ученые изобретут таблетки для продления жизни, то планета будет похожа на дом престарелых. Рональд ответил, что в основном люди будут желать продлить свою молодость, а не старость и это предположение, просто один из необоснованных страхов. На мой взгляд, слова лектора звучали более правдоподобно, чем предостережения консерваторов

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

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

Медуза выкатила отличное интервью с Рональдом по этике биотехнологий: https://meduza.io/feature/2016/07/18/izlishnyaya-predostorozhnost-odin-iz-samyh-pagubnyh-printsipov

Видимо Стив Джобс не ошибся, и следующий прорыв, сравнимый с созданием компьютеров, будет на пересечении биологии и технологий
Конечно же, Google тоже участвует в гонке
В последнее время я все больше убеждаюсь, что разработчикам стоит хоть как-то понимать, как работать с ОС, на которой будет запускаться проект. Разделение ответственности в команде - это хорошо, но еще лучше, когда каждый понимает, чем именно занимается его коллега

Достаточно часто проекты живут на линуксовых серверах, поэтому хочу порекомендовать крутейшие видео уроки от админа Linux серверов, выражающегося человеческим языком: https://goo.gl/7PcXmO
Рассказывает, приводя примеры на Ubuntu, но будте уверены, в других Linux все примерно так же работает

У него несколько плейлистов. По опыту могу сказать, что стоит посмотреть хотя бы базовый (для LPIC-1 (exam 101)). У Кирилла (автора) соотношение информации, применяющейся в работе и просмотренной, стремится к единице

Отдельно хочу выделить несколько уроков:
- по upstart: goo.gl/FleKrQ
- по работе с пакетами: goo.gl/q5Cgk8
- по работе с процессами: goo.gl/XJkMiZ

P.S. LPIC - это сертификация по знанию Linux
Никто никогда не задумывался, почему сверточные сети называются сверточными? И почему изображения чаще всего прогоняют именно через них? Ответ прост: операция свертки - это одна их базовых операций по обработке изображений. А в сетях, в которых на каком-то из слоев применяется операция свертки к входным параметрам, называются сверточными. Более подробно про операцию свертки можно почитать здесь: https://docs.gimp.org/ru/plug-in-convmatrix.html

Советую на досуге запрограммировать свертку для изображения, без использования дополнительных библиотек (OpenCV и подобных). С задачей сможет справится любой, кто уже умеет работать с массивами. После этого сразу станет понятно, как работают некоторые фильтры в Instagram или Photoshop. Например, с помощью свертки изображения с определенной матрицей, можно получить сглаженное изображение, которое чаще называют "замыленным" или "заблюренным" изображением (gaussian blur)

К чему это я все: вышла годная статья, где по шагам разжевывается, как нейронные сети обрабатывают изображения:
https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/
На мой взгляд пока самое доходчивое описание работы сверточных сетей, которое я видел
Результат одной из итераций свертки изображения (матрица слева) с ядром 3х3 (по центру)
Выходные прошли за изучением экосистемы React. Но по традиции меня занесло и я снова решил посмотреть туториалы по AngularJS 2. После них, мне кажется, что у реакта не экосистема, а обычная помойка

Год назад, после этого видео: https://www.youtube.com/watch?v=XQM0K6YG18s
стало ясно, кто отец в плане рендеринга. Но беда была в том, что этот отец еще не родился, да и сейчас сидит в бете

Поковырявшись немного с реактом, я уже успел сформировать кое-какое мнение о нем. Кстати, о реакте я говорю больше не как о библиотеке, а как о волне, которая включает в себя паттерн Flux, идею с компонентами, GraphQL и тд. Ощущение от реакта пока такое: еще один php-подобный мир. Конечно, он дал определенный импульс всему фронтенд сообществу, но, как мне кажется, вскоре должен прийти Ruby on Rails в мире фронта. И второй ангуляр очень уж смахивает на него

Годная статья по теме: https://habrahabr.ru/post/274523/
Angular 2 против React: И будет кровь... поскорее бы уже
Мастер-класс по работе с TensorFlow, не требующий наличия степени PhD: https://goo.gl/vj1Tzm
Автор показывает, как обучить сеть для распознавания рукописных чисел. При обучении и тестировании используется стандартный датасет MNIST: http://goo.gl/C70oVt

Данное видео впечатлило меня больше всего тем, что на нем можно увидеть специалиста в работе, наблюдать как и какие он строит графики для аналитики, как рассуждает по коду и тд. Так же стоит отметить: автор действительно умеет говорит о сложном простым языком
Нахожусь под впечатлением от видео, где бывший разработчик Angular 2 разносит Angular 2 и продвигает свою поделку (Aurelia)
https://www.youtube.com/watch?v=6I_GwgoGm1w&feature=youtu.be
Взгляните - там хорошо показана расстановка сил в мире фронта на ближайший год. Видео стоит смотреть сразу с 35ой минуты

Кстати, за пару дней использования Angular 2 стало понятно, как реализовать практически все: валидации, хранение текущей сессии, вложенность компонентов и тд. Смог задеплоить приложение за минуту с помощью отличного инстурмента https://github.com/angular/angular-cli (кстати, инструмент копировался с емберовского cli). В общем, все что нужно для построения админки (а я в основном только такие приложения и пишу) идет практически из коробки, в отличии от ReactJS

Лично у меня сформировалось мнение, что реальным конкурентом второму ангуляру может быть только Aurelia

Демо видео Aurelia:
https://player.vimeo.com/video/117778145