Прикольные очки с подсветкой

22/04/2016

Идеально удобные очки при работе болгаркой в особо темных местах!

3IuS_hhIi3b-500x500

Подсветка встроенная прямо на дужки очков.

Про мой тайм-менеджмент

29/12/2015

У меня была большая проблема с управлением временем, обещаниями и сроками. Как водится, в школе управление временем не преподавали, а родители не привили нужные навыки.

Так что первый инструмент для решения проблемы, который я начал использовать для управления задачами был Pocket PC и подход GTD (Getting Things Done) с очередями задач, контекстами и всем таким по инструкции Васи Кислого (http://www.time-mngmnt.narod.ru). Продуктивность и эффективность страшно выросла, мозг разгрузился и общее состояние стало значительно лучше. Но возникло ощущение бега белки в колесе, выполняешь 5 задач, на их место приходят новые 5, и снова, и снова.

Затем я перепробовал большую кучу различного софта в поисках идеального инструмента, в основном для мобильных платформ Things, OmniFocus, Firetask, TaskPaper, TheHitList http://nexusnotes.ru/…/…/omnifocus-vs-thigs-vs-firetask-gtd/. Автор софта MyLifeOrganized даже подарил лицензию в 2008 за мою статью http://nexus.org.ua/weblog/message/846/.

Внезапно я прочел Getting Results Agile Way http://nexusnotes.ru/…/01/taskpaper-getting-results-agile-…/. Автор методики перенес лучшие Agile практики из разработки софта на повседневную жизнь и в итоге создал одну из самых эффективных методик!

Я до сих пор считаю Evernote + Getting Results Agile Way наиболее клевой системой для упорядочивания жизненного хаоса с временем, целями и обещаниями.

А что же сейчас? Я словил себя на мысли, что на сегодняшний практически не использую никакого инструментария, почти всегда прихожу вовремя, держу обещания (и стараюсь ничего не обещать). Как так выходит, что мне инструментарий/софт больше мне не нужен?

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

Чего и вам желаю, дорогие мои друзья.

Про Укрзализныцю и билеты.

28/12/2015

 

Довелось мне две недели назад покупать ЖД билеты через Приват24. Почему-то на один и тот же поезд, но на разные дни выдали в одном случае код, который нужно поменять на билеты, в другом случае сам билет, который можно распечатать.
Кодов у меня оказалось два, а билетов должно было быть четыре: 3+1 на разные поезда. Так уж получилось, что я думал о чем-то своем и получил в кассе по своим кодам только 3 билета вместо 4.

Вчера с оказией решил свой один билет дополучить. И тут началось самое интересное. По коду распечатать билет можно ТОЛЬКО ОДИН раз. Да. По счастливой случайности мой билет оказался забытым в той кассе, в которой я пробовал по коду распечатать. Но, какой выход будет у меня если я по какой-то причине этот билет утерял? Никакого.

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

В связи с чем у меня вопрос к Укрзализныце. Если у вас и так все билеты именные и сверяются с паспортом, тогда зачем вы вообще билеты бумажные продаете и проверяете? Сделайте как в авиакомпаниях, билет полностью электронный, предъявил паспорт, проводник посмотрел по спискам, сказал «Ок, проходите» и все! Исчезнут очереди на обмен электронных билетов, стресс у пассажиров и все такое. Если выйти за рамки понятия «билет», то это просто один из способов валидировать потребителя и его купленное в вагоне место. Один из способов. Паспорт УЖЕ валидирует вас однозначно. Паспорта при покупке билетов ввели для того, что бы бороться с перекупщиками билетов. Сейчас вы, читатели ФБ, когда последний раз покупали какой-либо бумажный билет у кого-то с рук? Нонсенс. Но требования паспортов остались. Для чего? А ни для чего, просто потому что так уже сложилось исторически.

Действительность меняется, способы передачи информации и технологии меняются. Понять, как и что изменить в процессах к лучшему очень просто, поезжайте в Голландию и посмотрите, как там работает продажа билетов на поезда. Там вообще проблема живого человека найти, связанного с продажей билетов. Все что можно автоматизированно, ручного труда, а, значит, и ошибок связанных с этим минимум.

Почему изменений в Укрзализныце не будет в ближайшее время? Да потому что это монополия, а монополия это зло. При монополии вам не нужно бороться за качество услуг, за каждого покупателя. Все равно потребитель будет «жрать печенье», просто потому что другого нет.

Пост, в котором я признаюсь в любви Devcards, Figwheel и ClojureScript

27/12/2015

Этот пост рекомендуется пропустить всем непрограммистам.
Свой путь веб-разработчика я начал в 1999г. Это был PHP 3.0.3 + MySQL. С тех пор я попробовал довольно много инструментария для разработки, Parser 2 от студии Лебедева, а на Parser 3 до сих пор работает мой старый сайт http://nexus.org.ua/. С 2006г началась интрига с Ruby on Rails, который набрал популярности благодаря свежему на то время подходу convention over configuration. И это было круто, куча чужих уже готовых к употреблению кусков кода в виде ruby gems, которые легко подключались. Изумительный менеджер зависимостей bundler. Из известных продуктов на RoR это Redmine, который используется много кем для управления проектами, Gitlab – свободный аналог github. На RoR написалось мной довольно много проектов, более 20 по-моему. Самый крупный — наша «админка», система управления тикетами, которая дописывается и в настоящее время. Но вот наступило время активного оживления фронтенда через джаваскрипт. Я успел поэкспериментировать со многими, в основном, Javascript based штуками. Здесь я описал свой опыт работы с Angular JS, Knockout JS. Завел интрижку с Meteor, ошалев от возможностей программирования сервер-сайд и клиент-сайд на одном языке, а заодно набрался опыта работы с MongoDB и в целом познакомился c NoSQL движением. И все это было интересно и хорошо, пока я в этом году для расширения кругозора не начал изучать Clojure и ClojureScript. Как сказал один мой приятель «любишь ты разные brainfuckи».
Ощущения от функциональщины и Lispа мне сложно сравнить с каким-либо опытом пережитым ранее. Эмоции, пожалуй, как у Колумба, который открывает Америку. Язык, который создавался автором с мыслями о проблемах проектирования и архитектуры современных приложений, и разнообразные сложности, с которыми сталкивается разработчик, такими как многопоточность, CSI и всем таким. Рекомендую на досуге послушать автора Rich Hickey. Концепция базы данных Datomic вообще разорвала мозг новыми возможностями. Очень рекомендую для изучения Datomic и языка запросов Datalog этот ресурс.

Для понимания программистами, какие проблемы скорости и удобства разработки теперь можно решать для фронтенда на ClojureScript, нужно посмотреть вот это видео. В нем про live reload и о концепции data cards в веб-разработке. Да и вообще чувак веселый 🙂


Теги, которые повлияли на меня как на разработчика в 2015 особенно сильно: Clojure/ClojureScript, Datomic/Datalog/Datascript, figwheel, datacards, Rum/ReactJS, Om/Next, Meteor, MongoDB, Docker.
О том, каким будет web в ближайшем будущем стоит почитать у моего однофамильца Никиты Прокопова. Очень правильно пишет.

Уверен, 2016 год будет не менее захватывающим.

OS X El Capitan GM Candidate

10/09/2015

 

Сегодня пришло предложение установить beta версию OS X El Capitan. Интересным оказался способ, с помощью которого производится установка.

На сайте Apple Beta Program после регистрации выдается специальный Redeem Code, который при вводе в приложение (автоматически) App Store запускает закачку OS X El Capitan.

Скриншот 2015-09-10 15.16.09

Предлагаемый к загрузке образ это GM Candindate, а именно Gold Master, тот образ, который скорее всего будет распространяться в качестве готового к употреблению для конечного пользователя.

Скриншот 2015-09-10 15.08.16

Платить или нет, когда вирус зашифровал данные?

29/04/2015

Что я узнал из работы с Rails assets pipeline и Javascript. KnockoutJS vs AngularJS.

30/10/2014

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

Rails замечательно работает со статикой, лучше всех, пожалуй. Но то, что предлагается использовать для «оживления» страниц подходит только для очень небольшого круга задач. 

vs

Чаще всего Ajax Polling делается через запрос jQuery и подстановку темплейта с рендерингом из JS шаблона. Мне очень нравится писать шаблоны на HAML, и использовать Coffeescript.

Но, к сожалению, браузер не умеет рендерить HAML шаблоны, а изучать/выбирать новый template-язык не хотелось. 

Именно поэтому в поле моего зрения попали движки, которые умеют использовать существующую разметку: AngularJS и KnockoutJS. Вот их я и стал изучать.

Создал две экспериментальные ветки feature в git и стал пробовать Knockout.

Knockout оказался очень хорошим фреймворком для two-way databinding. Классно лег на coffeescript, и HAML. Вот пример вьюконтроллера:

class UnassignedTicketsViewModel extends TicketWithSLAViewModel
  constructor: ->
    super
    @api = ‘/api/tickets/unassigned’

вот HAML партиал. Кстати, это в 4м HAML появилась возможность писать аттрибуты в круглых скобках.

    %td.avatar
      %img.cycle.userpic(data-bind = «attr:{src:avatar.nano.url}, visible: state !== ‘classified'»)
    %td.id_column
      %a(data-bind = «attr:{ href: url }, css: {‘fg-red’: is_major}»)
        %i.icon-fire(data-bind = ‘visible: is_major’)
        %i(data-bind = ‘css: icon()’)
        %span(data-bind = ‘text: id’)
        %i.icon-bus(data-bind = ‘visible: is_outdoor’)
    %td(data-bind = ‘text: author’)

Вот какие выводы у меня появились после использования Knockout с рельсами

Параллельно я вел исследования с AngularJS. Прошел офигительный интерактивный туториал https://www.codeschool.com/courses/shaping-up-with-angular-js

И написал polling тикетов через $resource. И пришел к таким выводам:

И в том и в другом случае было необходимо разработать правильную отдачу JSON объектов при поллинге. Мне нужно было включать ассоциативные поля в модели, поэтому довольно скоро от Model.as_json я перешел к использованию https://github.com/rails-api/active_model_serializers, но поскольку разработчики не смогли придумать кеширование, да и отдачу url_for, пришлось перейти на jbuilder, на котором и остановился. json!.cache отлично сокращает запросы к базе и время рендера.

Для отдачи JSON решил сделать API через отдельные контроллеры и наймспейс ‘/api/ как у Раяна Бейтса

И все было хорошо, пока я не стал думать, как же для разных страниц мне использовать разные биндинги для KnockoutJS и при этом чувствовать себя хорошо. Самый простой и «лобовой» способ это убрать require_tree . из application.js и добавить include_javascript_tag params[:controller] в лейаут. Но здесь то и зарыт главный косяк. Assets pipeline, который склеивает все css и js в один файл будет кидать ексепшены, поскольку не скомпилирует .js для каждого контроллера. И выхода здесь два:

1. включить компиляцию assets для продакшена.
2. использовать gem paloma

Более православным мне показался второй путь, поскольку использует assets pipeline и делает всю магию на клиенте. Также позволяет передавать из контрроллера в JS различные параметры. Это же умеет делать gem gon, но если можно гем не использовать, то лучше его не использовать.

Также, мне очень понравился подход с подключением jquery библиотек и используемого мной metro-ui-css фреймворка через интеграцию с bower. В моем случае сделал подключение gem ‘rails-bower’, в Bowerfile записал asset ‘metro-ui-css’, rake bower:install и вуаля, в  /vendor/assets/bower_components загруженные с зависимостями jquery и другие модули. Очень удобно.

Итоги. 

Я остановился на использовании KnockoutJS для моей задачи, и доволен этим фактом, много jQuery кода заменил более компактным и объектно-ориентированным кодом для Knockout. А AngularJS, думаю, стоит использовать вообще отдельным приложением вместе с Node.js, а Rails в качестве исключительно JSON бекенда, что тоже для Rails было бы унизительным.

Удовольствие от математики?

23/06/2014

Не могу не поделиться книгой «Удовольствие от X», которую начал читать вчера и довольно тяжело было от нее  оторваться!

х-big

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

Для возбуждения интереса расскажу о нескольких находках из книги. Вот задача: кран с горячей водой наполняет ванну за час, кран с холодной водой наполняет ванну за полчаса. За какое время наполнят ванну оба крана?

Подумайте.

Чаще всего люди почему-то дают неправильный ответ «за 45 минут». На самом деле ответ другой.

Путей решения у задачи может быть несколько. Первый, через дроби, узнаем какое количество ванны заполняется за минуту, 1/30 и 1/60 ванны соответственно, 1/30*x + 1/60*x=1 (целая ванна), умножаем обе части равенства на 60, 2x+x = 60, 3x = 60, x=20 минут.

Но существует более наглядное и красивое решение. Вот оно.

Сколько раздельных ванн заполнят краны, если они будут лить целый час? Горячий кран заполнит одну ванну, а холодный за это время две. Вместе они заполнят за час три ванны. Соответственно чтобы узнать, за сколько будет наполнена одна ванна, делим час на 3. Получаем 20 минут.

Гораздо красивее и нагляднее? Я думаю да 🙂

Вторая история связана с устным нахождением квадрата чисел до 50. Оказывается, довольно просто посчитать квадрат числа, недалекого от 50 используя формулу 2500 — 100*x + x^2, где x — разница между 50 и искомым числом. Найдем устно квадрат 48. 2500 — 100*2 + 4, это 2304. Или 47, 50 минус 47 это 3. Считаем в уме 2500-300 = 2200, добавляем 3 в квадрате, получаем 2209. Круто?

Буду рад, если после прочтения этой книги у вас появится приятное чувство любопытства.

Учет персональных финансов

14/05/2014

 

 

Как понять, куда уходят деньги и начать двигаться к богатству?

С первым вопросом попробую помочь наброском в стиле «скетчноутинг». А по второму вопросу напишу подробный пост.

 

2014-05-14 - учет

 

 

Tips and tricks for Mac OS. Part 3.

08/05/2014

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

Screen Shot 2014-05-08 at 13.50.56

read more …