Foto interesante: Chicago luz

Fotos — Martes 31 de Agosto de 2010, 19:43

Como dice el título, Chicago. Marzo del 2008, un frio de cagarrrrrrrrse, esperando el tren en la plataforma elevada para volver al hotel. El viaje que contextualiza la foto: PyCon USA 2008. La foto no fue demasiado complicada, una larga exposición buscando algún juego de contrastes entre lo oscuro de las vias y el cielo atrás (las primeras parecen apuntar a lo segundo), lo muy brillante de las luces, y el punto medio en los edificios.

Chicag luz

Las otras fotos interesantes hasta ahora, acá.

Analizando la memoria en Python

Python — Viernes 20 de Agosto de 2010, 19:32

Estoy haciendo un análisis de la memoria del cliente de Ubuntu One (particularmente unos módulos que conforman el SyncDaemon propiamente dicho), y me pareció tan copado que muestro acá parte de eso (aprendí el 99% de esto gracias a Guillo).

El análisis se basa en usar Heapy. Si a ubuntuone-client se lo levanta con --debug-heapy_monitor, el mismo hace (sacando el manejo de error):
import guppy.heapy.RM
guppy.heapy.RM.on()
Nada más. Entonces, lo ejecuté, y lo llevé a un estado en donde quería probar un par de cosas.

En otra terminal, ejecuté:
python -c "from guppy import hpy; hpy().monitor()"
Y eso me abrió una linea de comandos a través de la cual me conecté a mi programa Python que estaba ejecutando en la otra ventana (sí, a SyncDaemon):
<Monitor>
*** Connection 1 opened ***
<Monitor> lc
CID PID  ARGV
  1 4451 ['bin/ubuntuone-syncdaemon', '--debug-heapy_monitor']
<Monitor> sc 1
Remote connection 1. To return to Monitor, type <Ctrl-C> or .<RETURN>
<Annex> h

Documented commands (type help <topic>):
========================================
close  h  help  int  isolatest  q  reset  stat

<Annex> stat
Target overview
------------------------------------
target.sys.executable   = /usr/bin/python
target.sys.argv         = ['bin/ubuntuone-syncdaemon', '--debug-heapy_monitor']
target.wd               = /home/facundo/canonical/u1-client/aq-memory-improvements
target.pid              = 4451
------------------------------------
Abrí una consola interactiva, y le dije que me tomara un snapshot del heap:
<Annex> int
Remote interactive console. To return to Annex, type '-'.
>>> h1 = hp.heap()
Luego hice tiré un archivo con contenido a Ubuntu One, volví a pedir el heap. Y miré las diferencias:
>>> h2 = hp.heap()
>>> h2.diff(h1)
Summary of difference operation (A-B).
        Count     Size
  A    204310 17394824
  B    204296 17393604
  A-B      14     1220  =   0.00701 % of B

Differences by kind, largest absolute size diffs first.
 Index  Count     Size  Cumulative  % of B Kind (class / dict of class)
     0      3      468       468   0.00269 str
     1      2      272       740   0.00425 dict (no owner)
     2      2      152       892   0.00513 ubuntuone.syncdaemon.marker.MDMarker
     3      1       92       984   0.00566 ubuntuone.syncdaemon.action_queue.Upload
     4      1       56      1040   0.00598 unicode
     5      2       56      1096    0.0063 ubuntuone.syncdaemon.logger.mklog
     6      1       52      1148    0.0066 ubuntuone.syncdaemon.action_queue.MakeFile
     7      1       36      1184   0.00681 types.MethodType
     8      1       36      1220   0.00701 ubuntuone.syncdaemon.sync.FSKey
     9      0        0      1220   0.00701 dict of ubuntuone.syncdaemon.event_queue.MyReader
    10      0        0      1220   0.00701 ubuntuone.syncdaemon.event_queue.MyReader
