December 23, 2011

Спад активности в сообществе разработчиков на технологиях Google

В последнее время наблюдаю значительный спад активности в сообществах разработчиков на технологиях Google. Глобально. С чем это может быть связано? Мне кажется следующее:
  • GAE
    • Объявлена новая ценовая политика которая не нравится большому количеству разработчиков.
    • Vendor Lock-in. Приходится выбирать либо Scalable но vendor lock-in, либо стандартный Django, но о масштабировании придется позаботиться. 
    • Не понятные перспективы. Roadmap существует и вроде как в нем хорошие фичи, но они там уже не первый год. То что релизится никогда небыло в roadmap, а тому, что казалось бы имеет значение (1, 2, 3), не придается особого значения. Мы сдаемся.
  • GWT
    • Анонс Dart = непонятные перспективы GAE?
  • Android
    • Нежелание производителей смартфонов обновлять версии ОС и как результат "смотри на пункт выше"
    • Как результат первого слишком большая фрагментация по версиям андроида. Новые фичи добавляются, но по статистике очень малый процент девайсов используют новые версии ОС с новыми фичами. Не очень приятно програмить поддерживая старые версии, много старых версий. 
    • iPhone?
  • Общее
    • Документация хромает во всем проектам с которыми сталкивался. Все сводится к нескольким простым туториалам из серии "Hello World" а когда приходится сделать что-то посложнее или то о чем не думала голова писателя документации приходится очень сильно и долго попотеть.
    • Google Developer Day. Я посетил все 4 GDD в Праге и скажу вам что становится все менее интересно. Конечно это связано с тем что я там ничего особо нового для себя не вижу и не слышу, но с другой стороны там постоянно показывают все из серии "Hello World".
    • Google закрывает много проектов. В частности мне очень жаль за Google Code Search, я очень часто им пользуюсь. 
    • Как еще один пример был закрыт Google Translate API. Но взбудораженное сообщество остановило Google, в результате они сделали его платным. Разработчики работали над проектами, потом приходилось бросать их, а время уже потрачено. Пример моего бывшего партнера. Позитива это не может добавлять.
От себя.

По прежнему оптимистично настроен по отношению к GWT, частично от того что не вижу альтернатив. GWT очень мощная штука.

От GAE полностью отказался. Выбирая между Scalable + vendor lock-in и стандартным Django остановился на втором. Кроме Vendor Lock-in GAE еще и дороже в десятки раз. До момента когда потребуется масштабироваться можно иметь большую базу юзеров и нормальный Cash Flow, а тогда уже можно и масштабироваться.

API от Google в последнее время не использую. Последние больше года занимаюсь исключительно одним проектом которому не требуются эти API.

А что вы думаете по этому поводу?

October 16, 2011

Автоматическое изменение номера билда в проекте Xcode

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

Я принял что номер билда соответствует количеству коммитов в системе контроля версий и написал такой совсем маленький скриптик.

cd $SOURCE_ROOT;
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;


/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NUMBER_OF_COMMITS" Snippets/Info.plist;

Открываем проект и в Build Phases добавляем Run Script как показано на скриншоте.

В появившееся окошко вставляем этот скрипт.

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

#...
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;
NUMBER_OF_COMMITS=$(($NUMBER_OF_COMMITS + 100));
#...

Теперь каждый коммит в БД будет содержать новый, постоянно увеличивающийся, номер билда.

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

July 21, 2011

Evernote будет покупать стартапы?

Как-то совсем незаметно прошла последняя инвестиция Evernote о которой они рассказали в своем блоге.

Мне кажется это очень странным явлением. Как они говорят, компания 1) растет невероятными темпами, 2) прибыльна и 3) имеет в банке деньги еще с прошлых двух раундов инвестиций. В этом случае принимать инвестиции ну просто против всяких правил и логики. Компания растет большими темпами значит и ее оценка растет а значит количество денег которые можно получить за ту же долю тоже быстро растет.

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

Есть еще идеи что происходит?

July 10, 2011

Как я "взломал" чужой аккаунт на Большомсайте

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

Там меня попросили ввести логин. Ну ввожу один из стандартных "prudnikov". Ок. Просят ввести фамилию отца. Понятно что она такая же как у меня. Ввел. Дальше предложили ввести и подтвердить новый пароль. Ввожу. Ок. Логинюсь. И что я вижу? Вижу что вошел под другим человеком у которого тоже фамилия Прудников.

Ошибки которые допустили на этом сайте:
  • Для входна нужно использовать адрес электронной почты а не "логин". Это довольно частая ошибка, хоть и ошибкой ее назвать можно с натяжкой. Это ошибка со стороны юзабилити. Свою почту я всегда помню, но вот какой я использовал логин для регистрации запоминать нереально. Кроме того, это на 1 поле меньше при регистрации.
  • Нельзя предлагать пользователю устанавливать новый пароль сразу после ответа на секретный вопрос. Правильнее высылать на указанный адрес электронной почты секретную ссылку, по которой пользователь может установить новый пароль. Еще лучше ограничить срок действия этой ссылки по времени.
P.S. Это было давно и драфт поста лежал все это время. Попробовал залогиниться сейчас — неудача. Видно настоящий пользователь этого аккаунта изменил пароль методом восстановления.
P.S.S Имя сайта решил не светить да бы обезопасить этот аккаунт. Сам я на нем естественно ничего не делал.

July 9, 2011

Идеи

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

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

