Посмотрим на OpenWeatherMap

Я тут немножко позалипал в OpenWeatherMap.

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


Много народу живёт в Европе. Сколько городов показывается в Европе? Приблизительно ни одного:

Чего ещё не хватает — изолиний, которые бы показывали, где заканчивается -10 градусов, и начинается -9.

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

Много длинных непонятных английских слов. Маленькая иконочка рядом с каждым сделала бы список куда понятнее — ведь не зря изобретались emoji:
☁️ clouds
💧precipitation
❄️snow
☔rain
🌡temperature
⬇️pressure
➡️wind speed

Открываем карту температуры. Подписей становится ещё меньше, изолиний не появляется — но есть мягкая засветка всей карты. Давайте посмотрим, сколько сейчас градусов в Минске?

Правильно! Непонятно, ни сколько градусов в Минске, ни, в целом, где же Минск находится.

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

Карта давления у меня так и не прогрузилась. На ней можно заметить изолинии (наконец-то!) — но ни одна из них никак не отмечена конкретной цифрой:

Как должны выглядеть изолинии? Читабельно. Вот пример из википедии — без лишних градиентов можно легко оценить температуру в почти любой точке карты:

Рассмотрим карты Rain и Snow.
Rain:

Snow:

Можно заметить, что там, где есть дождь, нет снега, а там, где есть снег — нет дождя. Отчего бы не объединить две эти карты, нарисовав дождь голубоватым цветом воды, а снег — серо-белым? :)

Правильно — ведь такая карта уже есть, и называется Precipitation! Только снег и дождь на ней никак не различимы:

Вернёмся в Base Map. Ура, тут снова можно понять, сколько градусов в каком месте!
Если клацнуть мышкой по городу, откроется панелька с более подробной информацией:

Встаёт сразу несколько вопросов:
— как в прогнозе погоды помогает поле «страна»?
— почему Temperature сокращено до Temp?
— тут — ура — есть поле «Влажность». А карты, которая бы показывала влажность, нет.
—  ветер на 210 градусов — это, вообще говоря, куда? на север? на запад? на северо-северо-юг? :)

В общем, очень много странностей в сервисе — складывается ощущение, что картой в нём пользоваться не пробовали. Посмотрим, во что он вырастет в 2017 году :)

OpenStreetMap Manifesto 2016

Infrastructure First

OSMF Board has lots of people who are about building community. We keep pushing away from the mind one significant thing: infrastructure.

There are munin graphs on server availability, yes. There are almost no graphs on API’s availability. How fast does 99% of users get whatever they need from APIs? Is it below 100ms (as it should be in 2016) or closer to 30s?

In 2012 I started the wiki page on expanding OSMF-hosted tile servers into a global CDN. In 2016 this CDN serves 6 TB a day, amount commercially available for $68 000 a month.  Shall I remind you that we collect just €70,000 for a year of operations, completely ignoring the fact there are effectively already ~$1 000 000 of donations to OSM Foundation yearly?

While the CDN itself works like a charm, problems start appearing in other spots. Rendering nodes are close to 90% of their capacity, and a single large enough new site can easily push that to over 100%. Currently people immediately start pointing a finger at this site and shouting «OFFENDER!», banning them from OSM tile usage. Truth is, you cannot save more than you have. Wikimedia sets up separate tile infrastructure with the same stylesheets, just because pointing Wikipedia users to OSMF servers will blow servers away in seconds. We’d better think how we can provide more tiles.

There is no messaging API. It was fine when all the editors were on osm.org website, or at least at a PC, but now we’ve got new mobile editors (most visible is maps.me, but other may follow) that can send data to osm servers, but have no way of getting informed that someone tried to contact the user, and showing a notification on that.

There are no more planet.gpx dumps. Last one was done in 2013, and the progress is dead since then. See: http://planet.openstreetmap.org/gps/ — we can’t even push enough traces into OpenStreetMap to have a complete speed profile from just a single city. Doroga.tv tried that once, blew OSM servers away and is still a top traces contributor. Did we learn anything from there? Can we ingest similar amount of data now, as there are now a lot more services that can provide us with similar data? The answer for now is «no».

OpenStreetMap has one of largest public Postgres instances in the world, with 6Tb of data. Still running on Postgres 9.1, without all the performance improvements and the JSONB usage, which was created exactly for effecient handling of tags. What if we ask a database vendor like https://postgrespro.ru/ or http://www.enterprisedb.com/ to support it and make a report on how it can do better?

I’m going to raise the issues like this and perform attempts at resolving them in a constructive way.

Plan

  • get in touch with database vendors and collect their recommendations on what could be done better;
  • get monitoring done in terms of what experience user gets in addition to existing «how loaded our servers are»;
  • analyse community issues in terms of lack of infrastructure. example: if we can’t contact maps.me users, let’s create means of contact targeted at them;
  • make rhetoric of «we live on donated capacity, go away and set your own» go away in favor of «we live on donated capacity, donate and we’ll live better together«;
  • clean up import of TIGER and similar things that were done long ago and we’ve used to, at least in terms of tags used — no more «tiger:cfcc» and «tiger:tlid».