Seguí haciendo unos experimentos, y llegó un punto en que ciertos elementos no deberían estar más en memoria, pero estaban. Lo más piola es que pude ver dónde:
>>> markers = h5[39]
>>> markers
Partition of a set of 241 objects. Total size = 18316 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0    241 100    18316 100     18316 100 ubuntuone.syncdaemon.marker.MDMarker
>>> markers.referrers
Partition of a set of 2 objects. Total size = 6332 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1  50     6280  99      6280  99 dict (no owner)
     1      1  50       52   1      6332 100 collections.deque
>>> markers.referrers[0].referrers
Partition of a set of 1 object. Total size = 136 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1 100      136 100       136 100 dict of ubuntuone.syncdaemon.action_queue.DeferredMap
>>> markers.referrers[1].referrers
Partition of a set of 1 object. Total size = 520 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1 100      520 100       520 100 dict of ubuntuone.syncdaemon.file_shelf.LRUCache
El segundo es un caché, y está todo bien, está acotado y cuando se suelte, se volarán. Pero el primer es un leak (del código nuestro, no de Python), y me confirmó lo que yo había visto por inspección del código.

Buenísimo el Heapy, :D

Arrancamos con las charlas en La Tribu

Python — Lunes 16 de Agosto de 2010, 20:37

Las dos primeras charlas ya fueron el mes pasado.

La primera fue "Introducción a la Programación", charla que estrenaba completamente, y que implicaba la dificultad adicional del tema: no era Python, era "programar", un tema difícil de explicar, y más aún de mostrar en slides para un público masivo.

La segunda fue "Introducción a Python". Aquí yo dí la misma charla de siempre, pero en muchísima más profundidad. Tomás Zulberti completó al final hablando sobre la Biblioteca Estándar, y Diego Mascialino cerró con un ejemplo de procesamiento de números.

Las dos charlas fueron un éxito bárbaro: tuvimos un lleno completo en el aula, ¡la gente se amontonaba en el pasillo! Y lo mejor, es que se fueron todos contentos, :D

Los slides y los videos de los dos días están en la página de las charlas , así como también la planificación para el resto del año.

Este sábado, tenemos "Introducción al Desarrollo Web I", por Alejandro J. Cura, a la mañana de 10:30 a 12:30, y "FooBar (virtualenv, buildout, nose)", por Roberto Alsina, a la tarde de 13 a 15 horas. La entrada es libre y gratuita. Se pasará una gorra voluntaria durante los cursos para hacer frente a viáticos y gastos generales.

Vengan con tiempo, para conseguir buenas ubicaciones. Los esperamos en La Tribu, Lambaré 873, Ciudad de Buenos Aires.

Felipe Ramón

Música — Jueves 12 de Agosto de 2010, 00:18

Un celular que reproduzca mp3s, fueron algo como $700 (no me acuerdo bien...).

Tener una canción copada como ringtone, nada.

Ver que tu hijo se pone por motus propio a bailar Los Ramones, no tiene precio, :D

Click para ver el video

Aclaración, por las dudas: Felu no se llama Ramón...

Fotos interesantes

Fotos — Domingo 08 de Agosto de 2010, 18:27

Compré mi primer cámara digital allá por el 2005, una Fuji FinePix A350 (la cual hoy en día ha superado ampliamente las treinta mil fotos sacadas).

En algún momento me empezó a parecer interesante sacar algunas fotos. No es que iba con la cámara por ahí, cual cazador de imágenes, tratando de sacar todas fotos artísticas, pero había momentos, lugares, o cosas, que hacían que quisiera sacar la foto de alguna manera que sólo se puede sacar si uno sabe sacar fotos, :)

No estudié fotografía formalmente, pero leí algunos documentos y cansé a preguntas a gente que sabe más que yo en el tema, y comencé a entender un poco de qué va la mano.

