ACTUALIZACIÓN: Acabo de descubrir que Pete Warden es uno de los chicos que han levantado el escándalo del iPhone Tracker 😉
Ayer me encontré sin querer con una de esas joyas que genera el software libre: OpenHeatMap de Pete Warden.
Pete Warden es un auténtico crack. No solo por lo fácil que hace publicar datos, solo tenéis que ver los vídeos en los que cuenta como funciona OpenHeatMap para descubrir que además no se puede ser más abierto y humilde como persona.
La idea de OpenHeatMap es que creas un csv o una hoja de cálculo en google con la información que quieres representar geolocalizada, configuras como quieres el mapa y ya está. Pete ha creado un par de vídeos para explicarlo:
Este que es general para todo el mundo:
Y este otro más dirigido a periodistas:
Puede que exista una forma igual de sencilla para hacerlo con google maps, pero ¿quien no está hasta las narices de Google?
Además usa Openstreetmaps que desde siempre me han caído mucho mejor y están en la linea que tiene futuro: información abierta y libre para todo el mundo.
En modo server va como la seda pero para incluirlo en tu proyecto, en mi caso en el bazar garum, he tenido que pelearme un poco. Estos son los pasos que he realizado:
* Meter lo includes necesarios:
OpenHeatMap requiere jquery y esto ya lo tengo incluido en Bazar.
<%= javascript_include_tag(«jquery.openheatmap.js») %>
Me lo he bajado en local que no es cuestión de que Pete pague de más a Amazon por el almacenamiento.
* LLamar a OpenHeatMap
Esto es todo lo que se necesita:
<div id=»mapa-paises-container»></div>
<script type=’text/javascript’>
$(document).ready(function(){
// tamaño del mapa y tipo de render.
// no prefiero flash, pero html5 canvas no termina de ir bien todavía
$(‘#mapa-paises-container’).insertOpenHeatMap({
width: 800, height: 500, prefer: ‘flash’
});
});
function onMapCreated() {
var map = $.getOpenHeatMap();
csv = ‘<%= Pais.paisestocsv -%>’;
map.loadWaysFromFile(‘http://static.openheatmap.com/world_countries.osm’);
map.loadValuesFromCSVString(csv);
map.setSetting(‘gradient_value_min’, 0);
map.setSetting(‘gradient_value_max’, 10);
map.setColorGradient([‘#ffbdf7a0’, ‘#ffff0000’]);
}
</script>
El método de rails que me devuelve las empresas que hay en cada país es muy sencillo:
def self.paisestocsv
csv = "country_code,value\\n"
max = Pais.count_by_sql("select max(total_empresas_mercado) from paises")
for pais in Pais.where ('total_empresas_mercado > 0')
csv += "#{pais.cod3},#{(pais.total_empresas_mercado*10)/max}\\n"
end
return csv
end
Como veis simplemente selecciono los países que tienen empresas y monto un string en formato CSV que luego uso en los scripts de OpenHeatMap. Con el código iso de país de 2 dígitos no funciona o no lo he conseguido yo. Pero echando mano de geonames lo he incluido en la tabla de países. En el modo servidor si subes un CSV con códigos de 2 dígitos funciona perfectamente. Si alguien se anima a corregirlo, seguro que Pete se alegra mucho.
He normalizado los valores del número de empresas para siempre devuelva valores entre 0 y 10 para poder ajustar mejor los gradientes pero no estoy seguro de que haga falta realmente.
El resultado ya integrado con Bazar Garum se puede ver en la página de datos de Bazar. En un par de semanas tendremos los nuevos bazares en funcionamiento y poco a poco se ira llenando el mapa.
]]>
abril 22, 2011
Integrando OpenHeatMap en el Bazar Garum
abril 16, 2011
Hack: Como saber si Jazztel te está tomando el pelo con tu conexión adsl
Osmius, descubrí pachube y con un script en ruby es super fácil monitorizar la línea.
Los pasos son:
(1) Te creas una cuenta en pachube.
(2) Te creas un script en ruby o en lo que quieras como este:
require 'rubygems'
require 'mechanize'
require 'logger'
require 'json'
agent = Mechanize.new
agent.user_agent = 'Individueller User-Agent'
agent.user_agent_alias = 'Linux Mozilla'
agent.open_timeout = 3
agent.read_timeout = 4
agent.keep_alive = false
# agent.log = Logger.new(STDOUT)
agent.auth('admin', 'secreta')
url = 'http://192.168.1.1/info.html'
page = agent.get url
up = 0
down = 0
page.search('td').each do |td|
if up == 1
up = td.content
end
if td.content.match('Upstream')
up = 1
end
if down == 1
down = td.content
end
if td.content.match('Downstream')
down = 1
end
end
puts up
puts down
# mandamos la info a pachube
begin
http = Net::HTTP.new('api.pachube.com', 80)
http.start do |http|
req = Net::HTTP::Put.new("/v2/feeds/23385.csv", {'X-PachubeApiKey' => 'tu-api-del-feed'})
req.body = "0, #{up}\r\n1,#{down}\r\n"
resp = http.request(req)
puts resp.body
end
puts "Submitted to Pachube"
rescue
puts "Problem submitting results to Pachube"
puts $!
end
3) Lo metes en el cron:
*/10 * * * * /opt/local/bin/ruby /Users/juantomas/router.rb >> /tmp/router.log
4) En mi caso se va rellenado un gráfico como este:
5) Si tienes una cuenta en osmius, como pachube te exporta los datos en xml, json y csv lo puedes integrar con toda clase de alarmas y gráficos mucho mejores que con pachube 😉
El script es para el router comtrend que distribuye jazztel pero es muy fácil modificarlo para que obtenga los valores de otros routers.
]]>
abril 5, 2011
iPhly: Convierte tu iPhone en una emisora de RC
[caption id="" align="alignnone" width="275" caption="iPhly convierte tu iPhone en una emisora de RC"][/caption] iPhly es un ejemplo de como llevar al límite siendo creativo un dispositivo, en este caso un iPhone convertido en emisora de RC y aprovechar el hardware de un smartphone controlar un avión o un quadcopter. El proyecto iPhly está en Kickstarter y por supuesto no he podido resistirme a la tentación de financiarlo. iPhly es open hardware y free software. ¿Alguien se anima a portarlo a Android? Si no interesa el mundo de los dispositivos por RC o los UAV el hack que ha hecho Ari Krupnik es super sencillo y se puede usar para otro tipo de proyectos. Básicamente es usar la salida de audio del iPhone para hacer interfaces externos 😉 ACTUALIZACIÓN: El proyecto ya está casi financiado!!! ]]>
Fiesta de lanzamiento de Firefox 4 en Madrid
El próximo jueves 14 de abril a las 19:30h tendrá lugar el evento en el hotel Tryp Ambassador y al que asistirá el secretario general de Mozilla en Europa, Pascal Chevrel. Madrid, 4 abril de 2011 – Mozilla, a través de su comunidad en España, Mozilla Hispano, celebrará la reciente publicación del navegador web Firefox 4 para escritorio y dispositivos móviles, organizando un evento al que asistirán destacados colaboradores del proyecto, entre ellos Pascal Chevrel, secretario general de Mozilla en Europa. Tras sendas publicaciones de Firefox 4 para escritorio y para dispositivos móviles, las distintas comunidades de Mozilla alrededor del mundo se disponen a celebrar el éxito y acogida de la nueva versión de su navegador. La Comunidad de Mozilla Hispano participa también en esta gran celebración y ha organizado distintas fiestas en los diferentes países en los que colabora con Mozilla (España, Argentina, México o Colombia, entre otros). El próximo jueves 14 de abril es el turno de España y el evento será en Madrid, en el hotel Tryp Ambassador (Cuesta de Santo Domingo, 5) a las 19:30 y al que asistirá el secretario general de Mozilla en Europa, Pascal Chevrel. Para asistir al evento se ha habilitado una página de inscripción online, abierta hasta el día 13 de abril: eventos.mozilla-hispano.org/fx4madrid. La inscripción está abierta a todo el mundo, la única limitación es el aforo de la sala. Para más información:
- Página del evento
- Comunidad Mozilla Hispano
- Contacto organización de evento: eventos arroba mozilla-hispano.org
abril 4, 2011
Streaming en Directo del Día Garum
Día Garum Europa 2011: Jose Ignacio Goirigolzarri Día Garum Europa 2011: Vinton Cerf Día Garum Europa 2011: Douglas Rushkoff Día Garum Europa 2011: Michel Widenius Día Garum Europa 2011: Yuval Cohen y Gerardo Tobías Día Garum Europa 2011: Rudy Rucker ]]>