June 10, 2011 at 5:34 pm
· 496 words (3030 chars) filed under academy, geek, procrastination, social networking
Primero lo primero, visita:
www.ciudadkexplicado.com.ar
A continuación la explicación de qué es eso.
Cada vez que voy al viejo continente redescubro la tele española. Está llena de programas de humor, muchos de ellos increíblemente graciosos, incluso cuando varias gracias se pierden por no ser local. La última vez que estuve ahí no fue la excepción. Santiago me habló de un programa llamado Ciudad K (sin relación con los K de acá).
Ciudad K es un ya finalizado show de 14 capítulos, dirigido por el genial José Antonio Pérez, que fusiona el humor y el geekismo de forma épica. En esta hipotética ciudad, los habitantes tiene un nivel cultural e intelectual sobresaliente y las situaciones son de lo más bizarras. Todos los capítulos se encuentran en línea y son altamente recomendables.
Les hablé de esta serie a muchos conocidos freaks/nerds/geeks, y con ellos solemos comentar algunos gags que allí aparecen. Así fue como hemos notamos que ninguno de nosotros entendía todos los chistes, dado que abarcan un amplio espectro entre física, tecnología, economía, cine, artes plásticas, psicología y otras ramas de la cultura y la ciencia. De hecho, rápidamente descubrimos que conversar sobre Ciudad K era una muy divertida forma de aprender nuevas cosas, especialmente en las áreas en las que uno es un completo ignorante.
Así fue como levanté www.ciudadkexplicado.com.ar, un espacio en donde espero que se pueda conversar sobre los temas que se tocaron en la serie mientras se aprenden cosas nuevas y posiblemente inútiles.
Este viejo procrastination project lo tenía pendiente desde hacía meses y lo que se ve (así de feo) es el resultado de un arrebato de aburrimiento y de las ganas de saber que tan lejos se puede llegar con Google Sites. Pasé por varios vericuetos técnicos que, supongo, explicaré en otro post.
PD: Lo lamento José, soy un tío :P
Permalink
February 9, 2011 at 3:55 pm
· 632 words (4120 chars) filed under geek, life, procrastination, python, social networking
Ocurre que soy realmente malo para recordar eventos. Muchas veces me comprometí a estar en dos lados simultáneamente y me olvido de hacer tal o cual cosa. Mi desorden se extiende a cosas repetitivas, como los cursos o cumpleaños. Para intentar apalear este mal, utilizo Google Calendar intensamente. Es por esto que intenté exportar las fechas de cumpleaños a mis calendarios. Pero cuando intenté hacerlo out-of-the-box me encontré con unos incordios:
- No hay forma de exportar solo un subconjunto de las fechas
- Con los cambios de DST, hay eventos que duran dos días
- Los eventos no son de días completos, sino que van de 12am a 12am
- No quedan como eventos editables normales
Los eventos se ven algo así:

Y la verdad que están horribles. Así que realicé estos 5 sencillos pasos:
Paso 1
Fui a los eventos de cumpleaños en mi perfil, donde puse exportar cumpleaños.

Así, facebook me proveyó una URL, que empieza con webcal://

Paso 2
Esta URL, reemplazando webcal por http, la utilicé para obtener los eventos, en formato CSV:
wget "http://www.facebook.com/ical/b.php?uid=2XXXXXX4&key=3XXXXXXX8" -O facebook.csv
Paso 3 (opcional)
Dada mi política de aceptar-todo-contacto en Facebook hay muchos eventos que no quisiera incluir en mi calendario. Por lo que generé una lista de los que sí quiero tener:
rgrep "^SUMMARY" facebook.csv > lista.txt
Y después borré de lista.txt aquellos que quería excluir.
Paso 4
Escribí el siguiente script:
#!/usr/bin/python
import datetime
import sys
print '''BEGIN:VCALENDAR
PRODID:localscript
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:
X-WR-TIMEZONE:America/Argentina/Buenos_Aires
X-WR-CALDESC:
BEGIN:VTIMEZONE
TZID:America/Argentina/Buenos_Aires
X-LIC-LOCATION:America/Argentina/Buenos_Aires
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE'''
day=datetime.timedelta(1)
fd = open( sys.argv[1] )
try:
mylist=open( sys.argv[2] ).readlines()
nolist=False
except:
nolist=True
va = False
person=""
for line in fd.readlines():
if 'BEGIN:VEVENT' in line:
person='BEGIN:VEVENT\n'
elif 'DTSTART' in line:
dateS=line.split(':')[1].split('T')[0]
date=datetime.date(int(dateS[0:4]),int(dateS[4:6]),int(dateS[6:8]))
tomorrow=date+day
person+='DESCRIPTION:Imported from Facebook\nSTATUS:CONFIRMED\nDTSTART;VALUE=DATE:%s\nDTEND;VALUE=DATE:%s\nTRANSP:TRANSPARENT\n' % (date.strftime("%Y%m%d"),tomorrow.strftime("%Y%m%d"))
elif 'END:VEVENT' in line:
person+='END:VEVENT\n'
if va:
print person,
elif 'SUMMARY' in line:
person+=line
va=nolist or line in mylist
elif 'DURATION' in line:
pass
else:
person+=line
print 'END:VCALENDAR'
El cual convierte los eventos de
facebook en eventos
lindos. Se ejecuta así:
./fb2gc.py facebook.csv lista.txt > miscumples.csv
El parámetro
lista.txt es optativo, si pasaste por el Paso 3.
Paso 5
El archivo generado se pueden importar en Google Calendar, en un calendario existente.


