logo

Acerca de

Bienvenido a mi blog, el sitio perfecto para mis inquietudes, experiencias e idas de olla sobre temas de hoy en día.

Historia al azar

Categorías

Últimas entradas

Últimos comentarios

Enlaces

Meta

photo Luis PeraltaEstado Jabber
Ziritione
Castellón Spain
39.997638, -0.064030

Sindica

Sindícame, por cortesía del subliminal Atom.

19 Junio 2008

you know...I've been thinking how "boring"? ( don't get offended ok?) your blog has become, you rarely update it and if so the updates are sooooooo technical! ;)

Esto es lo que me dice una amiga. Y yo pienso: tampoco es tan tan técnico :P Pero sí que es verdad que el ritmo de actualización deja mucho que desear y soy totalmente consciente de ello. Es cierto que paso temporadas absorto por temas de trabajo, pero ni de lejos es la única razón. Hay algo también de pudor en el asunto que no acierto a atinar qué es lo que es.

En tiempos solía hacer alguna entrada de resincronización (Syncing & Syncing otra vez) así que vamos a ver qué sale hoy.

En el piso tengo invitado, Miquel, que me está costando un poco educar, pero es un tío de lo más majo. Lo estoy entrenando ya para echar alguna partidilla al Unreal, que sigo teniendo mono de vez en cuando (y más después de haber encontrado el cd con el juego en castellano, que un «disparo a la cabeza» nada tiene que ver con un «head shot»).

Por otro lado, las obligaciones en la ciudad que me vio crecer me acechan: que si dar de alta el agua, la luz (en Iberdrola siguen siendo inútiles), los muebles, las lámparas. Vamos, que estoy hecho un manitas y un as del taladro (y de ahí el twitt del taladro con percutor, qué maravilla hoygan). Este fin de semana se supone que es el último que voy a tener que coger el autobús a Castellón en una buena temporada, que estoy un poco hasta el gorro. Lo bueno de volver tan a menudo es que al final acabas encontrándote a todo el mundo, incluso a aquellos que no veías cuando vivías ahí.

Y en 11870.com hemos estado liados, muy liados, con la receta mágica para conquistar el mundo, que ya ha dejado de ser secreto (pero hay que buscar). Ha sido una iteración más larga de lo que me habría gustado pero no nos podemos quejar del resultado: va todo como la seda. Lo que no fue como la seda fue mi cuerpo al día siguiente, que sufrió las consecuencias del cansancio del susodicho fin de semana en la costa, la subida a producción y el alcohol todo a la vez. Vamos, resacón al canto el martes. El calendario a partir de ahora lo tengo un poco difuso, aunque hoy me ha dado para jugar con OEmbed (qué gran idea) y para que un compañero, del que no daré su nombre, me pida unas bragas firmadas.

Los proyectos personales los tengo semi aparcados por falta de tiempo o por cambio de intereses. Lost está más que muerto después de haber migrado yo a iPhone, así que dejo la programación con Python y S60 hasta nuevo aviso. La vaca, el otro proyectillo, va avanzando muy sigilosamente y, en el momento que tenga un fin de semana tranquilo de por medio, le daré un buen empujón.

Nada, a ver si me vuelvo a aficionar a esto...

16 Marzo 2008

El tener una API en 11870.com permite, entre otras cosas, el prototipado rápido de chorradas varias sin mucho esfuerzo. Así que hoy me ha dado por probar un poco otra API: Google Chart API (API de gráficas de Google) y que menos que explotar algún dato de los que hay en 11870.com. Ya se sabe, una imagen vale más que mil palabras, así que me he decidido a pintar las ciudades donde tengo sitios guardados.

Podría haber manejado a pelo la API de Google pero, puestos a probar, me he tirado a Python Google Chart que ofrece una interfaz para Python bastante cómoda. Lo primero que ha habido que hacer es descargar la lista de mis sitios:

import httplib2
import feedparser

