If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Wednesday, February 3, 2016

Go, Ruby, C++, etc

Совсем разучился писать что-то кроме спецификаций :)

Go
Попробовал Golang в продакшене (в прошлом году). Поначалу было непривычно пока не грокнул golang way (ну или я так думаю что грокнул). Итого несколько sidekiq воркеров запускающихся по расписанию которые генерили репорты для HP ArcSight и неслабо нагружали сервер были заменены на streaming report generaion service написанный на Golang который работает 24/7/365 и потребляет ресурсов в десятки раз меньше. Помимо этого умеет обрабатывать ситуации вроде дисконнекта RabbitMQ или postgres.
Выводы:
  • community, отсутствие необходимости backwards compatibility = huge benefit
  • если за языком стоит корпорация с мешком денег то это положительно сказывается на качестве/производительности рантайма/vm/etc (КО)
  • go get, go build - просто и быстро
  • io.Writer - прекрасен (клиент "внезапно" вспомнил что хотел чтобы репорты создавались в виде gzip архивов - для этого понадобилось добавить 5 строк и 1 поменять).
  • очень большое колличество библиотек (пакетов) написанных "с нуля" в которых зачастую используется uniform interface (как в контейнерах STL например) и которые можно начать использовать буквально за 5 минут.
  • дженериков реально не хватает
  • я бы предпочел C++ будь в нем CSP concurrency
  • преимущество языка в том что он простой и easily fits in your brain, т.е. очень быстро можно в него вьехать и достаточно продуктивно писать
Ruby
После того как Google купила Postrank и Ilya Grigorik   перестал писать про ruby колличество сопоставимого по качеству конента уменшилось значительно (мое впечатление). Исключение составляют блоги rubinius и jruby. Ruby is a memory hog - вся надежда на JRuby+Truffle и OMR (или опять же - на IBM и Oracle, ну кто бы мог подумать). Есть еще Maglev но судя по всему smalltalk + seaside используеся чаще чем maglev+ rails :) - спираль развития еще не дошла до того момента когда новое поколение программистов заново откроют для себя smalltalk (чего только smalltalk images стоят).
Отдельно упомяну sidekiq и его убогий dashboard (даже не смотря на pro версию), и странные конфликты с sidetiq + "Dead Actor" или "Actor crashed" сообщения от celluloid в логах отдебажить которые просто не хватает времени/рук.  Строить worker queue поверх редиса и наворачивать логику job management наверное изначально было плохой идеей. Надо было beanstalk брать тогда бы сейчас писал о нем, но кто ж меня слушал :)

C++
С каждой своей новой инкарнацией (C++11, C++14) становится все юзабельнее и юзабельнее, C++17 - сделает python не нужным :). Думаю нас ждет C++ ренесанс после того как люди поймут что можно выкинуть свои фермы серверов и заменить их на gpu accelerated computation units.
Blazegraph с их mapgraph и gpu accelerated rdf triplestore (wikidata  is powered by blazegraph btw) и off-jvm heap - одна из первых ласточек за которыми нужно смотреть внимательно - они делают правильные вещи на мой взгляд. Hypertable тоже наглядно показывает преимущества языков которые не генерят столько мусора что для его сборки нужен отдельный GC )). Хотя надо признать что в новом golang GC заимпрувили очень хорошо и вроде как Oracle тоже есть что предложить в новой java.

Рабочее
Никогда не разделял взгляд будто уход из инжиниринга в менеджмент это логическое развитие ИТ карьеры и не понимал людей которые так думали. Либо я асоциальный тип и, несмотря на то что легко схожусь с людьми, предпочитаю работать с машинами либо рациональный т.к. проблем при работе с машинами меньше кмк :). Но увы - "не так сталося як гадалося" - "надо же это кому-то делать" и вот нате - ты теперь тим лид. Вдобавок вместо одного вменяемого инженера на стороне клиента добавился к одному существующему невменяемому менеджеру еще один, тоже невменяемый и начал фигачить дубликаты карточек в таск трекер. Видимо это какой-то вирус, т.к. QA кастомера тоже начал заводить баги - дубликаты существующих. Я стал ненавидеть be nice behaviour  - которое мешает людям доносить друг другу реальное положение вещей ("нельзя использовть слово problem - используйте issue, т.к. problem - это КЗ головного мозга у кастомера и вообще - ааа"). Впервые столкнулся с тем что человек не в состоянии понять то, что ты ему говоришь прямым текстом (сразу вспомнился Задорнов) - в упор. Разительно отличается CTO родом из UK (он же product owner) но он не хочет участвовать в sprint planning. Проблема в том что кроме него со стороны заказчика никто вообще не отстреливает на должном уровне ни problem domain ни предлагаемые решения - только даты дедлайнов, коммитменты и метрики тасков в трекере. Вот тогда я понял о чем говорил тех лид кастомера на последнем митинге.