About mew

In OpenStreetMap project since 2008-03-01. Profile: openstreetmap.org/user/Komяpa
HDYC: hdyc.neis-one.org/?Kom%D1%8Fpa

Member of OpenStreetMap Foundation since 2010-05-24. It was a tricky thing then – no PayPal in Belarus, no way to register and prolong membership for years, yet I did that :)

Currently employed by Juno, Minsk (companies.dev.by/juno-lab-inc, gojuno.com).

Sponsoring two servers for Tile CDN, serving most of East Europe:
https://hardware.openstreetmap.org/servers/vial.openstreetmap.org/
https://hardware.openstreetmap.org/servers/cmok.openstreetmap.org/

Voting

Vote for me if you want to grant me an opportunity to write «can your company help us?» e-mails not as «Komzpa, someone from Belarus who cares about OSM», but as «someone from OSMF board».

If you decide to vote for me and can’t decide who else to vote for, please vote for Kate Chapman aka Wonderchook. Her manifesto: https://wiki.openstreetmap.org/wiki/User:Wonderchook/2016_OSMF_Board_Elections_Manifesto

Overall info about elections:
https://wiki.openstreetmap.org/wiki/Foundation/AGM16/Election_to_Board 

Умный дом и карта погоды

Сегодня искал для работы модель погоды, и обнаружил, что на OpenWeatherMap можно отправлять свои показания погоды. У меня как раз умный дом меряет температуру (используемый датчик — http://www.noo.com.by/pt111.html) и влажность снаружи в любимой деревне — почему бы не получить более точную модель погоды для неё? :)

  1. Регистрируемся на openweathermap.org, получаем оттуда API key.
  2. Идём на страницу http://openweathermap.org/stations-30 и смотрим, что из датчиков у нас есть. В моём случае я знаю широту, долготу, температуру и относительную влажность.
  3. Я не знаю точный altitude датчика, но сервис https://www.freemaptools.com/elevation-finder.htm помог мне её оценить. Широту и долготу можно получить там же.
  4. Регистрируем датчик в системе:
  5. curl -H "Content-Type: application/json" -X POST --data '{"external_id":"57","name":"Ялча, дом 57","latitude":53.78065,"longitude":28.26921,"altitude":170}' "http://api.openweathermap.org/data/3.0/stations?appid=AKI_KEY_HERE"
  6. Записываем ID из ответа системы.
  7. В настройках MajorDoMo заводим новый сценарий. Перепроверяем, что отправляем нужный сенсор, с нужным логином-паролем и правильными координатами (отправить температуру в доме — наверное, не очень хорошо для прогноза :)
  8. exec('curl -H "Content-Type: application/json" --data \'[{"station_id":"STATION_ID_HERE","dt":\'`date +%s`\',"temperature":'.gg('TempSensor01.value').',"humidity":'.gg('HumSensor01.value').'}]\' "http://api.openweathermap.org/data/3.0/measurements?appid=API_KEY_HERE"')
  9. В настройках сенсора в методе onChange дёргаем этот сценарий.spectacle-s28303
  10. Вуаля! Дом теперь стал метеостанцией международного проекта.

23andme: как получить расшифровку своего генотипа в Беларуси

  1. Идём на https://www.23andme.com/en-gb/ (если хотим health report и калькулятор наследственности) или на https://www.23andme.com/en-int/ (если хотим сэкономить $20);
  2. Заказываем набор себе и, опционально, родственникам;
  3. Ждём три дня, получаем приглашение приехать за посылкой на таможню в аэропорт. Лимит беспошленного ввоза у нас $22 в месяц, один набор объявляют стоимостью в $15 — так что если наборов будет больше одного, платим таможенную пошлину. В декларации пишем «пробирка пластиковая для сбора слюны».
  4. Регистрируем набор по штрих-коду на 23andme.com, заполняем длинную медицинскую анкету «а не болели ли вы таким-то?»;
  5. Плюём в пробирку строго по нарисованной инструкции (час до не есть, не пить, зубы не чистить, плюём, пока слюна — не пузырьки — будут выше риски).
  6. Запечатываем пробирку, пакуем в герметичный пакетик из комплекта, складываем в коробочку, складываем в негерметичный конверт для отсылки обратно, относим на Победителей 19 в офис 31 (работают до 20:00 по будням, не забудьте захватить с собой копию паспорта, или хотя бы его фотографию, которую сможете отправить им на почту)
    icon-car.pngKML-LogoFullscreen-LogoQR-code-logoGeoJSON-LogoGeoRSS-Logo
    FedEx Минск

    Карта загружается. Пожалуйста, подождите.

    FedEx Минск 53.911347, 27.545788
  7. Ждём три дня, пока 23andme получит образцы;
  8. Ждём месяц, пока 23andme проанализирует образцы.
  9. Поздравляю, вы нашли 600 новых дальних родственников, с которыми можете познакомиться и поделиться генотипом, чтобы посравнивать, кто, с кем и по чьей линии;
    spectacle-ll8045
  10. Как настоящие data-scientist’ы, идём в Raw Downloads и скачиваем 15 мегабайт данных исследованного генотипа;spectacle-bw8045
  11. Если вам не хватило, или вы хотите подробностей, засовываем файл в https://promethease.com/, платим $5 и получаем расшифровку, в которой риски здоровья расписываются во всех подробностях для каждого гена отдельно (15 тысяч записей — чтиво на день, в котором заодно можно поискать, нет ли у вас противопоказаний для какого-нибудь конкретного препарата).
    spectacle-jl8045

Дальнейшие развлечения:

  • статистически восстановить полный геном в dna.land и скормить его для описания в promethease;
  • опубликовать свой дамп в opensnp.org и поотвечать там на интересные вопросы, вроде холивора Vim / Emacs (вдруг это тоже генетически обусловлено? :)

Bugs I care about

This is my wishlist. I want them all fixed.

PostGIS

GDAL

OSRM

DataGrip

QGIS

Lenovo x260

Приехал мне рабочий ноутбук, Lenovo x260.

Поставил Kubuntu 16.04.

Список пока что обнаруженных проблем:

  • LTE-модем не работает — https://lists.freedesktop.org/archives/libmbim-devel/2016-April/000704.html (отдать команду «включить радио» можно только по qmi-протоколу, модем заботливо перешит леновой в mbim-only, не работает — патчи ещё не причёсаны и не вмержены в мастер);
    UPD: починено в libqmi 1.16.0 / Ubuntu Yakkety, http://changelog.debian.net/libqmi
  • звук в наушниках в доке не играет — наушники надо тыкать только в ноутбук, как чинить — непонятно;
    UPD: чинится установкой ядра с вот этим патчем https://patchwork.kernel.org/patch/8996171/ (в 4.7.0 он уже есть)
  • UEFI намертво заблокирован на загрузку Windows по умолчанию, надо отключить Secure Boot, сбросить ключи Secure boot и после этого переписать boot order в efibootmgr.

LVEE 2016 Health Status

Расчётный бюджет: $15 000

Подтверждённый бюджет: $0

Количество подтверждённых спонсоров: 0

Количество подтверждённых участников: $0

Расчётное количество оплачивающих участников: 80

Расчётный минимальный размер взноса: ($15000 — $0) / 80 = $188.

Что нужно делать прямо сейчас всем: вычесать информацию о спонсорском пакете (запрашивать у Димы Костюка dmitriykostiuk@gmail.com)

Последнее обновление: 03.04.2016

Немного о PostgreSQL

В интернете есть много неправильных инструкций, как апгрейдить постгрес 9.4 до 9.5. Я свёл все воедино и получил ещё одну:

https://gist.github.com/Komzpa/994d5aaf340067ccec0e

В постгресе 9.5 нет гиперболических функций. Без них временами больно реализовывать математику всяких геометрических преобразований. Тредик про это:

https://www.facebook.com/groups/postgresql/permalink/421301081399978/

В постгресе 9.5 есть беда с эстиматором селективности для gist, но беда эта управляемая:

https://www.facebook.com/groups/postgresql/permalink/428991923964227/

OpenStreetMap BY CDN

Сервер

В Беларуси стараниями меня и OpenStreetMap Operations Group есть зеркало CDN для tile.openstreetmap.org. Если вы в Беларуси и у вас правильно настроен DNS, то у вас волшебным образом тайлы OpenStreetMap загружаются очень быстро — гигабитный канал, и из офиса в Минске у меня получается пинг порядка 1 мс

Squid traffic status

Страница сервера на сайте OpenStreetMap Foundation: https://hardware.openstreetmap.org/servers/cmok.openstreetmap.org/

Мониторинг: http://munin.openstreetmap.org/openstreetmap/cmok.openstreetmap/index.html

Пожертвования

Если вы пользуетесь картами OpenStreetMap в быту или в бизнесе, и хотите, чтобы всё это развивалось и продолжалось — не поленитесь написать спасибо и помочь.

  1. Если вам нравится проект в целом — перечислить пожертвования в OpenStreetMap Foundation: http://donate.openstreetmap.org/
  2. Если хотите помочь хостингу OpenStreetMap в Беларуси — напишите мне на me@komzpa.net, мы придумаем, как зачислить денег за хостинг;
  3. Если вы находитесь не в Беларуси, вы можете помочь организовать сервер для своей страны. Подробнее: http://wiki.openstreetmap.org/wiki/Servers/Tile_CDN

Благодарности

  • Rambler  и лично Glebius — за 1U-сервер;
  • DataHata и лично Евгению Кожуховскому — за отличный колокейшен;
  • Участникам LVEE Winter 2016 — за пожертвования на функционирование сервера;