lunes, 27 de octubre de 2014

Los datos como combustible en esta nueva era, Desarrolladores Google Show y el análisis masivo de datos

En la era de las ciudades inteligentes, los datos son el combustible para mover la maquinaria de progreso en nuestras grandes ciudades. Si recolectamos y analizamos datos podemos entender lo que nos sucede, lo que falta, lo que debemos atender como gobierno, sociedad, vecinos, etc. La tecnología viene a jugar un rol muy importante en este nuevo paradigma de ciudades inteligentes, logrando analizar la gran cantidad de datos y dando respuestas en segundos. Aquí material imperdible desde #DesarrolladoresGoogleShow, que aborda estos temas: el análisis masivo de datos a partir de soluciones como #BigQuery. Hacia el final, una entrevista con el Gobierno Federal de México, quien tiene grandes iniciativas para liberar datos y dejarlos bien presentados a los programadores, infaltable además la visión comunitaria desde #CodeandoMexico, una organización de hackers a cívicos.
Seamos conscientes de que tenemos grandes cantidades de datos al alcance de la mano y que el progreso puede estar en manos de nosotros como desarrolladores si sabemos analizarlos.


Creative Commons License
Los datos como combustible en esta nueva era, Desarrolladores Google Show y el análisis masivo de datos is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at http://nbortolotti.blogspot.mx/2014/10/los-datos-como-combustible-en-esta.html.

martes, 21 de octubre de 2014

El mundo no explorado de G+ desde la visión del desarrollo

El enfoque social y virtual propone una revolución constante, a diario me pregunto como se estarán analizando esos datos,  la oportunidades de búsquedas y el constante cambio que existe en la línea de tiempo de los entornos sociales. Hoy nuestro objetivo será obtener información de las actividades de G+ procesarlas y ponerlas a funcionar en un entorno  web pero de una forma filtrada.

Vamos a crear un panel de actividades sociales... 

El proceso propuesto se conecta a la API de Google plus obtiene actividades según un filtro y luego los puede mostrar de diversas maneras en un sitio web (este ejemplo está preparado para http).


Como muestra la Fig.1 y Fig.2 donde podemos integrar en un sitio web información personalizada de los entornos sociales, incluso correlacionar o integrar varias redes en una misma línea. 
Fig.1 G+ tradicional
Fig.2 Integración de información personalizada en web


Vamos a ver los esencial de la implementación:

#Python Code sobre App engine

actividades = servicio.activities().list(userId='me', collection='public', maxResults='7')\
               .execute(http=http)

#Definicion de los datos para insertar en HTML. Jinja2
           plantilla_values = {
                'actividades': actividades,
          }

#HTML con Jinja2

<body>
   <div id="viewport" class="zoomViewport">
       <div id="content" class="zoomContainer">
          {% for a in actividades['items'] %}
             {% if a['verb'] == 'post' %}
                <div class="zoomTarget">
                  <p>{{a['title']}}</p>
                  <p><a href="{{a['url']}}">Link</a></p>
                  <br>
                  <p>Compartido: {{a['object']['resharers']['totalItems']}}</p>
                  {% if a['object']['attachments'] %}
                   {% for b in a['object']['attachments'] if not b['image']['url'] == None %}
                    <center><img src="{{b['image']['url']}}" alt="nada" height="100" width="200"></center>
                    {% endfor %}
                   {% endif %}
                 </div>
              {% endif %}
           {% endfor %}
          <span class="clearer"></span>
   </div>
   </div>
</body>
De una simple forma podemos integrar G+ en nuestro entorno, personalizar esta información, y si quisieran pueden armar su propio panel social. Les dejo el proyecto completo en GitHub. (Apache 2.0)
**Cada sábado desde +Desarrollando LatAm compartimos junto a la comunidad este tipo de contenido en vivo. No te lo pierdas!

Creative Commons License
El mundo no explorado de G+ desde la visión del desarrollo is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at http://nbortolotti.blogspot.mx/2014/10/el-mundo-no-explorado-de-g-desde-la.html.

miércoles, 1 de octubre de 2014

Desarrolladores Google El show junto a +Felipe Hoffa

En este nueva emisión y formato del show para desarrolladores en español conversamos junto a +Felipe Hoffa , Developer Advocate del equipo de Cloud Platform de Google. Un linda experiencia donde se trabaja sobre los datos abiertos aplicando BigQuery esta potente solución para BigData de Google. Podrán seguir paso a paso a +Felipe Hoffa en el atractivo camino de procesar conjuntos masivos de datos.

Les dejo el video de implementación., imperdible!


Espero les sea de utilidad!

Si quieres conocer más sobre el proceso propuesto por +Felipe Hoffa pueden ver esta publicación en la que se trabaja sobre BigQuery.

miércoles, 10 de septiembre de 2014

El atractivo mundo de BigQuery y los datos abiertos

Antes de iniciar la descripción de este pequeño trabajo sobre datos abiertos y el poder de BigQuery, **quiero felicitar  a todos los involucrados en el proceso de liberación de datos, ya que el potencial de análisis que le dejan a la comunidad para análisis cruzados de información es invaluable. También a +Felipe Hoffa por su talento y por compartir su conocimiento con la comunidad. 