Rápidamente me di cuenta que esa cámara me quedaba corta en muchísimas situaciones, y como a esa altura ya la tenía recontra amortizada, empecé a averiguar para comprarme algo que me permitiera jugar más y mejor. Luego de mirar y mirar qué había y qué tenían otros, tomé la decisión de que no quería una cámara reflex digital, porque aunque me permitían sacar mejores fotos, tenían dos contras importantes: son caras y yo no había tomado la decisión de sacar fotos en serio o estudiar fotografía... es más, aún no la tomé..., y son grandes, tan grandes que no se pueden llevar en el bolsillo de una campera, o en una riñonera, etc.

Encontré (bah, un compañero de Ericsson me recomendó) la Canon PowerShot G10: no es reflex, y el lente no es el que se puede encontrar en una cámara más grande, pero después de eso me da todo lo que yo necesito (hoy) de una cámara, a un precio intermedio, y con un tamaño super piola.

Toda esta intro es para comentarles que decidí elegir algunas fotos interesantes de todas aquellas que he tomado con ambas cámaras.

Son fotos que no serán la gran cosa, pero en las que he buscado algo, un efecto, mostrar alguna cosita, jugar con alguna luz o la ausencia de ella, etc.

Estas fotos las voy a ir poniendo acá, comentando un poquito sobre las mismas. Y las voy a ir agrupando también en Flickr (puse este enlace en la barrita de la derecha).

Cabe acotar que estas fotos NO están postprocesadas de ninguna manera, más allá que algun recorte o cambio de tamaño. Quizás en el futuro juegue con cambiar colores, o brillos, o lo que sea, lo comentaré en la foto, pero a priori son todas como salieron de la cámara.

Arrancamos con una que fue complicada:

Luis Longhi y su bandoneón

El de la foto es Luis Longhi, de Demoliendo Tangos, cuando festejaron su décimo aniversario en el Teatro Moliere. Fue complicada porque obviamente él se estaba moviendo todo el tiempo, y la iluminación era poca y difusa, así que tuve que jugar un rato para encontrar algo interesante.

Metiendo la uña del pulgar

Software — Jueves 22 de Julio de 2010, 17:00

"Uña del pulgar", o thumbnail es una versión reducida de una imagen, usada para ayudar a su organización y reconocimiento. En la era de las imágenes digitales, los motores de búsqueda visuales y los programas para organizar imágenes normalmente hacen uso de los thumbnails, así como los sistemas operativos y entornos de escritorio recientes [-]

Hace unos meses mandé a digitalizar unas diapositivas que tenía mi familia. Un par de días atrás empecé a procesarlas, usando el JBrout para agregarle los tags indicando metadata de la imagen (lugar, año, gente que aparece, etc.).

El problema que tuve es que cuando abría con el JBrout fotos que había sacado yo, las veía perfectamente, pero cuando abría las diapositivas, veía una "X" fea que no me decía nada. No tardé demasiado en darme cuenta que el problema era que el JPEG no tenía adentro el correspondiente thumbnail.

Entonces, ¿cómo les metí el thumbnail a cada una?

Luego de buscar un rato por la web (pensé que tenía que haber algún programa que lo hiciera solo y masivo), encontré esta forma (lo más probable es que hayan mil más...).

    convert foto_original.jpg -thumbnail '200x200>' -unsharp 0x.5 thumbnail.jpg

convert es uno de los utilitarios de la fantástica ImageMagick, toma mi foto_original.jpg y me deja thumbnail.jpg. El -thumbnail le dice que voy a generar justamente un thumbnail, lo cual aparte de cambiar el tamaño hace otras cosas (por ejemplo, le saca toda la metadata interna, para que ocupe menos). El '200x200>' es una notación de ImageMagick que indica que la imagen resultante tiene que caber en una zona de 200 por 200 (o sea, me la reduce manteniendo el factor de forma hasta que el alto o el ancho ocupen como mucho 200 pixeles). El -unsharp 0x.5 lo recomiendan para mejorar la visualización de la imagen pequeñita. En esta página tienen otros detalles y temas a considerar al generar thumbnails (que no se aplican en mi caso).