Сижу читаю Death March, Эдварда Йордона

Wednesday, November 5, 2014

cmdlnzen

tl;dr: zsh + oh-my-zsh + tmux + tilda

Долго искал консольный zen и похоже таки нашел около года назад, вспомнил что есть блго, где это можно написать :).

Обычно в ходе работы мне было необходимо держать открытыми несколько консольных окон с разным безобразием вроде логов веб сервера и минимум одним запущенным шеллом для запуска разных задач. Ну и соответственно возникала необходимость постоянно переключаться между окнами, а Alt-Tab переключатель в XFCE "умнее" меня и в итоге вместо нужной мне консоли открывал то окно Firefox, то gvim, то консоль но "не ту" - приходилось смотреть на названия окон, гонять переключатель по второму кругу и т.п. Попытался как-то это все консольное имущество спихнуть на соседний рабочий стол - частично проблема решилась, но, опять таки, начальная "мышиная" возня с запуском, тайлингом в "ручном" режиме - все равно не то. Хотелось чтоб как в vim - табы и сплиты.

Попробовал terminator - почти, но "не оно". Вспомнил что во времена когда надо было патчить KDE2 под FreeBSD сидел на KDE пользовался Yakuake (Quake-style терминал и там были табы емнип) и решил поискать что-то на GTK чтоб не тащить лишние зависимости. Нашел Guake и Tilda - установил последнюю. Ок, если не пользоваться табами, да и сплитов нет, а то что консоль всегда запущена и slides down по хоткею - очень ОК, прощай Alt-Tab. Оставалось как-то научить ее "уметь" все остальное. На ум сразу пришло 2 варианта - screen и tmux, а поскольку в блогах, которые я читал, в то время усердно нахваливали tmux то решил и я не отрываться от мейнстрима, заново открывшего для себя ООП. Заработало почти сразу. И табы и сплит.

Решил не останавливаться на достигнутом и заодно перейти на zsh ( в основном из-за того что он благодаря плагинам git- и rvm-aware), хорошо, что есть oh-my-zsh для быстрого quickstart. Вот он - ZEN.


Wednesday, January 8, 2014

2013 year in review & plans for 2014


Очередная попытка подвести итоги ушедшего года и попытаться поставить цели на следующий год.

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

О семье
Сыну исполнился год, дочери 3, круто быть практически 24/7 рядом и видеть как они растут. Клиенты с пониманием относятся, когда они им в скайп-чат отправляют крякозяблики :).

О гаджетах года
В семье, наконец-то, поселилось 2 андроида у жены, после того как сын заслюнявил ее телефон так, что он сломался окончательно и бесповоротно. Учитывая предыдущий опыт, купили  Motorolla Defy Plus защищенный по IP67 и какую-то ZTE. Кастомизацией заниматься было некогда - пользуется дефолтными приложениями. Для меня же гаджетами года стали болгарка, перфоратор и бензопила - отличные штуки для снятия стресса. Ими, к стати, еще и что-то полезное можно делать, например напилить дров для шашлыков ну или пробить еще одну дверь в стене перфоратором, если жена решила, что старая размещена "немного не по фэн-шую".

О покупке года
Обзавелись автомобилем, т.к. организовывать какую-то культурную программу для семьи, используя такси в качестве средства передвижения было неудобно. Им стал Great Wall Hover 2006 года. Я, конечно, имел сильные предубеждения против авто китайского производства, но, почитав отзывы владельцев на drive2.ru, решил устроить им (предубеждениям) стресс тест. В общем, после прохождения ТО и нескольких поездок по раздолбанным дорогам и гололёду мое мнение о возможностях машины сильно выросло, даже начал задумываться о внедорожном тюнинге :)

О не покупке года
Жена встретила в штыки идею обзавестись огнестрельным оружием. Я, правда, и хотел-то ни много ни мало, а СВД, СКС, АКМ, Мосинку и парочку Ремов или Моссбергов. Но на моё робкое "ну давай хотя-бы помпу возьмем для самообороны дома" пообщала отправить жить во флигель, если я не выкину эту идею из головы. Пришлось временно согласиться, жена же все таки как никак :)

