26 декабря 2010 г.

Управление личными финансами

Я не пользуюсь и не буду пользоваться программами управления личными финансами до тех пор, пока в них не будет реализована возможность автоматизированного ввода купленных вещей (оказанных услуг). Причём, с минимальным количеством телодвижений.
Реализовать это можно, например, с помощью сканирования чека, можно по фото. Фото можно сделать мобильником или КПК. Это не единственный способ, хотя и наиболее реальный в текущих условиях (реалиях).
Дополнительно можно сделать много интересной функциональности, взаимодействующей со штрих-кодом.

25 декабря 2010 г.

Мысли

Людям надо делиться своими предложениями и идеями по реализации чего-либо. Делиться с другими людьми. Ибо идея первична, а реализация вторична. Реализация не возможна без наличия идеи. Качественная реализация - это тоже идея: идея реализации.
Скрывать можно только те идеи, реализацией которых Вы занимаетесь и не закончили или точно будете заниматься в будущем.

Ограничение человеческих возможностей

Ничто так не ограничивает человеческие возможности и чувства, как отсутствие зрения или/и слуха. :(

12 декабря 2010 г.

Истинный 3D-экран

На днях мне приснился сон, в котором у меня было устройство (во сне я думал, что это смартфон), который обладал истинным, самым настоящим и реальным 3D-экраном.
Выглядело это так.
Я решил посмотреть какую-то городскую местность. Для этого достал устройство, запустил на нём навигационную программу и что-то в ней нажал. В результате из экрана "вылезли" дома и организовали что-то типа макета. Все дома были разные (по высоте и форме). Самый высокий дом был примерно 15 сантиметров. Все дома были не прозрачные, однотонные, сероватого цвета.
Конечно, первым моим желанием было прикоснуться к этим домам. :) На ощупь они были похоже на чистый лёд, но абсолютно не холодные и менее мокрые. И хотя ощущались они как мокроватые, тем не менее руки оставались сухие. При более сильном нажатии на дом, он моментально превращался в жидкообразное состояние (как вода) и падал на экран. Но при этом абсолютно не разбрызгивался. Упавшая жидкость моментально исчезала (впитывалась) в плоскости экрана.
При наклоне экрана ничего не вытекало. :)
Для вращения карты использовались стрелки рядом с экраном. Причём если при вращении карты какой-то дом должен был выйти за край экрана, то он также, как и при нажатии, падал, не выходя за границу. С другого же края "вырастали" новые дома.
Самое главное: хотя эти дома не обладали детализацией (на них не было никаких окон, дверей и прочих архитектурных особенностей - это были просто прямоугольники), тем не менее, эту местность можно было как угодно рассмотреть.
Не знаю, почему мне приснился такой детальный сон про такой экран. :)

25 октября 2010 г.

Игры со свободной песочницей

Поиграл я в очередную 3D-игру, где игроку предоставляется абсолютная свобода перемещений. И понял, что истинной свободы в играх у меня (и не только у меня) нет и никогда не было. Заметить это можно, на пример, по диалогам: игроку предоставляется выбор из ограниченного числа ответов, которыми он может воспользоваться. Но что делать, если я хочу ответить другое?
Именно по этому я и не доиграл последнюю игру - в ней я, как игрок, вроде бы должен являться непосредственным участником, от решения которого зависит вся дальнейшая линия игры, но на самом деле моя участь сводится к безвольному выбору из предоставленных вариантов поведения.
Более того, часть моих ответов звучит так, что я сам не понимаю, что же я этим пытаюсь сказать. :)

24 октября 2010 г.

Развитие робототехники

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

6 октября 2010 г.

Чтение блогов

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

02 февраля.
Я в отпуске.

01 января.
Поехал в отпуск.
Так, посетитель этого примерного блога, первый раз зашедший на этот блог, первым делом узнает о последнем событии - о возвращении из отпуска. Ну, это ещё не сильно критично - ведь не будет посетитель перечитывать весь блог. :)
Другой же посетитель, который изредка посещает этот блог, если зайдет на него между 02 февраля и 03 марта первым делом узнает об отпуске. ("Как? Когда уехал?") :)
Конечно, часть вины будет лежать и на владельце блога, т.к. при написании сообщений он не расчитывал на таких посетителей. Но кто на них расчитывает? :)

Теперь допустим, Вы не знаете об RSS и email-рассылках. Т.е. блог Вы читаете единственно доступным способом: путём посещения страницы блога с помощью браузера.
Незавидная участь ждёт читателей.

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

10 сентября 2010 г.