Y ahora, tengo agendados los cumpleaños de forma mucho más agradable.
Permalink
December 30, 2009 at 12:25 pm
· 151 words (878 chars) filed under procrastination, social networking, university, wtf?!
Hernán me pasó un excelente link de Linkedin (redundancia necesaria), la red social orientada a negocios y el mundo profesional, cuya captura reproduzco a continuación:

Mucho se me ha escuchado putear sobre el corporativismo en la universidad en este blog y otros entornos. Pero este
fallido es como demasiado :P
El tiempo de estudio es un bonus wtf (y yo que siempre pensé que mis 8 años de carrera habían sido demasiados)…
El borroneo sobre el nombre tiene como fin no darte el dato directamente, una situación parecida a la ocurrida acá. Ya sé que lo podés conseguir, bien por ti.
Permalink
November 24, 2009 at 1:22 pm
· 210 words (1214 chars) filed under planet, procrastination, python, security, social networking, sorry for my english
Este post también está escrito en español aquí.
Privacy at Facebook is heavy-duty. As a big fan of the Worlds Collide Theory I hate be tagged compulsively. I would like to select in which photos appear in my profile and feed. Since I couldn’t find that option in the setting menu, I looked for the answer in my favorite scripting language: Python.
This 60-lines-long script removes your tag from the latests photos where you has been labelled. You can download it from here. You may run it hourly (or every 15 minutes, or every 5 minutes, depends how paranoid you are) via cron or whatever.
Any improvement is welcome. It probably runs on Windows too. If you managed to do it, leave a comment for the others.
NEW VERSION! (available here).
Permalink
November 24, 2009 at 1:21 pm
· 228 words (1339 chars) filed under geek, planeta, procrastination, python, security, social networking
This post has been written in English too.
La privacidad en Facebook es un asunto complejo. Como gran suscriptor a la Teoría de Colisión de Mundos es que odio ser etiquetado en fotos de forma compulsiva. Me gustaría tener alguna forma de elegir en que fotos aparezco en mi perfil y actualizaciones. Dado que no pude encontrar tal opción entre la configuración, busqué la respuesta en mi lenguaje de scripting favorito: Python.
Este script de 60 lineas remueve tu etiqueta de las últimas fotos donde te hayan tagueado. Puede ser descargado desde aquí. Hay que correrlo cada hora (o cada 15 minutos, o cada 5, dependiendo de que tan paranoico seas) a través de cron o como sea.
Cualquier mejora es bienvenida. Posiblemente también corra en Windows. Si lograste hacer esto, deja un comentario que pueda serle útil a otros.
¡NUEVA VERSIÓN! (disponible aquí).
Permalink
February 14, 2009 at 7:38 pm
· 107 words (645 chars) filed under blogging, security, social networking
Dado que mi status de Facebook degeneró en microblogging, instalé (y modifiqué levemente) este plugin de Brian Goad.
Mi versión modificada puede bajarse de aquí y permite folding y publicar el RSS del status para sindicar. Esta última opción hace pública tu key. Siendo que es obvio que tu status es público y que no podes usarlo para cosas sensibles.. ¿a alguien se le ocurre las consecuencias que esto conlleva?
Permalink