Category: россия

усы2

Перенос номера сотового на практике

В один прекрасный день я купился на безлимитный, безроуминговый интернет и лимитный, но тоже безроуминговый (по России) телефон от Йоты. До этого я лет десять, наверное, был абонентом МТС и даже переезжая в Ульяновск и обратно сумел сохранить новосибирскую симку. Оставим в стороне факт, что если я хочу переехать в другой город, но остаться у того же оператора, мне нужна новая симка. Глупо, но глупости полно кругом, одной больше, одной меньше.

Решил перенести номер. Заявление можно написать сразу в Йоте, они утрясают все детали с отключением от МТС-а сами. Предупредили: проверьте, что баланс положительный, иначе беда. Положил денег с запасом. Жду. Номер переносится 10 дней. Жду. Пробую вставить Йотовскую симку. У Йоты нет личного кабинета, есть только приложение для Айфона и Андроида. Плебеи с Виндоус Телефоном пишут в чат техподдержки, чтобы выбрать тариф.



Балуюсь, пробую включить перенаправление вызовов с МТС-овского номера. Перенаправление у МТС не работает. Пролетает 10 дней. Приходит последняя жалобная смска от МТС: может, все-таки передумали?



Не передумал. Проверяю баланс МТС. Около 50 рублей. В полночь старая симка умирает, личный кабинет блокируется, номер переносится, ура, я счастливый обладатель Йоты.

Почти два месяца безмятежно пользуюсь новым оператором. Интернет денег не просит, 4G ловит, правда, хуже, чем у МТС. Езжу в Москву, звоню, сижу в интернете.

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



Интересно. Ищу, куда позвонить. У МТС на сайте ни на главной, ни в «о компании», нет вообще ни одного телефонного номера. Гуглю, звоню. Оказывается, через три недели после отключения у меня списали 150 рублей за услугу БИТ. Такая вот услуга, списывается раз в месяц. Окей, выясняю долг (97 рублей 59,96 копеек). Убеждаюсь, что гудок не подключен и дальше никаких списаний не будет (ну и что, что у меня даже симки уже нет, мало ли). Сообщают, что платить надо строго по номеру лицевого счета и строго в салонах МТС. Присылают номер счета смской.



Иду в первый салон. Сообщают, что у них не работает касса, но оплатить можно в терминале, который прямо у них там же и стоит. Объясняю ситуацию. Показывают, как платить по номеру ЛС. Плачу, забираю чек, иду домой.



Проходит 4 дня. Приходит смс от МТС. Уважаемый, вы у нас конечно не обслуживаетесь, но денег должны.



Интересно. Черт с ней, с пунктуацией. Гуглю номер МТС, звоню. Долг никуда не делся. Сообщаю, что платил. Рекомендуют позвонить по номеру с чека. Весь день названиваю по номеру с чека. Не берут трубку. Платежная система ТелеПэй. Названиваю по 8800 номеру ТелеПэй. Не берут трубку (целый день, Карл!). Я, в принципе, догадывался, что платежные терминалы это такие ящики для засовывания денег, без каких-либо гарантий. Убедился.

Окей, черт с ними со ста рублями. Иду в офис МТС (другой, на всякий случай). Объясняю ситуацию. В терминале платить отказываюсь, стою в очереди, рекламирую соседям тарифы от Йоты. Меня быстренько берутся обслуживать, достаю 100 рублей. Проблемы со связью. Жду 20 минут. Прихожу еще раз. Еще раз объясняю ситуацию. Выясняется, что проблемы не со связью, а с лицевым счетом. При попытке положить на него деньги возникает ошибка. Жалуюсь, что у меня из-за этих их ошибок отключат Йотовский номер. «Да ну, ерунда какая, не может такого быть», — заверяет меня девушка.

Возвращаюсь домой, гуглю номер МТС, звоню. Меня сразу предупреждают: не погасите задолженность — вас отключит Йота. Объясняю ситуацию. Меня заверяют, что никаких причин не принимать у меня деньги у МТС нет. Более того, МТС очень хочет моих денег.

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

Прихожу домой. Ситуация патовая. Моих денег хотят, но не могут взять. Злиться не на кого. Надо извлечь из этого какой-то урок, но непонятно, какой.

Завтра отключат симку.

усы2

Логотип Новосибирска

C 1893 по 2014 год у Новосибирска не было собственного логотипа.



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


Множество вариантов применения


Символ закрепляет статус Новосибирска как неофициальной столицы Сибири.


Новосибирск на карте


Логотип Новосибирска уже внесен в стандарт Unicode: ❄︎ НОВОСИБИРСК.


