Повторение и тавтология

дайте сказать немому

Новый умный дом

| Comments

1. Общая концепция.

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

1.2. Человек знает, чего ему хочется добиться, но не знает (и не хочет знать) как. Хочет, чтобы дом был чистый, светлый, легко дышалось, внутри только свои и т.п. Это общие вещи, конкретика тоже обычна человеку понятна, или он хочет в ней разбираться, раз уж задумался об умном доме.

1.3. Есть общие знания о мире, справедливые для любых домов, платформ и систем. Дом нагревается, остывает и проветривается по экспоненциальному закону. Если температура зимой падает на столько-то градусов, влажность падает на столько-то. Если никого дома нет, то он должен охраняться. Если на пол протекла вода, то это плохо. Некоторые устройства никогда не должны работать, если никого нет дома, некоторые не должны работать на полную мощность, если дома кто-то есть (громкая вентиляция и т.п.). LED лампочки меняют свои характеристики таким-то образом в зависимости от выработки ресурса.

2. Правильная система устроена так.

2.1. Юзер описывает свои желания из п.2. в самом общем виде. Например,

  • после 10 вечера – включается ночной режим
  • когда никого дома нет, надо максимально проветрить дом
  • когда дома кто-то есть, то приоритет у комфортной температуры перед проветриванием.

И так далее. Эти правила принципиально отличаются от сценариев тем, что описывают желаемое состояние, а не способ достижения этого состояния.

2.2 Движок дома (тот самый ум, наконец-то он нашёлся, ура!) превращает, компилирует пожелания юзера из п. 2.1 в непротиворечивый набор правил, которые управляют исполнительными элементами дома. Делается это на основе модели дома, учитывающей как физические характеристики помещения и окружающей среды (прогноз погоды), так и конфигурацию установленного оборудования. Модель включает в себя разумные правила, действующие по-умолчанию. Если на этапе компиляции обнаруживаются противоречия в правилах (например, одновременно “не включать свет в маленькой комнате с 21 до 9.00” и “подсвечивать растения в зимнее время”), то об этих противоречиях пользователь узнает во время компиляции, а не в процессе эксплуатации заглючившего дома.

2.3. Повторять компиляцию нужно в двух случаях: при изменении пользовательских правил и при изменении конфигурации оборудования, т.е. относительно редко. Поэтому эта функция может выполняться внешним сервисом, “ум дома as a service”. Так можно легко этот ум увеличивать по мере улучшения физических моделей или обнаружения новых свойств датчиков и исполнительных элементов. Кроме того, так все пользователи системы помогали бы друг другу накапливать статистику и соответственно улучшать мозги дома. “Глобальный nest”.

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

3. Что можно попробовать сделать прямо сейчас, на первом этапе.

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

Уже в этом виде система будет полезна и интересна, её можно будет показывать людям, улучшать модели, накапливать статистику и т.д.

Итого:

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

Экспорт в Octopress из SimpleNote

| Comments

Нынешние статические сайты всем хороши, но вот писать туда тексты хотелось бы там же, где я пишу все остальные тексты, т.е. в Notational Velocity (nvAlt-e) и SimpleNote. Иначе эти тексты расползаются по облакам, их становится труднее пасти.

Идея такая: я пишу текст и помечаю его спецтэгом (@tautology2.net). После этого скриптик достаёт этот текст из SimpleNote-овской базы и сохраняет его в каталог с постами октопресса. После этого его можно опубликовать обычным способом.

Если текст меняется, то он переопубликовывается (вот это слово!) заново.

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

Лучшее июльское небо

| Comments

Пока http://vozduh.mks.ru/ не обзавелся своим блогом, напишу сюда новости проекта. Пока я был в отпуске, уважаемые френды продолжили фотографировать московское небо. Спасибо, друзья! Как и обещал, привез в подарок бутылку миртовой настойки автору лучшей фотки. В шорт-лист попали вот эти фотки неба:

Мне там больше всего понравилась картинка

А вам?

Уход из-под империи добра

| Comments

Имея “главный email” в домене gmail.com (или любом другом чужом домене) мы рискуем остаться в один прекрасный момент без электронных платежей и уютных соцсеточек. Такие случаи известны, например гражданин, забаненый на youtube-e за ролики с саундтреком – “закопирайченым контентом”, заодно банится на “основном” гугле, потому что аккаунт, по-сути один и тот же. Ну и вообще, как-то это неправильно, отдавать полный контроль за своей online identity в руки заокеанского (и тем более местного) дядюшки Сэма. Это как свой загранпаспорт хранить в ЖЭК-е, может и ничего страшного, но — зачем? Вероятность забанивания гуглом, конечно, мала, но цена риска уж больно велика.

