Обход ограничений страны в BlackBerry App World

Дисклеймер: описанная ниже дыра исправлена. На новых версиях App World она не работает. У меня нет времени заниматься поддержкой. Вы можете сами поэкспериментировать и поискать альтернативный вариант.

Итак, стало известно, что BlackBerry Messenger работает в России у Билайна и МТС, если у вас подключен BIS. Но BlackBerry App World запрещает скачивание приложения в России:

Такая несправедливость не остается безнаказанной. Я сделал небольшой реверс-инжиниринг и написал приложение, которое обходит это ограничение.

Читать далее Обход ограничений страны в BlackBerry App World

Тариф новогодний

В твиттер прислали ссылку о том, как люди зарабатывают.

Теперь Дед Мороз может поздравлять детей и взрослых от 1 года прямо из своего Терема!

Это интересно, удобно, безопасно и, конечно, оставит массу ярких впечатлений!

В зависимости от возраста малыша Дед Мороз расскажет увлекательные истории, поиграет в интересные игры, послушает стихи, песни и танцы в исполнении юных артистов. А завершение звонка непременно поделиться секретом, где он припрятал подарок.  Стоимость видеозвонка Деда Мороза по Skype — 2 000 рублей.

Я подумал, а чем я, собственно, так уж хуже деда Мороза? Поэтому, уважаемые господа, представляю Вашему вниманию свой тариф.

Если Вы хотите провести собеседование с высококлассным специалистом по разработке мобильных приложений на BlackBerry, Android и имеющим практический опыт разработки на iPhone, iPad и WP7 (т. е. со мной) с помощью Skype прямо из моего терема, то стоить это вам будет 1500 р. за видеозвонок, 1000 р. за обычный звонок. Чат бесплатен, всё-таки я не совсем Дед Мороз!

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

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

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

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

Тариф начинает действовать с 1 января 2012 года.

Оплату Вы можете произвести денежным переводом или через PayPal. Я работаю над введением других способов оплаты.

Блокировка ТВ рекламы

В продолжение темы, затронутой в записи ТВ и Android.

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

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

Предположим, что момент начала рекламы определен. Что же делать дальше? Вариантов много, но пока всё, что мне нужно — это приглушить звук телевизора до еле различимого минимума. Восстановление звука по окончании рекламы не требуется, да и мне кажется это непосильной задачей. Кроме того, если начало рекламы можно определить по вставкам, которые делают каналы на доли секунды, то начало передачи засечь гораздо сложнее.

У меня нет математической подготовки, чтобы всё это сделать в одиночку, но при наличии свободного времени я смог бы попытаться использовать библиотеку компьютерного зрения OpenCV и какой-нибудь открытый алгоритм экстракции аудио-отпечатков и сделать тестовый прототип для десктопа.

Когда берешься за проект, помни!

Люди, которые ставят задачи, делятся на четыре категории:

  1. которые документируют технические задания и описывают требования, по которым можно разрабатывать и поддерживать продукт;
  2. которые умеют документировать технические задания, но не хотят;
  3. которые хотят описать требования, но не умеют;
  4. которые не хотят и не умеют;

Первая категория крайне утопическая. Таких людей и команд крайне мало. Частный случай первой категории — это когда разработчик сам имеет видение, формализует требования, ограничивает product scope, просчитывает риски и сам же делает продукт. При этом ему нет необходимости ни с кем делиться своим видением, создавать читабельную и вменяемую документацию для краткосрочных проектов. Но для дологосрочных проектов требуется документация даже для программиста-одиночки. Память человека — штука ненадежная, работая над несколькими проектами одновременно всегда есть риск упустить детали. Кроме того, к проекту можно охладеть и пустить его в свободное плавание на несколько месяцев или лет, а потом снова загореться. Поэтому я в своих личных проектах стремлюсь описывать требования. И могу похвалиться крайне низким рейтом заброшенных проектов.

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

Третья категория опасна для разработчиков и фрилансеров. Вы, как программист, имеете на руках техническое задание, работаете по нему и постоянно сталкиваетесь с неточностями, противоречиями, отсутствием чувства целостности, изменениями в спецификации за неделю до релиза и многими другими вещами, которые негативно скажутся на качестве. Плохо, если спецификация опирается на еще несуществующий компонент, у которого в свою очередь нет спецификации, или на разработанный компонент без документации. Но тут есть путь к спасению: а) отправить людей на курсы повышения квалификации; б) нанять профессионалов с доказанным опытом; в) передать описание технического задания человеку, у которого есть видение, при том условии, что он имеет опыт в написании ТЗ, иначе есть риск перейти в категорию уровнем ниже. В больших компаниях есть целые отделы, которые занимаются описанием требований. Но они не утруждают себя заглянуть достаточно глубоко в проект, над которым они работают, из-за невовлеченности и  неинтегрированности сотрудника, который описывает требования, в команду разработчиков, незнание или непонимание матчасти, предметной области.

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

Вы можете представить себе массовый художественный фильм, снятый без сценария? Как и разработка программного обеспечения, съемка фильма требует прекрасной слаженности работы персонала: оператора, сценариста, режиссера, актеров, монтажера. Так почему такая творческая деятельность как съёмка фильма требует наличия документа — ТЗ, по которому ведется съемка и с которым постоянно режиссер сверяется: не ушел ли он от темы, раскрыл ли то, что задумывалось и так далее? Почему хороший режиссер никогда не возьмется за дырявый сценарий и перед началом съемки не убедится, что все дыры в сценарии закрыты? Потому что это стандарт индустрии и это единственный способ работать хорошо и зарабатывать хорошие деньги. Советую об этом подумать и разработчикам программных продуктов.

Спецификация сама по себе не является ценностью, код сам по себе не является ценностью, видение само по себе не является ценностью, идея сама по себе — ничто. Но когда всё это присутствует вместе, и каждый элемент сделано правильно, то есть шанс получить Продукт, с большой буквы пэ. Увы, зачастую выпуск такого продукта не является целью всех членов команды. Иногда это не цель тим-лида, не цель автора спецификаций, не цель автора идеи. Автор иногда просто хочет денег и сделать что-нибудь, что продается. Автор спецификации иногда хочет выдать на-гора и побыстрее документ, чтобы от него отстали и заняться чем-то ещё, поскольку господин писатель — личность творческая и очень занятая. Тим-лид иногда хочет, чтобы ни один член его команды не пребывал в состоянии «а что мне сейчас делать?», поскольку метрики, которые надо показать в отчетности не должны содержать такой пустоты. Так вот, когда цели такие, то и продукт получается — говно.