вторник, ноября 08, 2011

Adsence отнял у меня трудовую копейку

На этом блоге последние 3 года его существования стоял Google Adsence - фиг его знает зачем, скорее просто в качестве эксперимента. За 3 года с него накапало что-то в районе $13, а учитывая то, что Google высылает деньги только после накопления $100 мне светило получить свой первый чек на 100 баксов где-то через 20 лет. Но даже этих сугубо теоретических денег подлый Google меня лишил. Сегодня мне пришло письмо, что мой аккаунт на Adsence заблокирован, потому что
Просмотрев данные, мы обнаружили, что Ваш аккаунт представляет угрозу создания недопустимой активности. Поскольку мы отвечаем за защиту своих рекламодателей AdWords от завышения расходов из-за недопустимой активности, мы сочли необходимым закрыть Ваш аккаунт AdSense. Ваш непогашенный остаток и доля доходов Google будут полностью возвращены пострадавшим рекламодателям.
Я лично никаких накруток не делал, так что со стороны Google это просто отъём конфетки у ребенка. Причем, судя по всему, они регулярно так поступают - блокируют аккаунты и забирают деньги себе без всяких видимых причин и никогда не отвечают на апелляции.

Вот вам и корпорация добра.

Ну и ладно, все равно монетизация блогов это зло, так что спасибо Google что они с ней борются :)

понедельник, октября 24, 2011

Онлайн курсы стэнфордского университета

Если вы читаете хабр, то возможно в курсе, что Stanford University экспериментирует с бесплатным онлайн обучением. Есть 3 курса, которые можно пройти онлайн:

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

В Machine learning я уже почти нагнал тех, кто вовремя на это подписался, английский у профессора китайца вполне понятный, так что никаких проблем с этой стороны нет. Я, правда, что-то похожее во времена моего студенчества уже проходил, но это было уже давно, к тому же здесь все на практике закрепляется, с привязкой к конкретным проблемам, а не просто сферические кони в вакууме.

P.S. Ну и до кучи есть еще просто лекции курсов прошлых лет по computer science и связанным с этим вещам: http://habrahabr.ru/blogs/elearning/126527/

среда, августа 31, 2011

Путь программиста :)

Нашел несколько статей для медитации:


Из той же оперы : Python koans - Python Koans is an interactive tutorial for learning Python by making tests pass. Скачиваются по ссылке из статьи, при первом запуске выводится текст:

Thinking AboutAsserts
  test_assert_truth has damaged your karma.
You have not yet reached enlightenment ...
  AssertionError: False is not True
Please meditate on the following code:
  File "C:\gregmalcolm-python_koans\python 2\koans\about_asserts.py", line 12, in test_assert_truth
    self.assertTrue(False) # This should be true


You are now 0/291 koans and 0/36 lessons away from reaching enlightenment
Beautiful is better than ugly.

По мере решения задачек счетчик просветления растет. В конце концов попадаешь в нирвану для программистов.

вторник, августа 23, 2011

Книжка про архитектуру open source приложений

Книжка про архитектуру 25 популярных open source приложений (на английском):
http://www.aosabook.org/en/index.html

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

Абзац из введения: "архитектура зданий и архитектура ПО имеют много общего, но есть одно важнейшее отличие. Архитекторы во время своей учебы и карьеры изучают тысячи зданий, большинство разработчиков имеют возможность хорошо изучить только несколько больших программ. Чаще всего это те программы, которые пишут они сами. У них нет возможности изучать величайшие программы в истории или читать критику архитектуры этих программ, написанную опытными практиками. Как результат, они повторяют ошибки друг друга, а не строят на основе успешного опыта других".

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