Поскольку за годы онлайн-жизни этот email много где прописан, одним резким движением его поменять не получится. Лучше сделать так.

  1. Купить себе домен. Любой, какой нравится, у любого нормального провайдера, тысячи их.
  2. Завести и настроить себе google apps for domain. Это как бы копия гугла, но под вашим доменом. Придётся немного повозиться, но документации полно, за вечер можно разобраться и сделать. Главное на этом этапе – настройка своего домена таким образом, чтобы его почту начал обрабатывать google apps for domain. Соответственно из всех apps нас там интересует только mail.
  3. В бесплатной версии google apps for domain вы можете завести до 10 email-ов. Простому коротышке столько и не нужно. Я советую завести два: один будете указывать везде при регистрации, другой пропишете в айфоне в качестве account-a, от которого будут слаться письма. Просто чтобы первый не светить лишний раз.
  4. В обоих свежезаведённых email-ах надо настроить форвардинг на ваш старый, нынешний адрес. Для этого надо будет в них залогиниться один раз, принять там всякие условия и зайти в настройки почты.

Результат: у вас есть два email-адреса в своём собственном домене, почта с которых приходит на ваш нынешний, gmail-овский (допустим) адрес. Теперь, если вас банит империя добра, вы просто меняете настройки своего домена и почта начинает форвардиться на новый почтовый сервис. Вообще никаких проблем.

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

Долина браузерной смерти

| Comments

Продуктивная деятельность, в том числе мыслительная, должна преодолеть “долину браузерной смерти” для того, чтобы вообще состояться. ДБС – замена содержательной активности лайками и просмотром сайтов.

Потенциальный профит, который принесёт планируемое дело (чувство выполненного долга, приготовленный обед, продвинутая рабочая задача) попадает на одну чашу весов, немедленное и почти гарантированное удовлетворение любопытства, тщеславия или общности — на другую.

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

Это отличный и простой reality check, битва двух якодзун, которая обычно заканчивается не начавшись.

Коробочка с датчиком CO2 и кнопкой

| Comments

Вчера доделал наконец-то коробочку для датчика CO2, о котором я писал где-то ещё. Вот так это выглядит примерно:

Яркий внешний вид

Богатое внутреннее содержание.

Самое смешное, что кнопку я не стал проверять отдельно (“ну кнопка-то точно будет работать”) и конечно она не заработала. А идея у неё отличная (придумано коллегой А.А.) — создавать метки в процессе измерений. Т.е. любопытно посмотреть, как влияют люди на содержание углекислого газа в помещении, перед началом совещания нажимаешь на кнопку, на графике помещается флажок. И т.д.

Если cosm.com не глючит и коробочка включена в розетку, то график СО2 выглядит сейчас так:

Попробуем подключить альбом Imgur-a

| Comments

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

Вот например, альбом в imgur-e.

Или музыка на SoundCloud-e. Ну и так далее, все эти радости – одной ссылкой.

Пришлось конечно немного помочь восьминожке, вот так:

  1. в _config.yml добавить параметр embedly_key: ‘xxxx’
  2. в Gemfile добавить gem embedly
  3. в каталог plugins положить файлик embedly_tag.rb следующего содержания:
(embedly_tag.rb) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Title: trivial hack to use embed.ly in octopress
# Authors: Alexander Nikolaev <variomap@gmail.com>
#
# Syntax {% embedly url %}
#

require 'embedly'

module Jekyll

  class EmbedlyTag < Liquid::Tag

    def render(context)
      @markup.strip!

      if @markup =~ /^https?:/
        embedly = Embedly::API.new :key => context.registers[:site].config['embedly_key'],
          :user_agent => 'Mozilla/5.0 (compatible; tautology2/1.0; variomap@gmail.com)'

        if res = embedly.oembed(:url => @markup)
          res[0].html.gsub(/width\s*=\s*"\d+"/, 'width="100%"')
        else
          "Error processing '#{@markup}'"
        end
      else
        @markup
      end
    end
  end
end

Liquid::Template.register_tag('embedly', Jekyll::EmbedlyTag)

На дворе 2013 год

| Comments

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

  • Во-первых, это красиво. Это место, где я могу спокойно писать телеги любой длины и не забоититься о радости френдов. У этого бложека есть два френда: его atom feed и коменты disqus‑a.
  • Во-вторых, это удобно. Он сам из коробки умеет импортировать гитхаб, делишус и твиттер, и я надеюсь научить его импортировать в пристойном виде альбомы из imgur-a. А то после того, как сдох posterous и погoворить не с кем! И вообще, поскольку это гиковский движок, тут будет перманентная айтишная вечеринка.