Всё необходимое


Снежинка — простой, понятный, узнаваемый и универсальный знак. Он применим в любых ситуациях, легко воспроизводится от руки.



Знак будет способствовать закреплению образа Новосибирска как привлекательного, современного туристического центра.



Ошибиться невозможно



В Новосибирск!



Главная площадь города




Бюджет проекта: 8,1 млн. руб. Патенты ожидаются. На очереди логотипы Бердска, Искитима и Краснообска.

усы2

Get that job at XXX

Тут Саша Алексеев рассуждает про найм, и мне тоже захотелось поделиться опытом.

Во второй половине 2013 года мы провели успешную кампанию по расширению штата Эхо. Успешной она оказалась благодаря следующим принципам:

  1. Убрать кота в мешке
  2. Зацепить
  3. Сократить дистанцию
  4. Отфильтровать

«Кот в мешке» — это любая компания, повесившая объявление на hh.ru/moikrug/куда-там-еще. С точки зрения кандидата совершенно непонятно, куда он попадет. Что там за люди (есть ли там люди?), чем они занимаются, от чего у них горят глаза, насколько всё плохо/хорошо/тоскливо. Эта неизвестность очень мешает. У всех написано «интересная работа, молодой коллектив, печеньки» — это ни о чем, стоп-слова на самом деле. Сайты айтишных контор сами знаете, как выглядят.

В Эхо было несколько сотрудников, пишуших в ЖЖ на рабочие темы, у нас был корпоративный блог, из которого кое-что можно было понять, мы выступали на конференциях в Ульяновске и в Новосибирске, какой-никакой гитхаб с опенсорсом. Благодаря усилиям Льва Валкина и ульяновской команды Эхо была очень заметной в ИТ-тусовке Ульяновска и среди студентов. Мы звали к себе на хакатоны, лекции и скайп-посиделки на около-ФП темы.

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

«Зацепить» это примерно про то же самое — кандидат (потенциальный! Он пока даже не думает о смене работы) должен представлять, а что же такого интересного он будет у вас делать. О том, что надо будет работать, догадываются все — а вот чем именно будет эта работа радовать, надо рассказать обязательно. Вместо «у нас на кухне есть кулер» пишите лучше, что у вас есть: горячие темы (облака, high load, ML), свобода в выборе инструментов, 20% side project, etc. У нас, например, даже тестовое задание «цепляло», его хотелось сделать.

Тут еще важно не забыть «сократить дистанцию» — приложить все усилия, чтобы инженеры разговаривали с инженерами. Это намного понятнее и ближе. Тексты вакансии/тествое задание/все коммуникации — это всё должен осуществлять тимлид. Нельзя перекладывать это на HR или составлять отписки, нет, коротких путей тут быть не может. Важно, чтобы человек чувствовал, что он разговаривает не со стенкой, не с черной дырой, не с официальной «компанией», а с живым инженером, таким же, как и он сам. Идеально, пожалуй, если под вакансией будет тупо стоять прямой емейл тимлида (мы так сделать не догадались).

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

У нас дополнительно встала проблема фильтрации — будучи небольшим стартапом, мы искали людей определенного уровня, способных брать и тащить не отдельные задачи, а целые направления. Поэтому мы сделали обязательным входным условием тестовое задание — это серьезный фильтр, зато оно помогало отсеять людей с attiutude «сначала заплатите, а потом я может быть поработаю». У всех, кто его сделал, проблем с «выдавать результат» позже не возникало. Задание непростое, зато work-related, то есть похоже на то, чем нужно будет заниматься. Короче, оно сработало еще и как фильтр по интересам.

Я думаю, уже понятно, что задание было выложено на сайте — открытость, уменьшение дистанции — ты заранее знаешь, чего от тебя ждут, какого уровня, и тебе не нужно принимать решение о смене работы заранее — можно попробовать, не получилось — ну, так никто и не узнает. Раньше, чтобы получить задание, нужно было написать письмо HR — серьезный шаг, который наверняка срезал большой пласт потенциальных желающих. А вот и само задание.

Устное собеседование тоже было, но там ничего необычного.

В итоге: большой поток кандидатов по сравнению с предыдущим «пассивным» наймом и отсутствие ложно-позитивных срабатываний (все попавшие в Эхо оправдали ожидания на 100-110%). Благодаря этой схеме был почти полностью сформирован Новосибирский офис и серьезно расширен Ульяновский.

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

усы2

Научный метод

Когда рассказывают про новосибирский Академгородок (научный район Новосибирска, где изначально находилась куча институтов, НГУ, физматшкола, а теперь еще и Технопарк, все айтишники и офис компании Эхо), всегда вспоминают байку (или не байку) про тропинки:

Когда академик М.А. Лаврентьев в 57-м году приехал в Сибирь, он решил не прокладывать тропинки в лесу, а подождать, пока люди протопчут их сами. Каждая тропинка функциональна: это кратчайший путь к какому-либо месту. За последние 40 лет расположение тропинок не изменилось. От одного института до другого по тропинке можно дойти за 10 минут, а в обход – за 30.




Отличный способ, и сегодня я наконец понял, как применить его в дизайне UI. Пока не до конца ясно, как перенести это на экранные интерфейсы, но на физических это выглядит вот так:



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

Еще пример:

усы2

Clojure at Echo

Провел в команде опрос на тему Кложи. Опрошено три респондента с 4-5 месячным опытом использования (основные разработчики нашего clojure-driven продукта) и двое с 1-2 месячным (переключились на другой проект). Результаты анонимизированы и подсокращены до смысловой части.

Насколько сложно читать?

— Несложно, дело привычки
— Читать сложнее Эрленга
— Python (2,3) < Java, Erlang (4) < Clojure(6,7)
— Примерно Ruby (без Rails)
— Очень зависит от автора

Насколько сложно писать?

— Очень легко
— Легче, чем в ООП языках
— Меньше кода, только суть
— Упирается в понимание кода
— Проблем с отладкой не возникает (отладочная печать она и в Африке отладочная печать)

Как быстро начинает получаться писать что-то полезное?

— Неделя
— Недели две
— От недели и больше
— С учетом, что есть опыт в ФП

Наиболее сложные области

— Concurrency примитивы
— Двухсторонний interop
— Meta параметры
— Идеология

Стала ли Clojure естественным, «своим» языком?

Все: Пока нет, но потенциально да.

Полезно

— Гибкость, лаконичность
— Особенно чувствуется при переключении на другой язык
— Скорость написания кода («опа-опа и готово»)
— Java—библиотеки
— Синтаксис удобен для файлов конфигурации

Раздражает

— Скобки (1 чел.)
— Привязанность к Java (2 чел.)
— Непрозрачность кода из-за макросов (2 чел.)
— Медленный старт, тяжеловесность платформы (2 чел.)

Общее впечатление

— Писать на Clojure очень легко. Видимо поэтому мы так много пишем и переписываем то, что пишем.

— Большая неограниченная свобода. Можно писать как угодно и в любом стиле. Код становится зеркалом разработчика.

— Clojure идеально подходит для соло проектов и достаточно плохо подходит для командной разработки.

Наиболее полезные ресурсы

clojure.org
clojuredocs.org
— The Joy of Clojure
— Clojure Programming
— Programming Clojure
усы2

Clojure@Echo 02 Библиотеки, web-стек, ClojureScript

Третья лекция про язык Clojure. Лекция будет полезна всем интересующимся пригодностью Clojure на практике (батарейками) и задающимся вопросом «а не написали ли на ней killer-app уже?». Где-то после первого часа начинаются вопросы, не знаю, насколько там все разборчиво. Видео в этот раз особенно урывочное (фотоаппарат барахлил), но немного есть.

Видео:


Слайды можно посмотреть отдельно на Спикердеке, а можно скачать pdf. Видео можно скачать на Vimeo.

Предыдущие лекции выложены тут и тут.

(no subject)