Виртуальные рабочие столы

В *nix-системах довольно популярна идея (и реализация в рамках дистрибутива OS) виртуальных рабочих столов.
В win-системах это реализуется только сторонними приложениями.
Наличие единственного рабочего стола больше соответствует понятию "рабочий стол", используемому в реальной жизни: посмотрите на свой рабочий стол, на котором стоит Ваша клавиатура (ноутбук, книжка, кружка ... :) ) - сколько столов вы видите? :) Получается, что в реальной жизни Вам хватает одного стола, а в виртуальной - нет. :)
Основным удобством виртуальных рабочих перед реальными (из реальной жизни) является возможность переключаться между различными активностями: например, на одном столе можно "обложиться учебниками и писать диплом", а на другом "пить чай с плюшками". В реальной жизни нам пришлось бы либо ходить от стола к столу, либо объеденить эти активности, и рисковать "залить диплом чаем". :)
Тем не менее, мало кто из нас может одновременно (именно одновременно) работать плодотворно сразу на двух столах: писать диплом, глядя в книгу, и пить чай с плюшкой - либо мы смотрим в книгу, либо в кружку; либо мы держим ручку, либо кружку. Происходит постоянно переключение внимания.
Нет, чай-то мы, конечно, попьём, но получим ли мы от этого удовольствие? :) И уж точно, на время совмещения, у нас снизится скорость написания диплома.
Предлагаю не создавать одновременно множество виртуальных столов, а иметь один, но при необходимости выгружать его и загружать другой. Например:
  • включили компьютер и сразу выбрали нужный рабочий стол (с дипломом);
  • поработали за ним - записали состояние стола, выгрузили, выбрали и загрузили другой стол (с чаем и плюшками);
  • попользовались другим столом - записали состояние, выгрузили, выключили компьютер.
Т.е. стол один, но дел, которых мы за ним можем сделать - несчётное множество. И главное - эти дела не мешают друг другу.

7 сентября 2010 г.

Управление вводом/изменениями данных на формах

Сейчас в системах Windows (другие не рассматриваю, ибо не знаю как "там" сейчас) принята следующая идеология при вводе или изменении данных на формах: пользователю предоставляются 3 (не всегда) кнопки:
  • OK - применяет все изменения на форме и закрывает форму;
  • Apply - применяет все изменения на форме и оставляет форму открытой;
  • Cancel - отменяет все изменения на форме, которые были сделаны до последнего нажатия кнопки Apply.
Но иногда бывает полезно ввести/изменить данные, посмотреть как это "выглядит", и затем отменить ввод. Для выполнения этого сейчас надо выполнить следующие действия:
  1. Открыть форму и ввести/изменить данные.
  2. Нажать OK или Apply (в последнем случае нам не надо будет закрывать форму).
  3. Посмотреть полученный результат.
  4. Опять открыть форму (или перейти на неё, если на шаге 2 мы нажали Apply).
  5. Отменить все исправления, сделанные на шаге 1.
  6. Нажать OK.
Предлагается для достижения того же результата изменить эту последовательность действий на следующую.
  1. Открыть форму и ввести/изменить данные.
  2. Нажать Apply (форма остаётся открытой).
  3. Посмотреть полученный результат.
  4. Перейти на форму.
  5. Нажать Cancel.
Т.е. нам не придётся повторно отменять (кликать по всем контролам) все исправления. Т.е. предлагается изменить фукнционал кнопки Cancel на такой, что её нажатие будет отменять все изменения, сделанные на форме, не до последнего нажатия кнопки Apply, а до момента открытия формы.

P.S. Возможно, таким образом мы потеряем какой-то другой фунционал. :)

Контроль качества