О фрустрейшене года
R.I.P. Google Reader :( . Long live Digg Reader!!! Со стороны дига был совершенно логичный шаг, удивляюсь почему они не сделали этого раньше - боялись конкуренции?

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

О планах на следующий год
Хочу попробовать Golang - мне кажется он должен хорошо подойти для написания background job воркеров, которые будут выдергивать jobs из Redis'а. Еще хочу потрогать Riak и хотя бы начать реализовывать одну из идей для своих проектов. После убийства Гуглом Ридера, планирую постепенно отказываться от использования его сервисов - от G+ отказался сразу же, в ближайших планах переезд на другую блог-платформу и домен и перенос RSS/Atom фида. Надеюсь будет получаться писать в блог чаще. С фрилансом надеюсь получится работать меньше, чтобы оставалось больше свободного времени. В общем где-то так. Посмотрим через год, что получится.

Saturday, April 27, 2013

зарплаты программистов, 23-летние синьйоры и т.п.

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

#1 - не могут у IT-шников в Украине быть такие зарплаты

меня очень умиляют люди которые постулируют такие тезисы и не понимают что:
  • есть "невидимая рука" рынка, и зарплаты будут расти пока рынок не прийдет в равновесное положение
  • никакие "сотрясания воздуха", картельные сговоры, лоббирование не помогут - человек предоставляющий IT услуги интегрирован в большинстве своем в глобальную IT индустрию которой в общем-то плевать на национальные границы отдельных государств, точно так же как то что IT-шник находится на територии отдельно взятого государства - не имеет никакого значения будет это Украина или там, скажем, Таиланд. Будут "давить", - персональные тракторы нынче дешевые, будут "договариваться" работодатели между собой - удаленная работа на компанию с другой юрисдикцией и т.д.
часто приводят примеры других профессий. приведу и я несколько примеров так сказать из личного опыта - то с чем столкнулся в процессе ремонта дома (не может быть у программиста такая ЗП говорите? ну-ну...):
  • хороший сантехник - спаять один узел системы отопления из полипропиленовых труб ~ 10$, временные затраты - 10-15 минут, почасовый рейт 40-60$ (я плюнул, пошел купил паяльник за 30$ и за пару вечеров сделал сам теплый пол и отопление в коридоре ) + имеет значение объем (небольшой объем часто отклоняют)
  • электрик - 15$ "точка" - минут 30 по времени (установка розетки) - без учета разводки проводов по дому и пробивки штроб - почасовый рейт 30$
  • кирпичная кладка - 1,5-2 грн кирпич, хороший каменщик за 8 часовой день может выложить порядка 1000 шт - почасовый рейт ~ 30$

ради интереса можете поинтересоваться сколько стоит  тепловой насос на 10-20 кВт с установкой (ну или на худой конец - ветроэнергетическая установка на 5 кВт) - я вот плюнул и сказал жене что если хочет эту штуку, то пусть вспоминает термогазодинамику и тепломассообмен и рассчитает ее сама :); - а все почему? - потому что высокий наукоемкий вес подобных разработок и спрос превышает предложение, вот рынок и пришел к равновесной цене (хотя вобщем-то расчитать лопасть ветряка в состоянии студент 3-го курса по заранее составленным методикам).
Вывод - не нравятся дорогие айтишники? - делайте сами дешевле (ну или радикально увеличивайте колличество айтишников на рынке - тогда он качнется в другую сторону)

#2 - 23-летние синйоры

Есть в украинской IT среде такой мем - 23-летние Senior Sofware Developers. А все почему? - находит аутсорсер клиента (или клиент находит аутсорсера), а тот ему и говорит:

- Мне нужен Senior Software Developer to blah-blah-blah
А аутсорсер ему такой:
- Это стоит xyz денех
Клиент:
- З@..бись, дайте два!
Аутсорсер:
- Ок, будет тебе 2.

... и начинает искать... Надо ли говорить что нормальные инжинеры уже давно расхватаны? где ж их взять-то синьйоров, тем более сразу 2х. И начинает Аутсорсер придумывать разные "схемы" из серии "А давай мы наймем джуниора или двух и продадим их как одного синьйора?" или "А давай мы возьмем мидла и тоже продадим его как синьйора (но платить будем как мидлу)" - дабл профит. Так и рождаются 23-летние синьйоры.

Вывод: Аутсорсеры, перестаньте обманывать своих клиентов и заниматься наебизнесом - вы же динозавры и вымрете рано или поздно так же как и они, если не эволюционируете в добрых и пушистых зверьков

Thursday, April 4, 2013

Opensource It!


Это какой-то opensource rage - Raven Software выложила на олдскульно-хардкорном ламповом SourceForge (когда-то были времена, когда за опенсорсом ходили не на социальный гитхаб а на sf.net) исходники Jedi Outcast и Jedi Academy. Всем приятного пятничного чтива )).