Содержание:
Introduction
1. Asterisk - программа для создания телефонной станции.
2. Audacity - запись/редактирование звука.
3. The Bourne-Again Shell - bash Unix shell
4. Berkeley DB - высокопроизводительная нереляционная БД
5. CMake - кроссплатформенная система автоматизации сборки программного обеспечения из исходного кода.
6. Eclipse - популярный IDE (конкурент MS Visual Studio)
7. Graphite - система для построения графиков
8. The Hadoop Distributed File System - распределенная, масштабируемая и компактная файловая система, написанная на Java
9. Continuous Integration - система для построения и тестирования программ.
10. Jitsi - приложение, позволяющее делать видео/аудио звонки, расшаривать свой десктоп, обмениваться файлами и сообщениями
11. LLVM - цитата с википедии: "универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур либо для его интерпретации и JIT-компиляции (для некоторых платформ). LLVM позволяет компилировать программы написанные на языках Си, C++, ObjC, Fortran, Ada, Haskell, Java, Python, Ruby, JavaScript, GLSL или любом другом, для которого реализован front-end."
12. Mercurial - популярная система контроля версий
13. The NoSQL Ecosystem - ряд подходов к интерфейсам БД без использования SQL.
14. Python Packaging - система питоновских пакетов.
15. Riak and Erlang/OTP - распределенная отказоустойчивая БД для больших масштабируемых систем на Erlang/OTP
16. Selenium WebDriver - фреймворк для тестирования веб приложений
17. Sendmail - первый и все еще существующий Mail Transfer Agent
18. SnowFlock - монитор виртуальных машин для облачных вычислений
19. SocialCalc - электронные таблицы в интернете
20. Telepathy - фреймворк для создания программного обеспечения мгновенного обмена сообщениями, IP-телефонии или видеоконференций.
21. Thousand Parsec - фреймворк для создания космических стратегий.
22. Violet - простой UML редактор
23. VisTrails - система для визуализации научных данных
24. VTK - Visualization Toolkit - система для обработки и визуализации данных
25. Battle For Wesnoth - пошаговая стратегическая игра

воскресенье, июля 31, 2011

Моя система для тайм-менеджмента в стиле GTD

В прошлую пятницу я читал на работе маленький тренинг - введение в Getting Things Done - популярную систему тайм-менеджмента.
Слайды я, кстати, в google docs рисовал - это удобнее, чем в PowerPoint, править можно из дома и с работы, не заботясь о синхронизации.
Заметки для себя которые я писал при подготовке мне в основном не понадобились - как то все другими словами сказать получилось. Тем не менее выкидывать их жалко, пусть тут лежат.

Необходимость системы тайм менеджмента.
Он не нужен если у вас есть только одно дело, которое вам нужно делать. Если ваша работа заключается в том чтобы копать от забора до обеда. Как только дел становится много, людям становится сложно держать их все в уме. Человек, как известно, способен запомнить максимум 7 вещей, и то в лучшем случае. Если вещей, которые нужно помнить, 100, то попытки все держать в голове приведут только к стрессу. Суть всех систем тайм-менеджмента в том, чтобы выкинуть информацию из головы на внешний носитель. Пустая голова - залог душевного здоровья :)

Разные системы тайм менеджмента.
Систем тайм менеджмента существует много, от простейших стикеров на холодильнике или мониторе до запутанных супер сложных программ, коих существует over 9000. Я спрашивал у нашего американского менеджера, когда он приезжал, какой системой тайм-менеджмента он пользуется. Он мне показал программу в ipad, с системой в стиле канбан - доска с 4-мя колонками to-do, in progress, verify, done. Задачки попадают сначала в первую колонку и последовательно перетаскиваются на следующую, пока не попадают в последнюю. На работе мы используем тот же метод для планирования задач для команды на итерацию, только вместо ipad'а используется реальная доска. Для разных типов задач можно использовать стикеры разных цветов, приоритеты можно задавать просто - самое важное в вверху колонки. В принципе весьма симпатичная и визуально наглядная система, хотя и не без своих недостатков.

Но я хочу рассказать сегодня про другую весьма популярную систему - GTD. На самом деле каждый человек уникален и то, что подходит одному, не подойдет другому, так что без собственных экспериментов при внедрении любой системы не обойтись. Универсальных систем, без подготовки и допилки напильником пригодных для использования любым человеком сразу "из коробки" нет. У каждого человека своя ситуация, свои особенности психики, свой образ жизни. Каждую систему нужно подстраивать и перекраивать под себя. Любая система, описанная в книжке - это всего лишь заготовка, платформа, на основе которой человек должен выстроить то, что подходит именно ему.

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

Работающая система.
В принципе большой разницы какой системой пользоваться нет, главное пользоваться. Типичные проблемы у людей, когда они пытаются внедрить какую-либо систему - задачи забиваются в аутлоок\google task\word\ etc, 2-3 дня система используется, потом в нее перестают заглядывать\ заглядывают раз в месяц, ужасаются, что все просрочено и перестают этим пользоваться.