Разработчики создают программы. Отдел качества их тестирует. Пользователи - используют.
Но иногда компании экономят на отделе качества (например, выделяют недостаточное количество тестеров на проект или предоставляют недостаточное количество времени для тестирования). Таким образом роль тестеров достаётся конечным пользователям.
Предлагается.
Создаётся интернет (онлайн) сообщество тестеров, желающих заниматься тестированием на следующих условиях:
  • Разработчик перед выкладыванием проекта для тестирования, выделяет на это определённую сумму денег.
  • Тестер по желанию может присоединиться к любому проекту.
  • Необходимо гарантировать, что пользователи знают об описываемом сообществе тестеров. (???)
  • Тестер (практически по желанию, но теоретически это понадобится) знакомится с документацией по проекту.
  • Тестер по желанию может заниматься поиском ошибок в программе.
  • Если тестер(1) находит ошибку в программе, которая не соответствует функционалу (это обязательное условие), описанному в документации, то он сообщает о ней в сообществе.
  • Если другой тестер(2) видит, что кто-то нашел ошибку, то он может проверить её: действительно ли ошибка имеет место быть.
  • Если ошибка подтверждается, каждый тестер получает определённое, но различное количество баллов.
  • Если ошибка не подтверждается, то инициируется процедура судейства (???), после которой с какого-нибудь тестера (или с обоих) могут снять часть баллов.
  • Найденная ошибка уходит разработчикам (на исправление).
  • Разработчик также может быть не согласен с наличием ошибки (???).
  • После завершения этапа тестирования, начинается этап опытной эксплуатации пользователями.
  • Если пользователь находит ошибку, он сообщает о ней в сообщество тестеров.
  • Каждая найденная пользователем ошибка также обрабатывается на соответствие документации, с привлечением, при необходимости, процедуры судейства. (???)
  • Если ошибка подтверждается, то со всех тестеров, участвующих в проекте, снимается определённое количество баллов, а пользователь, нашедший ошибку, наоборот, получает определённое количество баллов.
  • После завершения этапа опытной эксплуатации, выделенная разработчиком на тестирование сумма, делится между тестерами и пользователями, в соответствии с набранными ими баллами.
Знаками "???" пометил места, которые требуют дополнительного обдумывания.

26 июля 2010 г.

Поддержка программ

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

Предлагается:
  1. Пользователь, желающий исправить ошибку или получить новую функциональность, платит за это n денег.
  2. Когда таких пользователей набирается N (= n + n + ... + n), эта сумма перечисляется производителю и он приступает к работе.
Замечания:
  • Не обязательно все пользователи должны платить одинаковую сумму n: возможно кому-то исправление ошибки или добавление новой функциональности более (менее) важно, чем остальным пользователям и он готов заплатить больше (меньше).
  • Значение N может устанавливаться группой, никак не связанной с разработчиком, но имеющей в этом некий опыт.

22 июля 2010 г.

Саморазвиваемое сообщество (2)

Сначала читать: Саморазвиваемое сообщество.
Дополнительные правила:
  • Любой пользователь на любое определённое действие другого пользователя может высказать претензию.
  • Если пользователь по какому-либо своему действию получает заданное количество претензий (например, равное половине количества пользователей в сообществе + 1), то он автоматически исключается из сообщества.
  • Вместе с исключённым пользователем, из сообщества также исключается тот, кто его пригласил в это сообщество (а возможно и ещё несколько человек по цепочке).
Эти правила призваны обеспечить, во-первых, "испортившихся" членов сообщества, а во-вторых, повысить "качество" новых членов.
Интересным остаётся вопрос: сможет ли "прогнившее" сообщество, исключая "здоровых" пользователей, как-то самоизлечиться?

24 июня 2010 г.

Интернет-ТВ + спорт

Думаю, трансляция спортивных соревнований - это то, что завоюет аудиторию. Причём всю: как пользователей интернета, так и зрителей обычных ТВ.
Просто потому, что (1) интернет не ограничен во времени и (2) в количестве одновременно передаваемых "картинок" с одного сайта (канала).
Пункт (1) нужен зрителю для того, чтобы он был уверен, что матч он досмотрит до конца, т.е. трансляция соревнования не прервётся, потому что надо начинать другую передачу.
Пункт (2) нужен зрителю для того, что бы получить соревнования по всем видам спорта, т.е. что бы не было ограничений из-за того, что "просто физически" всё нельзя показать за 24 часа на одном канале ТВ. Т.е. любой зритель найдёт спортивный интернет-ТВ-канал именно с его любимым видом спорта.

14 апреля 2010 г.

Концепция интерфейса Today для КПК