Пример простой — Twitter. До его появления небыло таких проектов. Кто-то скажет что в твитере нет ничего особенного а значит никакой идеи небыло. Да. Небыло идеи, небыло и твитеров. После твитера появились его клоны. О них никто не знает. Выиграл тот кто был с идеей а не тот кто клонировал их. Первым быть важно. Без идеи первым быть невозможно.

March 24, 2011

Отображение статуса и название бранча GIT в командной строке

Если вы пользуетесь командной строкой и GIT одновременно то наверное будет полезен следующий хак. Речь идет об Mac OS X, можно на любых юниксах это сделать, я не пробовал.

Предположим вы уже установили GIT. Открываем файл ~/.profile в любимом текстовом редакторе. Добавляем примерно такую простую строчку в конце файла:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Вся магия происходит вот в этом месте $(__git_ps1 " (%s)"). Команда __git_ps1 установилась когда вы ставили GIT. PS1 можно кастомизировать, у меня, например, значение PS1 вот такое:

PS1='\[\e[4;33m\]\w\[\e[m\]\[\e[0;36m\]$(__git_ps1)\[\e[m\] \[\e[1;37m\]$\[\e[m\] '

и на деле это выглядит примерно вот так

Как установить моноширный шрифт Consolas на Mac OS X

Блрагодаря Google Docs недавно для себя открыл шрифт Consolas. Там это один из двух моноширных шрифтов, второй из которых убогий Courier New. Consolas это Microsoft-овский шрифт, но его можно установить на Mac.

Для этого нужно проделать следующее:

  1. Скачиваем Open XML File Format Converter For Mac
  2. Если после скачивания образ не примонтировался, даблкликаем по нему. 
  3. Открываем контент пакета (Правой кнопкой мыши выпадающее меню, Show Package Contents)
  4. Переходим в Contents/Packages и устанавливаем OpenXML_all_fonts.pkg
  5. Пользуемся и наслаждаемся :)
Мне очень нравится как он прорисовывается в TextMate, в Xcode немножко похуже. Ниже парочка скриншотов.

 


February 6, 2011

Идея для Google Street View

Снова раздача идей. На этот раз для Google.

У Google есть прекрасная фича карт Google Street View. Я там часто прогуливаюсь по улицам разных стран и городов. Чаще всего хочется бысро "пробежаться по улице" а не рассматривать кадры из одной точки в разные стороны либо рассматривать какое-то здание. Отсюда родилась простая идея — кнопочка Drive, нажав на которую как будто проигрывается "видео" (т.к. его нет, то просто пролистываются кадры с задержкой около 1 сек на кадр) и как бы создается ощущение что ты едешь на машине.

January 29, 2011

Следующий новый продукт от Apple — Телевизор Apple TV

Мне давно уже кажется что новый продукт Apple должен стать TV, но не приставка, которая у них уже есть, а сам телевизор.

В свое время был создан iTunes Store для продажи музыки, потом выпущен iPod. Сейчас создано все для продажи и аренды фильмов в iTunes Store а устройства для потребления этого контента нет.

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

Стив часто говорит противоположное тому что делает. Так он называет приставку Apple TV хобби. Я думаю что это проверка рынка.

UPDATE: Отвечая на первый комментарий развернул тему "почему так должно произойти" и решил добавить это в пост:

Дело в том что люди покупают телевизор а не приставки. Приставки это второстепенное. Я думаю что приставку Apple TV покупают очень мало людей, и это те люди которые в теме того что производит Apple и интересующиеся этой продукцией, или просто фанаты. Я, например, хочу купить TV для 2 вещей: 1) Смотреть контент с iPad-а или Mac-а на большом дисплее телика без больших телодвижений 2) смотреть YouTube на телике.

На рынке уже много теликов которые могут ходить в интернет, показывать YouTube и прочие сервисы из интернета. Некоторые производиели публикуют уже API для этого. В таких условиях value добавленное приставкой минимальное.

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

January 15, 2011

Идеальный заказчик, ну или почти идеальный.

Спонтанно вывел для себя 2 почти необходимых правила идеального заказчика который ищет исполнителя на свой проект:
  1. Уже есть техническое задание
  2. Установлен бюджет
Эти 2 пункта говорят мне о вот о чем:
  • Заказчик уже знает что он хочет видеть когда проект будет завершен.
  • Очень часто во уже время работы над проектом просыпается заказчик и говорит например "О, я совсем забыл что нужно еще вот что". Это в свою очередь должно приводить к пересмотру бюджета, а для этого заказчика необходимо убедить что это работа не на 5 минут, хотя он в этом уверен.
  • Заказчик знает рынок и цену. Это помогает избежать ситуации когда люди начинают заниматься непрофильным делом и при этом указывая как правильно делать. Я думаю почти каждый более менее опытный программист сталкивался с ситуацией когда незнающие люди указывали как правильно делать, хотя ты понимаешь что это 100% не верный путь. Мало того, помогает избежать споров о пересмотре бюджета в случае описанном в первом пункте.
  • У заказчика серьезные намерения. Ведь он уже потратил СВОЕ время чтобы понять что он хочет и написать задание.
Если приходит заказчик и говорит "Нужен сайт аналогичный example.com, сколько это будет стоит и за какой срок" — 95% провал. Почему 95? Потому что в 5% случаев у таких заказчиков есть достаточно денег чтобы заплатить исполнителю который способен подхватить идею, вдохновиться ей и полностью под своим контролем довести и поддерживать проект. Да, сайты сами по себе не живут, поэтому их постоянно необходимо поддерживать, добавлять функционал, оптимизировать и т.д.