Несколько фактов про компанию Эхо:

  • Я до сих пор не знаю, что значит название юрлица JackNyfe (Echo это торговая марка).
  • Зато знаю, почему раньше продукт назывался js-kit, а теперь не называется.
  • Наш CTO считает, что люди, которых прет чем-то заниматься, важнее технологий, на которых они это делают. Поэтому у нас, при большой уже кодебазе на Erlang/OCaml/JS возникают проекты и на Perl, и на Ruby, и на Clojure, когда это удобно.
  • Нас немного (~20 программистов), поэтому многие формальные процедуры у нас не отработаны, хотя мы стараемся какие-то правила устанавливать. Например, филиал в Нск будет первым, там очень много неясных вопросов. С другой стороны, в маленькой компании подход всегда более человечный, чем в большой.
  • Мы никогда не искали людей, знакомых с конкретным языком, однако мы требуем, чтобы кандидат глубоко разбирался в какой-то одной области (не важно какой).
  • Во время тестового задания (2 недели) мы просим кандидатов выучить Эрленг. Это неплохо фильтрует по многим причинам — может ли человек быстро обучаться новому, самостоятельно разбираться в материале, какие универсальные принципы IT он понимает, а не просто запомнил в знакомой среде, где «все так делают».
  • Есть вероятность быть уволенным на испытательном сроке и даже после, если есть какие-то проблемы. Я считаю, что это круто, потому что остаются только очень сильные и адекватные люди, но штат растет не так быстро, как нам хотелось бы.
  • Наш флагманский продукт — многофункицональная real-time платформа для разных крупных бизнесов (комментарии, форумы, галереи с большой посещаемостью и real-time нотификациями).
  • [Писькомерки] Пиковая нагрузка в день сейчас порядка 40k-45k req/s (суммарно по всем endpoints).
  • Написано и используется 500кб клиентского js-кода (говорят, очень качественного).
  • По данным мониторинга, в продакшне сейчас поднятно ~450 серверов.
  • Мы все еще американский стартап (со всеми плюсами и минусами) и вышли на самоокупаемость.
  • Мы явно выделяем время не только на бизнес-, но и на инфраструктурные задачи.
  • Иногда чинить аварии будят ночью (американским днем), если проблема требует вмешательства кого-нибудь из разработчиков.
  • В случае аварии ищется не виновный, а проблема (круто, да? в других компаниях бывает и по-другому, к сожалению).
  • Это первая компания, про которую я заметил, что начал говорить «мы». Потому что это всегда конкретные люди и я вижу, кто конкретно и что делает. Во всех предыдущих местах находился повод говорить «они» или «компания N».
  • Впечатления после первых трех месяцев я описывал тут, еще можно почитать по тегу или еще вот тут.
  • За все время по собственной желанию от нас ушел только один человек.

Я может быть кого-то сильно напугаю такой подборкой, но я вот такой, все равно я не смог бы лукавить (может быть, не все Нские программисты увидят этот пост). Многое здесь КО и «разве бывает иначе?», но это всё у меня болело, когда я искал работу. Большинство пунктов вытекает из факта, что будучи маленькими и инновационными, мы многое не можем себе позволить — неэффективных людей, не-разделения ответственности, бюрократизма, слабосвязанной команды, несоблюдения ТК РФ, маленьких зарплат, и т.д.

Если в двух словах: это не идеальная работа из мокрого сна, где тебя обмазывают медом и носят на руках, а ты лениво поглаживаешь трекпад (да, макбуки пока не раздаем), требуется больше инициативы и самоорганизации, чтобы вообще включиться; но по з/п, людям и задачам идеальная.

К чему это я? Раньше вся разработка проходила строго в Ульяновске, сейчас же мы хотим открыть филиал в Новосибирске и ищем двух разработчиков. Чтобы обеспечить связность команд, передачу культуры и т.п. первые 2-3 месяца работы будут проходить в Ульяновске, плюс в будущем возможны командировки (как ульяновцев в Новосибирск, так и новосибирцев в Ульяновск).

См. также текст вакансии. Откликнуться и получить ТЗ можно там же, можно по jobs@aboutecho.com, а я доступен для комментариев обычно по джабберу/почте prokopov@gmail.com и здесь.
усы2

Clojure@Echo 01 структуры данных, полиморфизм, интероп

Следующая лекция про язык Clojure. В этот раз про структуры данных, полиморфизм (мультиметоды и протоколы) и интероп с Джавой. Лекция будет полезна всем начинающим изучать язык и интересующимся. Специально для ystrot продолжительность этой лекции всего 1 час.

Видео:


Слайды можно посмотреть отдельно на Спикердеке, а можно скачать pdf. Видео можно скачать на Vimeo.

Дополнительно хочу заметить вот что:

Обзор алгоритма работы персистентных векторов и словарей.

Trie — это несбалансированное дерево, в котором ветвление происходит по префиксам. В случае PersistentHashMap префиксами являются 5-битовые кусочки хэш-кода.

Reify отличается от proxy тем, что реализует интерфейсы с меньшим уровнем indirection (меньше динамизма, лучше производительность): http://stackoverflow.com/questions/5821892/why-should-i-use-reify-instead-of-proxy-in-clojure

Предыдущая лекция выложена тут.
усы2

Clojure@Echo 00 обзор, concurrency

В прошлый вторник я рассказывал у нас в компании про JavaClojure. Это первая, вводная лекция — я Кложу в компанию притащил, мне и отдуваться теперь, популяризировать. Звук есть весь, видео вот не всё (фотоаппарат потому что, 29 минут максимум пишет), но кое-где есть. Слайды все есть.

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

Видео:


Слайды, если разберетесь, можно посмотреть отдельно на Спикердеке, а можно скачать pdf.


На вопрос про разницу Скалы и Кложи отвечали тут.