Приобрёв современный (на момент покупки) КПК (коммуникатор, т.е. с функцией телефона), первым делом я решил настроить его "под себя", т.е. сделать таким, чтоб он меня удовлетворял и предоставлял мне все функции и возможности, чтобы мне не хотелочь ничего большего. Но начав это действо, я понял, что вообще-то я не знаю каким должен быть мой КПК - к тому времени у меня уже несколько лет был в использовании КПК, но из-за его возраста и некоторых поломок, я не сильно пытался его изменить и использовал его почти с "голой" операционной системой, и меня это устраивало и удовлетворяло.
До тех пор, пока не наступило психологическое раздражение. :) Т.е. я мог пользоваться старым устройством и раньше, но хотелось чего-то нового.
В итоге, я занялся выбором нового КПК и первым делом: выбором между существующими операционными системами: Windows Mobile, Android и OS iPhone (не знаю, как называется их OS). Пойдём по порядку.
OS iPhone я рассматривал в последнюю очередь. А если быть честным, то почти совсем не рассматривал. :) Дело в том, что предоставляемый в ней софт (точнее, концепция), категорически не устраивал меня по части usability. Может это звучит слишком пафосно, но уже к тому моменту, как я увидел iPhone, я понял, что это не моё, из-за громадного количества ограничений: то, что другим кажется удобным, мне видится как ограничевающее мои возможности использования устройства. Я уверен, что я не смогу использовать устройство, если оно позволяет делать какую-то функцию только одним способом и этот способ будет мне неудобным. Таких функций (даже если на самом деле она одна ;) ) в iPhone оказалось достаточно, что бы забыть про него на ближайшие несколько лет, а то и больше, т.к. его производитель, за всё время существования с тех пор ничего в нём кардинально не менял.
Android. Тут был очень долгий выбор. У этой OS есть плюсы, но на момент покупки моего устройства, это была ещё молодая OS - было мало софта. Мне же очень хотелось использовать КПК в качестве навигатора. Я понимал, что в ближайшее время ситуация может измениться, но ждать очень не хотелось. :) И, как я сейчас вижу, ждать бы мне пришлось около года. :) Второй момент - железные характеристики устройств с Android: хотя у меня был и старенький девайс, тем не менее, он обладал довольно хорошим и большим экраном и смотреть на меньшие экраны я уже не мог по причине необходимости разглядывать мелкие детали. Возможно, на устройствах с Android не так уж и часто приходится вглядываться, но экраны и их размеры мне всё равно не понравились. Кстати, может быть я и ошибаюсь, но ни в момент покупки, ни спустя полгода, так и не появилось ни одного устройства с Android, которое бы можно было бы сравнить по железным характеристикам моего нового устройства с Windows Mobile. (На момент публикации статьи ситуация не изменилась.)
(Последней каплей в споре между Windows Mobile (WM) и Android, стало появление слуха о том, что для выбранного мной устройства на WM, его производителем будет выпущена официальная прошивка с Android. Девайс с WM был куплен. :) Но слух не подтвердился и, более того, через некоторое время был опровергнут. Жаль. Но это так, отсупление от темы.)
В общем, купив новый КПК, я первым делом стал пробовать различный существующий софт, а также стал думать, о том, что я хочу от КПК.
Первым шагом оказался выбор (для WM это естесственно) софта или плагинов для экрана today. Скажу вам, это было тяжело. Софта много. Много одинакового. Много разного. Много некачественного (хотя мне повезло - hard reset я делал только один раз).
Но всё было не то: либо сделано не удобно, либо вообще отсутствовала какая-то функция.
Тут внимательный читатель заметит, что как я могу говорить о неудобности или отсутствии функции, если выше я написал, что не знаю того, чего хочу от КПК. А объясняется это просто: почти все программы я устанавливал ДВА раза. Первый раз я устанавливал все программы подряд (установил, удалил) просто для ознакомления с их возможностями и того, что они из себя представляют. Это позволило мне понять, что мы имеем в софте на текущий момент: какие функции есть вообще и какие наиболее удобно сделаны. Второй раз я уже устанавливал только некоторую группу программ, которая как минимум обладала функциями, которые мне приглянулись. В основном для того, чтобы удостовериться, действительно ли это полезная функция или можно обойтись без неё.
И таким образом, я сформировал основные требования для экрана today:
  1. На экране ВСЕГДА должна отображаться важная информация, т.е. та, которая нужная мне всегда в первую очередь после включения КПК. В моём случае такой информацией оказались: часы, дата и маленький календарь на текущий месяц. Занимает это всё примерно 1/4 всего экрана, причем часы - самый крупный элемент на всём экране.
  2. На экране должна отображаться информация, если она случилась, т.е. это различные напоминания и уведомления. В остальных случаях эта информация не должна показываться на экране ни в каком виде просто потому, что не зачем показывать то, чего не случилось. В моём случае этой информацией оказалась: уведомления о пропущенных звонках, о непрочитанных sms и email, информация о разрядке батареи, о низкой громкости звонка телефона, напоминания от календаря (о встречах и задачах). Занимает это примерно 1/12 (одну двенадцатую) всего экрана и выполнено в виде ярких пиктограмм (иконок), т.е. если что-то случается, то не возможно не обратить на это внимание. :)
  3. Нажатие (клик) на иконку из предыдущего пункта должно приводить непосредственно к экрану (форме), где я мог бы сразу принять необходимое действие и устранить это напоминание или уведомление. После этого, иконка из пункта 2 должна перестать отображаться на экране.
  4. Остальная часть экрана лично у меня занята второстепенной информацией - расписанием встреч и задач. Эту информацию не сообщишь в пункте 2, т.к. она ещё не случилась, но случится в будущем.