La idea de este análisis es tomar los datos 



Descargando los datos desde el portal de datos abiertos Presidencia de la Nación Mexico. http://datos.gob.mx

Para este análisis trabajaremos con los datasets de nacimientos del 2008-2013 (6 datasets en promedio csv de 1.3 GB)










Si queremos manipular rápidamente estos conjuntos de datos, lo ideal es usar el poder de Compute Engine y la conexión de estos equipo ultra rápida. 

Entonces desde una VM de Compute, descargo los archivos.






Comando:
wget http://www.dgis.salud.gob.mx/descargas/datosabiertos/sinac_2008.zip

Luego tendremos que utilizar la herramienta BQ para interactuar con BigQuery y hacer la carga de estos datos. Para realizar esta operación debemos utilizar un parámetro de load, pero dentro del formato de recepción no tenemos zip. Así que hacemos la conversión rápida.
  • unzip sinac_2008.zip
  • gzip SINAC_2008.csv
Ahora solo nos queda implementar el comando para hacer el load a BigQuery:

bq load --skip_leading_rows 1 mexico_open_data.sinac_2008 SINAC_2008.csv.gz "ENTIDAD_NACMAD","MUNICIPIO_NACMAD","FECH_NACM","ESTADO_CIVIL","ENTIDAD_RESMAD","MPO_RESMAD","LOC_RESMAD","NUMERO_EMBARAZOS","NACIDOS_MUERTOS","NACIDOS_VIVOS","SOBREVIVIENTES","ANTERIOR_NACIO","VIVE_AUN","ORDEN_NAC","ATENCION_PRENA","TRIMESTR_ATEN","CONSULTAS","SOBREVIVIO_PARTO","DERECHOHABIENCIA",....


Hice un corte del esquema para que no se tan compleja su lectura.




He realizado la carga de los 6 conjuntos de datos y luego los relacioné todos en un solo dataset. sinac_2008_2013

Ahora a divertirnos con las consultas!
Tenemos un conjunto de como 12.6 MM de filas y unos 6.9 GB.
Pregunta inicial:

¿Donde nacen los bebés con mayor talla de México por estado?

SELECT AVG(TALLAH), ENTIDAD_CERTIF
FROM
[mexico_open_data.sinac_2008_2013]
Group by 2
ORDER BY 1 DESC




¿Tu respuesta fue SINALOA? En solo unos segundos personalmente pude conocer mucho más de México.

Ahora les queda todo el poder de los datos en sus manos.. que otras preguntas podemos trabajar con este conjunto de datos?

Importante: Si quieren pueden consultar directamente sobre este conjunto de datos, desde BigQuery para optimizar el tiempo y demostrar que la comunidad en conjunto trabaja mejor!

Espero les sea de utilidad!
Creative Commons License
El atractivo mundo de BigQuery y los datos abiertos is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at nbortolotti.blogspot.com/2014/09/el-atractivo-mundo-de-bigquery-y-los.html.

viernes, 11 de julio de 2014

Pensando en servicios escalables, Cloud Endpoints

En este ejemplo vamos presentar una estructura inicial que proponga la construcción  de un servicio para poder consumirlo desde diversos ambientes. El caso tradicional, es consumirlo desde escenarios móviles y tomando el modelo arquitectural que propone Google Cloud Endpoints. Vamos a iniciar con simples pasos. Crearemos un servicio que reciba un id y en base a esto el retorno sea una cadena.

Para este ejemplo emplearemos Python en App Engine y aplicaremos conceptos de Google Protocol RPC library.

Lo que buscamos es este mismo mecanismo que muestra la Fig. 1. Utilizaron Google API Explorer? Bueno vamos a trabajar el mismo escenario.

Fig.1 Google APIs explorer
A crear el servicio!

Fig.2 Imports y representación del modelo para el servicio
Como pueden observar en la Fig.2 estamos implementando Google Protocol RPC library. Luego tenemos  la clase Mensaje y el manejo de la colección de mensajes.

Ahora vamos a crear la clase que maneje el servicio y su marcado.

Fig.3 Clase que maneja el servicio.
Compilamos y poner a funcionar el servicio, el formato queda implementado como muestra la Fig.4.
Fig.4 Implementación del servicio
Luego al seleccionar el servicio, tenemos la opción de ingresar los parámetros declarados como muestra la Fig.5.

Fig.5 Utilizando el servicio 

Finalmente el resultado de la operación, con parámetro "1", que no es novedad para ninguno de ustedes ya que conocen las opciones de explorar el código de implementación.

Fig.5 Resultado de la operación
Queda mucho por recorrer en la implementación de este tipo de servicios, como el ambiente de autorización y diversidad en las respuestas. Pero indudablemente este tipo de implementación favorecen notoriamente nuestras arquitecturas.

El código de implementación completo lo pueden encontrar en GitHub. Proyecto Scalable-Service


Creative Commons License
Pensando en servicios escalables, Cloud Endpoints is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Based on a work at http://nbortolotti.blogspot.com.