Luego, para poner esa nueva y pequeña imagen dentro de la original, utilicé otro utilitario:

    exiftool '-ThumbnailImage<=thumbnail.jpg' foto_original.jpg

No hay demasiado que explicar en este caso.

Luego de verificar que todo funcionó correctamente, pasé a trabajar todas las diapositivas en masa. Los archivos tenían esta estructura: tres directorios CajaA, CajaB y CajaC (correspondientes a las tres cajas de diapositivas que mandé a digitalizar), con archivos adentro tipo a001.jpg, b033.jpg, etc.

Obviamente no iba a ejecutar esos dos comandos uno por uno para cada imagen, así que pasé a hacer uso del poder de bash, y escribí en la terminal:

    for foto in `find -name "????.jpg"`; do
         echo $foto;
         convert $foto -thumbnail '200x200>' -unsharp 0x.5 $foto.thumb;
         exiftool '-ThumbnailImage<='$foto.thumb $foto;
    done;


Basicamente, un loop sobre todas los archivos, haciendo un echo para ver qué procesaba, más los dos comandos anteriores.

Esto me dejó todo procesado, pero medio sucio, ya que por cada imagen tenía un .thumb, y además un _original que deja el exiftool. Así que procedí a borrar todo eso:

    find -name '*.thumb' -or -name '*_original' | xargs rm

O sea, le dije a find que encuentre todos los archivos que quería borrar, pero en lugar de mostrarlos por pantalla, se los pasé a xargs que los fue tomando y aplicando el rm para borrarlos.

Resultado final: tengo todas mis diapositivas con un thumbnail adentro. Y de paso aprendí un par de utilitarios nuevos, y algunas otras cositas.

Charlas Abiertas de Python en La Tribu

Python — Viernes 16 de Julio de 2010, 20:13

Python Argentina y Colectivo La Tribu se enorgullecen en presentar el Ciclo 2010 de Charlas Abiertas de Python.

Distribuidas a lo largo de varios sábados del segundo semestre del año, cubren temas desde lo más principiante a temas muy avanzados, cerrando incluso con un taller.



Las charlas serán dadas en La Tribu, Lambaré 873.

La entrada es libre y gratuita. Se pasará una gorra voluntaria durante los cursos para hacer frente a viáticos y gastos generales.

No hace falta registrarse, pero vengan temprano para asegurarse un lugar porque los cupos son limitados.

Para más información y actualizaciones, pueden consultar la página oficial de las charlas.

Por favor ayuden con la difusión! Si quieren pueden imprimir este folleto y pegarlo en vuestros lugares de trabajo y/o estudio. Muchas gracias!

Grabando conferencias

Software — Miércoles 14 de Julio de 2010, 00:37

Es recurrente en todos los eventos nuestros y de amigos el tema de la filmación.

En mi personalísima opinión, el peor pecado en este tema es que se filmen todas las charlas y que luego no se procesen los videos y eso se muera, o se entregue un año después. También es malo que se filme pero que luego no se escuche lo que dice el disertante, o que no se vea, etc.

Creo que la mejor (y casi única) manera de que "filmar las charlas de un evento" sea algo exitoso (obviamente sin gastar cantidades obscenas de dinero como podría/puede hacer la PSF o cualquier evento que maneje presupuestos de cientos de miles de dólares), es lo siguiente:

- Una cámara, manejada por un humano (de acá en más, el "Operador"), en cada aula/lugar donde se dé la charla.

- Un micrófono, ya que sino el audio es feo. Puede ser normal o corbatero, pero tiene que haber alguno.

- Un feed con la imagen que está mostrando la presentación.

La imagen de la cámara, el audio (o la imagen con el audio desde la cámara, no sé), más el feed con la presentación van a un "Elemento Mezclador" (más sobre esto luego), que es controlado por el mismo humano que maneja la cámara (sí, el Operador). Este elemento mezclador basicamente tiene cuatro posiciones:

- Pantalla completa "cámara".

- Pantalla completa "cámara", con cuadrito más pequeño (tipo "picture in picture") del "proyector".

- Pantalla completa "proyector", con cuadrito más pequeño (tipo "picture in picture") de la "cámara".

- Pantalla completa "proyector".

Ir pasando entre los cuatros es sencillo, y el Operador va prestando atención a la charla y decide al vuelo qué es más interesante mostrar.  El Elemento Mezclador graba directamente el video final teniendo en cuenta esto.

De esta manera, el único trabajo que hay que hacerle al video luego de la conferencia es:

- Ponerle una pantalla inicial con el nombre de la persona, título de la charla, etc. (trabajo humano, pero trivial).

- Reencodear el video a un formato piola para distribuir (lleva tiempo, pero es todo CPU).

- Subir los videos a algún lado (para esto se necesita upload)

Entonces... ¿para qué toda esta explicación? Bueno, la clave de todo esto es el "Elemento Mezclador".

Preguntando en PyAr me recomendaron dvswitch. Me contaron que la gente de Debian hace exactamente lo que cuento todos los años en la DebConf. Para ello desarrollaron DVSwitch hecho en C/C++. Tiene sus limitaciones ya que sólo trabaja con formato DV; pero es lo que necesito.

Habiendo elegido la herramienta, aparecen otros frentes algo complejos.

Como dije, necesitamos un stream de audio, y dos de video. Y dvswitch necesita que los dos stream de video sean en formato DV. El de la cámara que enfoca al disertante es sencillo: la enchufamos por el puerto FireWire (IEEE 1394) y ya está. ¿Y el otro?

Veo tres alternativas:

- Tomamos la salida de video del proyector. Esta es la más piola porque todo lo que haya que cablear o configurar se hace antes. El problema es que se necesita alguna especie de conversor para meterlo en la computadora (o que la misma tenga entrada de video).

- Filmamos la pantalla proyectada con otra cámara. Esta tampoco necesita configuración previa, pero la calidad seguramente será menor. Obviamente se necesita una segunda cámara de video, pero el principal problema que encuentro acá es que se necesitan *dos* entradas FireWire en la computadora.

- Levantamos lo proyectado directamente de la computadora del disertante. No es trivial pero tampoco nada del otro mundo... levantamos un VNC server en la máquina del que da la charla, y en nuestra computadora de control hacemos:

  vncrec -depth 16 <maquinadisertante> -record /dev/stdout | transcode -x vnc -i /dev/stdin -y xvid | ffmpeg -i - - target ntsc-dv salida.dv

En el ejemplo, puse salida.dv, que es un archivo; en la vida real habría que mandar eso a dvswitch. El problema de esta solución es que hay que configurar la computadora del disertante, y eso lleva tiempo. Además, depende de la calidad de la red entre ambas computadoras, lo cual es algo a tomar en cuenta si ambas están conectadas a un switch lento, o por wifi.

En fin... como mi laptop no tiene entrada de video y tiene una sola entrada firewire, voy a seguir experimentando con la tercer solución.

Cualquier idea es bienvenida.

Sprint en Londres, segunda parte

Viajes — Jueves 08 de Julio de 2010, 00:35

El jueves fue un día distinto, porque en lugar de ir a la sala de conferencia del hotel como hasta ahora, pasamos el día trabajando en las oficinas de Canonical de Londres.

Canonical tiene todo el piso 27 en la torre Millbank, lo que hace que la vista sea interesante....

Vista desde la oficina

Durante el día nos dividimos en tres grupos, y la actividad fue más de aprovechar la oportunidad de que estábamos todos cara a cara para atacar algunas situaciones y decidir qué íbamos a hacer con determinados temas. Laburar distribuidos está bueno, pero estar en la misma habitación y poder utilizar un pizarrón facilita muchísimo algunas charlas.