Тут хочу сказать, что основными требованиями для меня получились пункты 2 и 3. Эти требования я смог реализовать только с помощью единственной программы для WM. Всё остальное даже рядом не приближается к этим требованиям и в итоге занимает на экране today существенную часть экрана - не ясно зачем и почему.
Правда, я ещё не привёл пункт 2 к идеальному состоянию, просто потому, что используемая мной программа не позволяет это сделать.
В общем, есть куда стремиться. :)

25 февраля 2010 г.

Автомобильная навигация

Так получилось, что некоторе время назад я перебрал очень много (возможно - все :) ) автомобильных навигационных программ для коммуникатора (КПК): от уже написанных до программ, находящихся в состоянии ранней разработки. Искал кое-что определённое, что сейчас не важно.
Буквально сразу в начале поиска, я перестал пытаться разбираться в программе и сразу от неё отказывался, если для её установки и запуска необходимо было долго разбираться (много читать :) ). Таким образом, начинаем формировать требования к идеальной навигационной программе:
  • Программа должна легко (прозрачно) устанавливаться и запускаться, т.е. в идеале установка должна проходить по стандартному алгориму установки программ для текущей OS.
Вторым шагом в большинстве программ была необходимость в установке карт. Вроде бы такая простая операция, как копирование, в некоторых программах превращалась в сущее мучение, особенно если карты и программа - от разных авторов.
  • Карты в программу должны устанавливаться ещё проще, чем сама программа.
Навигационная программа имеет связь с GPS. Следовательно, программа должна знать текущее местоположение пользователя. Если она знает местоположение, то она должна уметь скачать нужную карту с Internet'а и самостоятельно установить её. Пользователю можно только задавать уточняющие вопросы, но никак не заставлять его делать всю работу. Уточняющий вопрос, это например вопрос о том, скачать ли карту прямо сейчас, (с помощью доступного в текущий момент интернет-соединения) или подождать, когда пользователь подключит другой способ связи с интернетом.
Например, в одной из опробованных мной программ, небыло вообще такого понятия, (ну или почти небыло ;) ) как "скачивание и установка карт" - всё делалость автоматически. Конечно, таким образом повышаются расходы на интернет, но, согласитесь, что удобней этого ничего нет.

Из предыдущих пунктов следуют:
  • Программа и карты должны также прозрачно обновляться.
Одним из самых важных показателей качества программы является качество используемых ею карт:
  • Дорожная обстановка на картах (например, ремонт дороги или установка новых знаков) должна обновляться максимально быстро.
Сейчас это делается несколькими способами:
- только обновление карты целиком, обычно очень редко - ни о какой точности тут и говорить не приходится;
- обновление карты целиком + обновления дорожной обстановки, высылаемые пользователям отдельно довольно часто - хороший вариант;
- возможно, есть ещё способы, как в упомянутом мной ранее примере, когда пользователь работает постоянно с актуальной картой, хранящейся на сервере - идеальный вариант, но уже с некоторой избыточностью.

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

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

Думаю, продолжение следует ...

7 января 2010 г.

Бекап данных

Бекап данных на какое-либо хранилище в том же доме (квартире) обладает некоторыми недостатками, например, незащищённость от пожара, потопа или кражи.
Существующие онлайн-сервисы по хранению данных, при больших объёмах этих самых данных, превышают стоимость домашнего хранения.
Имеем проблему: хранить дома, но не дома. :)
Предлагается реализовать сервис, который предоставляет для двух пользователей (в идеале - хорошо знакомых друг другу, друзей, т.е. доверяющих друг друг) возможность удалённой синхронизации данных, а именно:
  • Каждый из этих пользователей покупает HDD одинакового объёма.
  • Каждый устанавливает этот HDD к себе в компьютер (в идеале - сервер, с постоянным доступом в internet).
  • Каждый пользователь самостоятельно следит за своим HDD. Т.е. в собственности каждого пользователя находится HDD, который содержит данные другого пользователя.
Про остальные детали, например, про необходимость шифрования или про пропускную способность интернет-канала, додумывайте сами. ;) Основную мысль я передал.