Решение - помимо того, чтобы регулярно вносить задачи каждый день, раз в неделю выделять час-два для полного просмотра всех задач. В хорошо отлаженной системе тайм менеджмента может храниться 30-100 проектов, это требует некоторых инвестиций времени при внедрении, но в дальнейшем типичное использование заключается в кратком просмотре текущих задач\внесении новых и занимает порядка 5-10 минут в день. Но раз в неделю необходимо более глубоко посмотреть на ваши списки задач\проекты, возможно более глубоко все обдумать, в книжке-первоисточнике по GTD Дэвид Аллен использовал метафору "обзор с 10000 фунтов", с высоты птичьего полета.

Устройство системы GTD.

  • Корзинка (Inbox). У вас должно быть одно место, в которое сыпятся все ваши не разобранные вещи, задачи, статьи, все, что можно отнести к термину "прочее". Для обычных не ИТ-шных людей это может быть лоток для бумаги, в который кидается все - счета, документы, бумажки, заметки, рекламные проспекты, и т.д. Для нас это должно быть нечто компьютерное, какая либо программа. Я лично в настоящее время использую Evernote - в него можно кидать нужные письма из outlook, интересные статьи из интернета, фотографии с телефона, аудио-записи с него же, просто все, что в голову приходит.
    Фишка в том, чтобы вещи в этом inbox'е не оставались надолго\навсегда. Нужно стремиться к тому, чтобы как можно быстрее эту корзинку опустошить. Причем это не подразумевает что нужно все ваши дела, попавшие в inbox сделать сразу же во время ее разбора.
  • Алгоритм здесь простой - берете документ из корзинки, оцениваете можно ли с этим что-то сделать. Вполне возможно, что делать с этим ничего не надо. Это может оказаться либо:
    - мусором - тогда его сразу стираем\выкидываем,
    - либо справочной информацией - тогда ее нужно поместить в вашу систему хранения справочной информации - я опять же использую в этом качестве evernote, можно хранить информацию в MS OneNote, просто в файлах в определенной папке, в каком-то облачном сервисе - это уже как фантазия сработает;
    - либо это может оказаться задача - в этом случае вы решаете можно ли ее выполнить меньше чем за 2 минуты. Если да - то просто делаете ее. Если нет - то решаете сами вы ее будете делать либо поручите кому-то. В зависимости от этого вносите эту задачу либо в to-do list, либо в список поручений для других людей. По этому второму списку вы будете отслеживать статус.
  • Списки дел (To-do lists). Их у вас может быть несколько - например задачи по работе, список того, что вы хотите прочитать, список внерабочих активностей и т.д. Так же хорошо иметь список под названием "когда-нибудь потом", в который можно вносить все ваши прожекты, идеи и т.п. - то чем в ближайшее время вы явно заниматься не будете, но в отдаленной перспективе при наличии свободного времени - почему бы и нет. Например в него может попасть спасение китов, спасение вселенной, покупка мотоцикла и т.п.
  • Также неплохо иметь список ваших проектов. Проект в данной терминологии - это все, для завершения чего нужно 2 или больше действия. Причем в любой момент вы должны иметь для этого проекта как минимум одно следующее действие. Не обязательно иметь полный законченный план, хотя в этом ничего плохого и нет, но как минимум вы должны придумать с чего начать - следующее простейшее действие. 

  • Календарь. В календарь заносятся только дела, привязанные к конкретному времени. Все, что не имеет такой привязки, попадает в to-do list, поскольку опыт подсказывает, что составление списка задач на конкретный день чаще всего приводит к тому, что из-за срочных внеплановых активностей большую или меньшую часть этого списка приходится переписывать на следующий день. Календарем я пользуюсь аутлуковским, поскольку туда автоматом попадают рабочие митинги. Но вообще я думаю, что google calendar - штука весьма удобная.

Как я уже писал, я использую Evernote для хранения справочной информации и для ведения списков дел. Это удобно потому что сокращает количество используемых программ. Но в последнее время я думаю, что evernote все же не слишком удобен для списков дел. Они в нем получаются не слишком наглядными. Тут уж издержки универсальности - нельзя хорошо делать все. Например, можно было бы вести списки дел в виде mind-map'ов.

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