Mi grupo en particular terminamos de ajustar algunos detalles en un cambio importante que se viene para el cliente de Ubuntu One (Generations), y a la tarde estuvimos entendiendo Cassandra y tratando de ver si nos sirve, y cómo nos sirve.

A la noche el plan era ir a comer pizza a un lugar que estaba al ladito del hotel, pero nos dijeron que la calidad no era la mejor, y nos recomendaron una pizzería estilo italiana que estaba (como ya era costumbre), a más de media hora de paseo. Como a esta altura ya no nos importaba si caminábamos mucho o poco, decidimos ir igual, y la decisión fue acertada, la pizza estaba rica, y el lugar era interesante, con mozas italianas, y un estilo sencillo y sin pretensiones.

Pasear por el soho de Londres un jueves a la tarde no era sencillo: había mucha gente. Especialmente en los bares, y no precisamente adentro de los mismos, porque es costumbre que la gente compre la cerveza y salga a la calle a tomarla. Incluso esto es favorecido porque los bares arman pequeñas barritas donde la gente puede apoyar los vasos, así que cada vez que uno pasaba por un pub (¡y no es que haya pocos!), había una marea de personas tomando y charlando en toda la calle.

Vida nocturna

Incluso después de cenar, cuando volvimos caminando al hotel (con un par de vueltas incluidas porque algunos querían tomar un helado), siendo alrededor de las once de la noche, las calles estaban bastante llenas y activas. Esto fue una grata sorpresa, especialmente luego de pasear en Bélgica y ver que te cierran todo tempranísimo.

El viernes era el último día, y ya se notaba demasiado el cansancio general. La mañana fue de charlas normales, así como parte de la tarde. Completamos el día con un ejercicio de qué nos había gustado (y qué no) durante la semana, como para mejorar la organización a futuro, y volvimos al hotel ya que seis y media partíamos para una cena grupal de todo el equipo. Esto era en un lugar también estilo italiano, pero de comidas varias, las cuales estaban muy bien (pedí un vitello tonello de entrada, y unos spaghettis con almejas de primer plato, sin segundo plato, y sólo un limoncello de postre), aunque realmente el lugar en sí no era piola: no estaba preparado para que vayamos alrededor de treinta personas, estábamos todos demasiado amontonados, y el nivel de ruido era muy alto.

Así que aunque no puedo decir que no lo disfruté, cuando el primer grupo decidió arrancar de vuelta, me sumé al mismo. Volvimos en taxi Lucio, Rodrigo, Naty y yo. Muy locos los taxis ingleses, porque tienen mucho espacio atrás, con el asiento mirando para adelante puesto sobre el espacio del baúl, y asientos mirando para atrás contra el conductor, con lo cual van cinco personas cómodas sentadas unas frente a otras.

Cena grupal

Lucio se tenía que ir a lo de su hermana, porque a la madrugada partían de vacaciones, así que estuvimos charlando en nuestra habitación mientras él preparaba las cosas. Luego me fui a la habitación de Naty, que se sentía súper mal del estómago y le hice el aguante porque estaba viniendo una amiga de ella desde Madrid, la cual debía llegar tipo once de la noche, pero le fueron retrasando el vuelo y terminó llegando a Londres pasadas las tres de la mañana. Así que mientras Naty trataba de dormir y aguantar los retorcijones, yo me quedé atento al su celular para ver cuando llegaba la amiga y programando algo que había empezado esa misma tarde y quería terminar pronto: recorrí el directorio de Canonical (en donde están listadas las personas con datos como nombre, foto, equipo, posición, etc.), y armé un organigrama gráfico. Para esto me tuve que autenticar por OpenID al sitio interno de Canonical, ir bajando todas las páginas HTML, extraerles la data, armar un archivo DOT a mano el que luego se usa para generar el organigrama en sí en formato SVG, y al que luego abro y le meto las fotos de las personas sobre la cajita con nombre y posición. Todo hecho desde Python, por supuesto, :)