def get_oos_entries(slug):
    user = "luis@XXXXXXX"
    key = "XXXXXXX"
    base_url = OOSURL + "/sites/" + slug
    
    entries = []
    
    h = httplib2.Http()
    h.add_credentials(user, key)
    next_url = [base_url]

    while len(next_url) == 1:
        base_url = next_url[0]
        r, c = h.request(base_url)
        feed = feedparser.parse(c)
        entries.extend(feed.entries)
        next_url = [i.href for i in feed.feed.links if i.rel == 'next']
        
    return entries

La lógica puede parecer un poco difusa, pero es simplemente porque el feed de resultados de nuestros sitios está paginado y los necesitamos todos. El cómo conseguir la key está documentado en 11870.com API authentication. Una vez con los sitios, tenemos que saber cuántos sitios hay por cada localidad o área geográfica:

from operator import itemgetter
from itertools import groupby

def do_chart_input(entries, field, other_threshold=None):
    f = itemgetter(field)
    lentries = [entry for entry in entries if entry.get(field, None)]
    sorted_entries = sorted(lentries, key=f)
    res = {}
    others = 0
    for k, g in groupby(sorted_entries, f):
        num = len(map(f, g))
        if other_threshold is not None and num / float(len(lentries)) < other_threshold:
            others += num 
        else:
            key = k + u' (' + str(num) + ')'
            res[key] = num
    
    if other_threshold is not None:
        res['Otros (' + str(others) + ')'] = others
        
    return res

A este método se le pasan las entries obtenidas con get_oos_entries, el campo sobre el que realizar la agrupación y si queremos que aquellas agrupaciones que no superen un cierto umbral se agrupen bajo un Otros. En el caso de mis ciudades, hay un montón de ellas donde sólo tengo un sitio, por lo que la gráfica salía muy muy fea si no aplicaba el filtro con umbral. El parámetro field sirve para determinar sobre qué elemento de cada entrada realizamos la agrupación y así conseguimos que el método sea lo suficientemente genérico como para calcular los datos sobre cualquier tipo de área (país, ciudad, barrio, etc...). El cuerpo principal de nuestro programita sería tal que así:

if __name__ == '__main__':
    entries = get_oos_entries('peralta')
    res = do_chart_input(entries, 'oos_locality', 0.03)
    chart = PieChart2D(600,375)
    chart.add_data(res.values())
    chart.set_pie_labels([i.encode('utf-8') for i in res.keys()])
    chart.set_title('mis ciudades en 11870.com')
    chart.download("/tmp/x.png")

Y el resultado:

Si quisiéramos pintar los barrios de manu, modificariamos el cuerpo principal tal que:

entries = get_oos_entries('manueltxo')
    res = do_chart_input(entries, 'oos_subdependentlocality', 0.03)

Y el resultado:

De aquí a hacer una interfaz web para mostrar estas imágenes a partir de cualquier usuario hay 15 minutos, pero se queda como ejercicio ;)

10 Marzo 2008

Podría contaros cómo me fue el fin de semana pasado por Múnich, disfrutando de la Starkbierfest (y más cosas ;) en la reunión erasmus anual. O de cómo la vuelta al trabajo fue hardcore pero se disfrutó con sus penas y glorias para conseguir poner en producción lo que pusimos. O de cómo llegamos al clímax (al menos yo) en la fiesta de aniversario. Pero no.

Puestos a escribir algo, prefiero expresar mi admiración por el valor de Sandra Carrasco, que estando lo jodida que estaba después de que dos colgados mataran a su padre, es capaz de hacer una declaración de principios y sacar pecho. Parece mentira, pero el valor es una cualidad poco considerada entre algunos... los que no lo tienen.

24 Enero 2008

... pasarlo bien ;)

21 Diciembre 2007

Curioso me ha parecido que Soitu dedique una de sus primeros posts en su blog, cuando ni siquiera han salido todavía, al software libre. Ojo, que no me parece curioso que lo usen, sino que dediquen el post.

En su lista de razones para declarar su amor, hay más de una bien curiosa y que dice mucho del equipo técnico que hay detrás («Porque somos gente de UNIX» o «Porque hay mucha gente lista y de la que aprender ahí fuera»).

Nosotros, en 11870, no hemos hecho todavía una declaración por el estilo, pero la estoy echando de menos ya.