Finalmente esta chica llegó, así que cerca de las cuatro de la mañana nos tomamos un taxi con Naty para irla a buscar a la estación de tren. La esperamos un par de minutos y volvimos al hotel, en donde me encontré con Guillo fumando afuera del hotel. Las chicas subieron a acostarse, y yo me quedé contándole a Guillermo lo del organigrama (ya le había comentado algo a la tarde porque le había pedido ayuda con lo de OpenID). A los cinco minutos subimos, y al sobre.

Pensé que el sábado me iba a costar horrores levantarme, pero no. Puse la alarma a las diez, pero a las nueve ya estaba despierto. Acomodé algunas cosas, bajé a desayunar, volví a la habitación y terminé de armar las valijas y me pegué un baño. Llevé las cosas a la habitación de beuno (después verán por qué) y bajé a hacer el checkout.

En seguidita partí hacia el London Eye al que Naty y amiga habían ido más temprano, y de ahí nos fuimos a pasear por la zona del Tower Bridge, uno de los puentes más famosos del río Támesis. Naty se seguía sintiendo mal pero pudimos pasear sin drama, hasta que volvimos al hotel que era la hora del partido.

Puente de la Torre

Nos juntamos un grupito de cinco o seis en la habitación de beuno, donde comimos algo, tomamos unos mates, y vimos el partido (perdimos, bú). También seguí laburando con eso del organigrama, hasta que se hizo la hora de partir. Alecu y yo dejamos a los chicos convenciendo a Naty que tenía que llamar a un médico, y arrancamos hacia el subte, luego hicimos combinación con el tren, y llegamos bien cómodos en tiempo al aeropuerto.

Esperas habituales, controles de seguridad, vuelo muy largo (¡qué bien que se come en British Airways!), pero dormí bastante, y llegué a casita con la familia, a la que extrañé un montón.

Las fotos de todo el sprint, acá.

Sprint en Londres, primera parte

Viajes — Viernes 02 de Julio de 2010, 16:21

Con motivo de una reunión de equipo (¡toda la gente de Online Services de Canonical!) arranqué para Londres el sábado a la mañana.

El avión salía al mediodía, así que preparé todo la noche anterior, de manera de levantarnos y salir, ya que Mónica y Felipe me llevaban al aeropuerto. Parte de la preparación de la valija fue más complicada... quise llevarme a Felu, pero al final me hicieron desistir...

Felipe en la valija

El vuelo estuvo muy bien, viajé con Martín y Alecu. Fue largo (16 horas en total), pero Martín (beuno) se cambió de asiento y nos charlamos todo hasta que el avión hizo la escala en San Pablo, donde se acercó Alecu y seguimos charlando. El segundo tramo, considerablemente más largo, lo distribuí entre charla, ver una peli, programar algo, y dormir algunas horas.

Aterrizamos el domingo tempranito, y mediante tren y subte llegamos al hotel un rato antes de las diez de la mañana. Hicimos el check-in, pero no teníamos habitación disponible todavía, así que nos fuimos a la habitación de Naty (que había llegado la noche anterior) y nos bañamos ahí.

Enseguida arrancamos con Naty y Alecu para Camden, una zona de Londres que es un mercado callejero grande, y estuvimos paseando como cuatro horas, viendo cosas, comprando algunos souvenirs, almorzando, etc.

Camden

A media tarde nos tomamos un bondi y nos acercamos a la zona de Picadilly Circus, donde nos encontramos con más gente. Entramos a un negocio de ropa deportiva porque Naty y Alecu querían comprar un par de cosas, pero me terminé comprando unas medias y un pantalón largo para jugar al tenis. Luego fuimos a una librería, y finalmente a una jueguetería inmensa, de tres pisos, donde tenían absolutamente de todo.

Volvimos al hotel con el tiempo exacto como para organizarnos para ver el partido de Argentina con México. La idea era cenar mientras mirábamos el partido, pero al final se juntó tanta gente en la habitación que sólo nos tomamos unas cervezas, y comimos después.

El lunes arrancamos bien temprano, y a las nueve estábamos en el piso -4 de otro hotel cercano, donde teníamos las salas para trabajar. Era un día sin laptops, con presentaciones y charlas toda la mañana. Después del almuerzo participamos en un juego en el que varios equipos recorrían la ciudad tratando de encontrar respuestas a unos acertijos. Mi equipo (y otro más) fallamos totalmente, porque leímos mal las instrucciones y arrancamos en otro punto y no donde debíamos, lo que hacía que la primer adivinanza fuese imposible de resolver. Igual nos divertimos, y caminamos como tres horas.

El juego terminaba en un bar, donde tomamos algo, y volvimos al hotel a eso de las siete de la tarde. Laburamos un rato en distintas cosas, mientras tomábamos unos mates, y luego partimos (¡caminando!) a un restaurant chino que quedaba como a 30 cuadras, pero lo valía: comí cosas raras y ricas. Volvimos caminando (sí, de nuevo) al hotel, pero en el medio paramos para tomar un helado, :)

Cenando chino

Al otro día también fuimos al otro hotel a trabajar, pero en esta oportunidad llevamos las laptops, y laburamos en distintos proyectitos de dos horas de duración cada una. La idea era meterle mano a distintas tecnologías para que todos las conozcamos más allá de la teoría (aunque no todos vayamos a laburar en ellas todo el tiempo). Lo que más me gustó fue usar CouchDB desde Python, y también trabajar con AMQP.

Luego de las seis volvimos al hotel pero en seguida partimos hacia un picnic donde iba a estar mucha gente de la empresa. Paramos en el medio a comprar algo de morfi en un supermercado, y llegamos luego de caminar como una hora (sí, seguimos caminando...). El picnic estuvo bien, y hasta jugamos un rato al fútbol en algo super caótico que incluía a más o menos veinte varones y cuatro mujeres de los cuales un 4% sabía algo de futbol, en una canchita provisoria armada entre los árboles...

Luego volvimos (nuevamente caminando) al hotel, me pegué un baño y me fui a la habitación de Naty, donde nos pusimos a armar una presentación que teníamos que dar al otro día. Pensamos que iba a ser sencillo y rápido, pero terminamos trabajando hasta las dos y media de la mañana :(, así que al otro día no podía despertarme para nada.

Encima el miércoles también era día sin laptops, así que eran todas presentaciones y charlas, y aunque había algunas interesantes, en otras no podía evitar cabecear del sueño. Con Naty dimos la lightning talk de Magicicada que habíamos armado, y también yo dí una cortita de Logs.

El día no ofreció mucho más, laburamos hasta tarde, cenamos, y a dormir!

Todo roto, todo

General — Sábado 19 de Junio de 2010, 15:39

Consejo: Nunca traten de upgradear el sistema operativo de un VPS que tienen contratado.

No funciona, por cosas que van más allá del OS en cuestión (uno de los detalles que ví en el mío, es que el /boot está vacío... nunca puede andar, :p).

¿Cómo lo sé? Porque lo intenté, e hice crema mi server.

Tenía backup, pero sólo de los datos. Esto significa que aunque tenía copias de lo más importante y realmente valioso, volver a hacer funcionar todo me llevó varias (varias) horas de trabajo de instalar y configurar cosas.

Lo último que acabo de arreglar: la posibilidad de dejar comentarios aquí en el blog. Con esto creo que ya está todo al 100% como antes.

Si encuentran algún otro detalle, me chiflan. ¡Gracias!

Comiendo zapallo con Felipe

General — Miércoles 16 de Junio de 2010, 04:59

Un momento con el hijo, que me encantó (click en la foto para ver el video).

Comiendo zapallo con el hijo

1 2 3 ... 38 39 40  Siguiente»

Powered by LifeType