jueves, 5 de diciembre de 2013

Mi año segun Spotify

Gracias a un enlace de Mauro @fotomaf encontré este resumen de lo que he oido durante este año 2013 en Spotify.


Aunque no me extrañan mucho los resultados, si me sorprende que mi canción mas oída sea Deli de los turcos Mor Ve Ötesi. Es la canción con la que representaron a su pais en Eurovision y que comenté en su dia en mi antiguo blog, Coridio como demasiado buena para eurovisión. Y no es porque no la haya oido, sino porque no creía que tanto.

Tambien me sorprende bastante el artista número 1. Yo habría dicho que J.S.Bach pero claro, hay que repartir los puntos entre el propio Malikian,  Glenn Gould, András Schiff y varias orquestas.

El álbum mas escuchado no me sorprende nada: Hace relativamente poco (un par de años) descubrí Kind Of Blue de Miles Davis, al que tampoco había prestado mucha atención hasta ese momento. Un álbum absolutamente imprescindible. Creo que no me cansaré nunca de oir ese So What que abre el disco, con esas melodías entrelazadas entre el piano, el contrabajo y como los platos de la batería dan vida a esa maquina que comienza a moverse. Imprescindible. Como el segundo tema, el mítico blues Freddie Freeloader, o cualquier otro de los que componen este disco en el que, a saber porqué, hay algo mas que música: hay mágia.

Si me sorprende la lista Pasa sin Llamar de Nazaret Escobedo (@nazaret), porque recuerdo haberla oido unas cuantas veces a principio de año... pero no tanto. Seguro que es mi memoria la que miente, no las estadísticas.

Por último, los que son una sorpresa más o menos esperada son Corizonas. Curioso que estén en la lista de los mas oidos en el año (¡con 4 temas!) cuando hasta el concierto homenaje a los Beatles al que fuí invitado por El Pais no los conocia (para ser exactos: alli conocí a Los Coronas, y al dia siguiente, en Spotify, a Corizonas). Supongo que eso da una idea de lo mucho que he estado oyendo su disco The News Today y en especial The Falcon Sleeps Tonight.

Supongo que por poco (la verdad es que echo de menos unas estadísticas mas extensas) no ha entrado en la lista algo del disco It's Flamin' Groovy de Chris Wilson (cantante y guitarrista en los '70 de los míticos aunque poco conocidos Flamin' Groovies), que tambien descubrí hace un par de semanas y no he parado de oir.

¿Quieres conocer también tu música mas oída en Spotify en 2013?. Desde la página de estadísticas globales del año de Spotify puedes conseguirlo.

Y si quieres seguir alguna de las listas que tengo creadas, te recomiendo la de No hay excusas para no escuchar... donde voy recopilando mis canciones favoritas que no tienen porque ser especialmente conocidas. O si. Y, por supuesto, mis temas marcados como favoritos.











sábado, 23 de noviembre de 2013

Code Club





Ayer tuve la suerte de poder asistir a una sesión de Code Club gracias al aviso de Marcos @chavarri. Hace algún tiempo en el colegio de mis hijos habían tenido alguna experiencia similar con la organización Con Mas Futuro (tambien aquí empieza a haber división de fuerzas) pero los horarios infantiles suelen ser matadores con las actividades extra escolares, los deberes, las actividades deportivas del fin de semana...

Pero esta vez el horario mas o menos coincidia y, aunque a la carrera, fuimos capaces de llegar a tiempo al taller de programación con Scratch para niños que organizaba el Code Club de España en Tetuan Valley en la calle Almagro de Madrid.

Empezando el taller. Foto de Tetuan Valley


El Code Club es una organización de voluntarios nacida en el Reino Unido hace pocos años con la motivación de enseñar las bases de la programación a los mas pequeños en la convicción de que la programación de ordenadores puede ser una actividad divertida desde temprana edad, y cada vez mas va a ser una necesidad para las actuales generaciones jóvenes. No se trata de que todos sean programadores, pero de lo que no cabe duda es que la interacción con los ordenadores va a ser una constante en sus vidas, y conocer los fundamentos de como funcionan estas máquinas solo puede ser ventajoso. Aparte, claro está, de que pensar en como resolver problemas lógicos es un excelente entrenamiento mental.

En España, el Code Club (en twitter: @CodeClub_es) está comenzado su labor y buscado voluntarios para dar los talleres introductorios. Personalmente me encantaría tener un poco de tiempo para poder hacer esta labor que creo muy necesaria. Veremos.

El taller fué dirigido por Ivan Pedrazas (@ipedrazas) con la colaboración de Ignacio Verona (@iverona) y se realizó utilizando la herramienta Scratch. Yo lo habia visto muy por encima alguna vez y no me había parecido gran cosa. Gran error por mi parte, porque la herramienta tiene casi todo lo que se puede desear para aprender casi todas las bases de la programación, desde las secuencias de control if, hasta bucles, verificaciones del entorno, objetos, eventos para cada objeto, mensajes entre los mismos... y todo ademas con un entorno inicialmente infantil que encanta a los niños pero que puede personalizarse hasta, por ejemplo, crear un Pacman completamente funcional (vale: no es igual que el original. Pero funciona razonablemente bien :-)).

Scratch se basa en arrastrar bloques de código (de forma que los niños apenas tienen que teclear nada) que se pueden encajar para formar secuencias de código. Así, tenemos por ejemplo bloques IF donde podemos incluir otros bloques de código. Las condiciones del IF son otros eventos predeterminados (si el gato protagonista se encuentra un determinado color en su camino, por ejemplo) que los niños puedes utilizar para experimentar muy fácilmente. El entorno de Scratch, ademas, puede personalizarse con sonidos o imágenes capturados sobre la marcha usando la cámara o micrófono del ordenador, lo que puede resultar muy divertido.


Importante: a los niños no hay que contarles todo lo que pueden hacer o todo lo que hay en pantalla o se aburrirán. Es mucho mejor dejarles que jueguen solos y hagan sus propios experimentos. Lógicamente, la ayuda de un adulto que pueda ayudar en caso de que el pequeño encuentre algún problema puede resultar decisiva.

Y otro punto a destacar de Scratch es que aunque hay versiones que se pueden descargar al ordenador para ejecutar offline lo mas habitual es ejecutarlo directamente en el navegador, creando una cuenta que nos permitirá guardar nuestros proyectos y compartirlos para que otros puedan ver como están hechos y aprender nuevos trucos. Por ejemplo, puedes ver los proyectos de demostración realizados por Iván para estos cursos.

En resumen, una excelente experiencia recomendada para casi todas las edades. Mi hija, con la que asistí, tiene casi 12 años, pero había pequeños de unos 7 u 8 años que aprendieron perfectamente todo lo que estuvimos viendo. No se si antes puede ser provechoso, estoy seguro de que tomándolo como el juego que es, la programación puede empezar incluso antes.







viernes, 1 de noviembre de 2013

Hackaton Tizen


El fin de semana pasado dormí poco. Muy poco.

Me había apuntado a un Hackathon promovido por Samsung e Intel para promover el nuevo sistema operativo para móviles Tizen que intentará competir en el mercado con Android y Apple.

Me sorprendió ver el número de personas que se habian apuntado, probablemente éramos unas 100 personas en el Tetuan Valley/ de la calle Almagro, repartidos entre gente que promovía una idea para desarrollar, programadores, diseñadores o gente con poderes especiales. Tras las presentaciones de las ideas de cada uno se prepararon los grupos de desarrollo para, durante el fin de semana, sacar adelante algunos proyectos para presentarlos el domingo a ultima hora.



El proyecto que presenté no contó con <modo eufemismo>muchos</modo eufemismo> apoyos asi que me planteé hacerlo en solitario. A ultima hora nos contaron muy por encima el framework de desarrollo basado en Eclipse y me fuí para casa para empezar el desarrollo.

Adolfo durante su presentación


Como mi aplicación (que mantendré de momento en secreto), iba de cierto tipo de relaciones con servicios de imágenes (instagram, flickr, 500px.. ) me dedique hasta tarde a investigar un poco sus APIs. Dormí unas horas y de buena mañana empecé la lucha con el IDE, basado en Eclipse. Pero la batalla no había hecho sino comenzar


El Eclipse se quedaba completamente frito cada vez que abria un asistente para crear proyectos. Intentandolo con el JDK que tenia, con el OpenJDK, con el ultimo, cambiando configuraciones en el Eclipse.ini.... no hubo forma. Si ya le tenia un poco de mania a Eclipse, desde ese dia, mas aún.

Intenté instalarlo en el viejo MacBook que tengo por casa. Tampoco hubo forma



Pasé por Tetuan Valley para hablar con la gente de Intel que estaban dando soporte técnico, pero lo unico que pude hacer fué obtener en ese sentido fué un nuevo SDK para probar en todas las plataforma.

Bueno... lo único no. Porque me esperaba la gran sorpresa de un dispositivo movil basado en Tizen para desarrolladores (aparentemente no sirve para hacer llamadas pero por lo demás funciona perfectamente)

A media tarde del sábado, empezaba a estar claro que no iba a tener forma de presentar algo, asi que opté por descansar un rato con la familia y hacer un ultimo intento por la noche.


Finalmente tuve que desistir de presentar aplicación pero al menos si que fui a la ceremonia de presentación de los proyectos. Algunos realmente interesantes, aunque no ganaran, como el de David (no me quedé con su apellido, twitter ni nada para volver a localizarle....seguro que nos volvemos a encontrar) con una idea -y su implementación- mas que interesante para usar el movil como mando universal para consolas.

Me quedo con la impresión de que en Madrid hay mucha gente con muchas ganas de hacer cosas nuevas. Que a una llamada de un sistema nuevo y desconocido se apuntan casi 100 personas, algunas para pasar un par de noches en el propio sitio creando algo desde cero. Y que conocí a unas cuantas personas de lo mas interesantes a las que seguir los pasos.

Con respecto al sistema Tizen. Mi impresion personal es que se encuentra un poco verde aún, y no solo por mi mala experiencia. Otros de los concursantes tuvieron problemas de velocidad de las aplicaciones que iban bien en el emulador, otros con la geolocalizacion, tampoco ninguno de los asistentes oficiales de Intel o Samsung usaban móviles basados en el nuevo sistema.

No me cabe duda de que si ambas empresas se empeñan en sacarlo adelante, lo harán. No será por dinero por lo que no puedan empujar con toda la fuerza. Mi impresión es que muy bien tienen que hacerlo para quitar un 1% de un mercado dominado por dos entornos y donde ni siquiera un gigante como Microsoft-Nokia tiene oportunidades de quedarse con un trozo del pastel.

Por último, mi agradecimiento a Octave y Pierre, de BeMyApp por la invitación y la oportunidad de participar esta experiencia.

 

Codemotion 2013


Con poco tiempo para escribir. Pero no puedo por menos que comentar por aquí algo del Codemotion 2013 que se celebró la semana pasada en el campus de informática la UPM. Mas de 25 años desde la ultima vez que pase por alli. Por la cafetería, para ser exactos.

El evento es, no cabe duda, uno de los mayores de su tipo en España, con mas de 1500 desarrolladores asistiendo a 7 tracks diarios con los mas variados temas relacionados con el desarrollo.

A decir de algunos de los asistentes del año pasado, el nivel fue algo mas bajo que el año anterior. En mi caso, no podia comparar y si que eché en falta algunas charlas mas dedicadas a programación pura y dura. Tal vez no elegí bien mis charlas en parte porque algunas veces coincidian algunas de temas similares ).

Y ciertamente, algo de decepción tuve con algunas charlas. Por ejemplo la de frameworks de testing para Android (básicamente, jUnit) en la que no se entró apenas en detalles.

O tambien, el cachondeo (y cabreo de muchos) que vino en la presentación de Desarrollo de backends para el desarrollo de aplicaciones móviles y que en realidad fue una charla a mayor gloria de Windows Azure. Tanto es asi que al principio de la misma alguno de los asistentes pensó que los ponentes se habian equivocado de sala. Pero no, resulta que se iba a hablar de la plataforma de Microsoft como backend. Aunque no era eso lo que nadie habia entendido en el programa y tampoco es finalmente de lo que se habló en realidad.


Por lo demas, destacaría la charla sobre aplicaciones móviles multiplataforma, orientada a phonegap/cordova y donde aprendí cosas sobre un par de librerias (en especial, Sencha) que habrá que probar cuando haya tiempo. Tambien excelente fué la charla de Sander Hoogendoorn sobre Agile Antipaterns, una charla muy divertida sobre las cosas que pueden fallar (y fallarán) en cualquier proyecto Agile. O no agile. Dejemoslo en cualquier proyecto


Creo que me equivoqué con la siguiente eleccion que hice: Functional Programming por Mario Fusco. Seguramente habría disfrutado y aprendido mas con las charlas de NoSQL o internet de las cosas.

Para el cierre del dia está clara la eleccion: puesto que ya habia visto la charla de Rafael Luque sobre contramedidas XSS en Grails en el último MadridGUG (vídeo mas abajo) había que ir a ver a la estrella del día, Chema Alonso.

El video de Rafael en MadridGUG:


Y el de Chema Alonso que tambien merece y mucho la pena, sobre el 15 aniversario de los ataques de SQL Injection como parte de un video de mas de 11 horas que incluye todas las sesiones en la sala principal del primer dia.



El segundo dia fué mas duro. Sobre todo por madrugar en sábado. Pero mereció la pena porque alguna de las charlas fué realmente interesante. Desgraciadamente la primera que elegí no lo fué: Mandy White de Google nos contó algunas de las estrategias para hacer el backend de aplicaciones en la nube de Google, pero el nivel de detalle fué muy bajo para una audiencia tan técnica (mi opinion, claro). Al menos me encontré en la charla con el gran Álvaro Sanchez-Mariscal, mi primer mentor de Grails. Un placer volver a verle.

Para la segunda charla tenia bastantes dudas, porque por un lado Abraham Otero iba a hablar de Bitcoin, tema que me interesa y ademas Abraham es buen conferenciante, o bien ir la presentación de Tuenti sobre su flujo de desarrollo. Al final me decidí por esta última y no me arrepentí. En los últimos años he estado viendo en al menos 4 ocasiones la evolución de Tuenti en este sentido y es increible el trabajo que están haciendo para que el flujo de trabajo sea rapidísimo desde el desarrollo al despliegue, permitiéndoles hacer varios despliegues diarios pasando miles de tests, replicando el entorno de producción en lo que llaman tuenti in a box para que los programadores dispongan de una copia actualizada en su propia maquina y utilizando Jira como anillo único para unir todos los procesos de forma integrada.

Tras el café, la charla principal de David Bonilla, con la sala tan abarrotada como era de esperar y con ideas muy interesantes para aplicar en mi empresa. Como está disponible en video, no te la pierdas porque seguro que tu tambien encuentras puntos de interés para mejorar tu forma de trabajar:


Despues de la comida, Jerónimo de Otogami nos contó como ha montado uno de los comparadores de juegos para consolas mas interesantes que hay en este momento: con sentido común y utilizando tecnologías probadas y 100% estables. O sea, básicamente: Java puro.

Y la que sin duda fué la charla que mas me gustó, la de Ivan Lopez sobre Grails en tiempo real (¡Quiero tiempo real y lo quiero para ayer!), usando colas y comunicación asíncrona entre procesos. Muy buena. Tanto que no me la voy a perder el próximo martes cuando la repita en la quedada mensual de grupo de usuarios Grails.

Todas las slides de las charlas están recopiladas en LibrosWeb

Un evento para apuntar en el calendario, espero que se repita el próximo año y poder asistir nuevamente, no solo por las conferencias en si sino por el ambiente y el poder hablar con programadores de todo tipo y conocer nuevas formas de hacer las cosas.




 

Movember

Pues si. Este año me apunto a la campaña Movember. ¿Que es eso?. Muy facil: durante el mes de noviembre de este año me dejaré bigote como medio de apoyo para la lucha contra las enfermedades típicamente masculinas y en particular contra el cáncer de próstata y testicular.


¿Que tiene que ver el tema del bigote con todo esto?. Bueno, el movimiento surgió en Australia hace algo mas de 10 años por unos amigos que se lo dejaron (algo tipicamente masculino) mientras recaudaban y se dieron cuenta de que el sólo hecho de dejarse bigote cuando no lo llevaban habitualmente era una forma de iniciar la conversación sobre el tema cuando alguien les preguntaba por el cambio de imagen.

Reconozco que si lo que quiero es que los conocidos me pregunten me debería dejar un bigote de este estilo:



.. pero hay que tener demasiado valor para hacerlo.. :-{)

Aún está por decidir que bigote me dejaré, y si aguantaré (nunca he llevado barba mi bigote y un par de veces que lo he intentado he desistido por molesto y alergia. Veremos esta vez. Desde luego, que no sea por bigotes para elegir:






No hace falta ser hombre para participar en la campaña, las mujeres también pueden participar de varias formas: una es con bigotes postizos y otra es simplemente haciendo una donación.

¿Como donar?. Muy facil, pásate por mi página en Movember y desde ahí podrás hacer la donación que desées a mi o a mi equipo. Recuerda que esta campaña solo durará el mes de Noviembre, así que no lo pienses mas y dona hoy mismo.


Bigotes del mundo, ¡uníos!



domingo, 13 de octubre de 2013

Nombres de servidores


Si. Yo soy de los que tienen una red a su cargo y lógicamente cada servidor tiene que tener un nombre. Y, obviamente, como buen geek que se precie, todos los nombres de las máquinas tienen que tener alguna relación o tema. Ya sabía que no era el único -ni mucho menos-, pero cuando ayer en Microsiervos publicaron un enlace a hostnames, una página con series de nombres (personajes de Los Simpson, dioses romanos o griegos... ) pensé que tal vez estuviera tambien mi serie. Pero no :-)

Hasta hace un par de años, cuando pasé toda nuestra infraestructura a VMWare, los nombres de todos los servidores eran satélites del sistema solar (metis, calypso, galileo, phobos, deimos, hyperion, europa... ) y los de los portátiles nombres de cometas: hyakutake, halebopp, Shoemaker, Halley..,

Con el cambio, tuve la oportunidad (gracias a la virtualización) de instalar maquinas en función de las necesidades: si antes, en una maquina física, tenia que meter el servidor de email, un servidor web y uno de DNS, se apretaba un poco y entraban. Ahora no, ahora puedo montar uno (pequeño, con menos 1Gb de RAM) para cada cosa. Total: que rehice completamente la red. Y habia que buscar uno nuevo grupo de nombres.

Tras darle unas cuantas vueltas, al final me decidí por nombres de físicos y quimicos, que además hasta daba juego para poner algunos nombres a las maquinas en función de algunos detalles del personaje en cuestion.

Asi mi red actual tiene servidores como:

  • newton. Es el servidor de almacenamiento de ficheros principal. El mas grande
  • feynman. Servidor de desarrollo, donde hacemos los experimentos antes de pasar a test o produccion
  • tesla. Servidor de produccion, donde se aplica al mundo real lo que se experimenta en otros servidores
  • pauli, ¿que mejor nombre para una aplicacion que fué un poco gafe?
  • Los Windows que (que se le va a hacer) conviven en nuestra red:cavendish, galileo y leibniz. Los tres antiguos (sin quitar ningun mérito a los científicos, ¿eh? ;-))
  • Otros nombres con menos intencionalidad que tenemos en nuestra red incluyen:
    • bohr
    • fermi
    • higgs
    • kaku
    • maxwell
    • planck
    • tomonaga
    • curie
    • kelvin


Pues nada, si tienes que elegir un grupo de nombres para tu red, aqui tienes una idea mas.

 

Esta anotación se ha publicado tambien, con algún retoque, en el Blog de Virtual Software, la empresa a la que me refiero en este artículo.

 

P.S: Por cierto…. no: la foto que encabeza esta anotación no es de nuestro CPD, es de Google



miércoles, 25 de septiembre de 2013

La seguridad biometrica no es fiable


Aunque llevamos muchos años (todos, diría yo) en la creencia de que nuestra huella dactilar, el dibujo del iris del ojo o cualquier otro rasgo personal distintivo sea utilizado como identificador único personal fiable, lo cierto es que en el mundo digital, donde cada vez es mas importante mantener un alto grado de seguridad, este tipo de identificadores cada vez se están convirtiendo en mas inútiles y por tanto, mas peligrosa es la sensación de falsa seguridad que proporcionan.

La última, el imposible de hackear sistema biométrico basado en la huella dactilar del iPhone 5S. Tan imposible que sólo se han tardado dos días en publicar un vídeo donde se demuestra como hacerlo.


Los responsables han sido el mítico CCC que describen el sensor de Apple como igual a cualquiera de los existentes aunque con mejor resolución, por lo que el sistema utilizado es el mismo que ya conocían ligeramente mejorado.

Según han comentado:


"We hope that this finally puts to rest the illusions people
have about fingerprint biometrics. It is plain stupid to use
something that you can´t change and that you leave everywhere
every day as a security token. The public should no longer be
fooled by the biometrics industry with false security claims".

Esperamos que finalmente esto acabe con las ilusiones
de la gente sobre la seguridad biométrica. Es simplemente
idiota usar algo que no puedes cambiar y que vas dejando
todo el dia por todos lados como identificador de seguridad.
No debemos dejarnos engañar mas por la industria biométrica
con falsas apariencias de seguridad.

lunes, 23 de septiembre de 2013

Lo que no puede hacerse

Como apenas veo television, tampoco veo anuncios. Asi que tal vez este lleve rulando algun tiempo sin que yo haya percatado. Lo he visto hoy, justo antes de la salida de la carrera de Formula 1, y tengo que reconocer que hace tiempo que no veia un anuncio tan motivador como este. Solo le falta, al final, la mítica frase de John Locke: "No me digas lo que no puedo hacer"


 

 

viernes, 23 de agosto de 2013

La rubias tambien tocan blues

Que el blues -y la guitarra- ha sido tradicionalmente un territorio masculino no es que sea precisamente un secreto. De hecho, no recuerdo ninguna guitarrista clásica de blues que haya tenido cierta notoriedad.

Asi que me está llamando mucho la atención que en los últimos tiempos Spotify me esté sugiriendo (con la fantástica característica de radio personalizada tomando como base una lista o un músico) a unas cuantas chicas que no lo hacen nada mal. Ni como cantantes ni como guitarristas.


Ana Popovic (sitio oficial, Wikipedia). Nacida en Belgrado aunque vive desde hace tiempo en Memphis. Lleva mas de 15 años de carrera musical y es probablemente la mas completa de las cuatro que os presento.


Joanne Shaw Taylor(sitio oficial, Wikipedia). Inglesa, con un estilo mas limpio que la Popovic aunque tampoco le hace ascos a tocar versiones de Hendrix (hay un buen montón de videos tocando Manic Depression). Tiene sólamente tres discos editados con los que ha conseguido unos cuantos premios.



Dani Wilde (Página oficial), otra británica que está codeándose con los mas grandes desde que en 2007 fuera descubierta por la casa de discos Ruf Records durante un pequeño concierto en el Royal Albert Hall. En 2011 realizó casi 180 conciertos por America y Europa que la han consagrado como una de las mejores chicas con guitarra de la actualidad. No es rubia, pero la incluimos en esta lista.



Samantha Fish (Sitio oficial), la mas joven y recién llegada al panorama musical. Hasta hace un año apenas era conocida fuera de Kansas City, pero se está abriendo camino a toda velocidad. Aún parece un poco verde técnicamente, habrá que estar pendiente de su progresión.



 

martes, 20 de agosto de 2013

Hendrik Röver & The Pilgrim Rose

Un poco de buen country Made in Spain para alegrar el dia con aroma de los Flying Burrito Brothers. Hendrik Röver es el lider de los históricos Del Tonos, y Pilgrim Rose una banda asturiana de puro Country con fiddle, banjo y mandolinas. Un lujo de disco que puedes comprar por unos míseros 6€



 

domingo, 18 de agosto de 2013

Los buenos propósitos

Mucha gente hace buenos propósitos -la mayoría incumplidos rápidamente- a principios de año. Dejar de fumar. Hacer algún curso de idiomas. Ir a un gimnasio. Los expertos los saben, y aprovechan la ocasión para bombardear con mensajes publicitarios que aprovechen la ocasion con las correspondientes ofertas.

En mi caso no recuerdo haberlo hecho nunca, o al menos no en los últimos años, en esas fechas navideñas. Por contra, este verano he estado en mi lugar habitual de los últimos años, un pueblecito donde no hay mucho que hacer y la tranquilidad es absoluta.

Este año no he podido correr por las mañanas los 4Km que solía hacer cada dia el año pasado primero por una fascitis plantar y luego por dolor en la rodilla por jugar en la arena, asi que he tenido que conformarme con dar algunas caminatas a primera hora del dia por un camino de tierra pŕoximo a la playa. Y eso ha hecho que tenga algún tiempo para darle algunas vueltas a la cabeza y pensar en algunas cosas que me gustaría cambiar. Una lista de buenos propósitos que ha surgido espontáneamente y que voy a poner por escrito aqui para no perderla de vista cuando el dia a dia me vaya arrastrando a la comodidad de dejar pasar un dia tras otro.

Sin un orden particular:

  • Dormir mas. Imprescindible. No puedo estar mucho tiempo como largas temporadas el año pasado, durmiendo a las 2:00 y despertando a las 6:00. Un dia, vale. Dos es una excepción. Mas imposible. Como siempre me falta tiempo se que esto es lo que mas me va a costar, asi que será en lo que ponga más esfuerzo. Mínimo 7:30h de sueño diario
  • Trabajar menos horas, trabajar mejor. Producir mas. Cuando en el punto anterior ponía ese horario no es precisamente porque estuviera de copas cada noche, sino por temas relacionados con el trabajo. Es lo malo que tiene el ser co-empresario de una micro-pyme. Muchas de esas horas fueron dedicadas a aprender Grails, Groovy y temas relacionados con metodologías ágiles. Y de esas no me quejo, pero si de las trabajadas en casa directamente relacionadas con proyectos de la empresa. Necesito producir mas en menos horas. Eliminar distracciones.
  • No todos los proyectos tienen porque ser para un cliente. Tengo unas cuantas ideas de proyectos que quiero hacer. No sé muy bien como, de donde sacar el tiempo, el dinero y los recursos para llevarlos a cabo. Pero se que si no intento hacer algunos de ellos de una forma u otra me arrepentiré en el futuro. No se si la forma será implicando a otros miembros de la empresa, haciendo una Π Week al estilo Kaleidos, en casa en ratos libres, o como. Lo que si que sé es que será
  • Tiempo libre. Lo necesito. Los últimos años han sido un sinvivir. Se acabó. No puedo y no quiero. En los ultimos tiempos, mis hijos han crecido sin que yo apenas ni me entere ni les haya prestado el 1% la atención que merecen. Nunca he sido muy familiar pero una cosa es eso y otra apenas ver a la familia a la hora de comer los fines de semana. Game Over.
    Leer. Salvo en vacaciones, no leo nada que no esté directamente relacionado con programación. Tambien se acabó. Tengo por terminar de este verano Pensar rápido, pensar despacio, Guerra y Paz y 1Q84. Y luego mas cosas. Por no hablar de volver a coger una guitarra de vez en cuando.
  • Andar. Deporte. No es que me quiera poner cachas, es que tras tantos años de hábitos perniciosos para las neuronas estos dos años y medio en los que he hecho un mínimo de deporte he llegado al convencimiento de que es la mejor forma de tener el cerebro despierto y en forma. Y eso es exactamente lo que quiero: Andar un par de kilómetros (perfecto además para pensar) y seguir corriendo ocasionalmente. Y si además puedo hacerlo sin el agobio de tengo que volver a casa lo antes posible para terminar no-se-que-cosa, mejor.

Ya. ¿Carta a los reyes magos?. ¿Pura lógica?. Seguramente parte de ambas. Mañana, de vuelta de vacaciones, empieza el reto, en un año veremos que he conseguido.



domingo, 11 de agosto de 2013

Relaciones en GORM (The Definitive Guide to Grails 2)

Desde que comenzamos en mi empresa con Grails, uno de los puntos donde estábamos un tanto inseguros era el tema de la forma en que se manejan las relaciones con GORM. Por una parte, nunca habíamos usado Hibernate ni ningun otro ORM, y por otro, siempre habíamos diseñado la base de datos y las relaciones entre las entidades de forma manual.

En estos dias de vacaciones estoy leyendo el (muy recomendable) libro "The Definitive Guide to Grails 2", con el que estoy afianzando algunos conceptos que ya he manejado en el ultimo año y estoy aprendiendo algunas otras técnicas que estoy seguro de que me me van a ser muy utiles en el corto plazo.

En particular, el capítulo 3 dedicado a las clases de dominio tiene un apartado sobre las relaciones entre las clases de dominio y el mapeo que se realiza en base de datos que me ha resultado especialmente claro, asi que voy a intentar resumirlo y traducirlo por aqui por si a alguien mas le puede ser de utilidad.

Partamos de las dos siguiente clases simples:

class Car {
  Engine engine
}

class Engine {
  Car car
}

Claramente tenemos una relación one-to-one simple: un coche tiene un motor y un motor tiene un coche. Ninguna de las dos clases es propietaria de la relación. Y probablemente esto no sea lo que necesitemos en nuestra aplicacion.

Si queremos (lo mas probable en el caso anterior) definir cual es la clase propietaria de la relación, deberíamos hacerlo de la siguiente forma, definiendo explicitamente que un motor pertenece a un coche:

class Car {
  Engine engine
}
class Engine {
  static belongsTo = [car:Car]
}

De esta forma decimos a Grails que el coche es la parte propietaria de la relación, que el motor pertenece al coche, y no al revés.

El parámetro [car:Car] de la propiedad belongsTo es un mapa (y podríamos incluir varios valores: [car:Car, otherClass:TheOtherClass, ....]). La clave del mapa (car) representa el nombre de la propiedad que se añadirá (y usaremos luego para recuperar datos) a la clase Engine. Con esta definición, conseguiremos tambien que cuando se realice el mapeo en base de datos, tengamos una foreign-key en la tabla CAR que referencia a la clave primaria (el ID) de la tabla ENGINE

Obviamente, en algunos casos puede ser deseable tambien disponer de la foreign-key en el otro sentido, esto es: tener la foreign-key en la tabla ENGINE referenciando a la clave primaria de CAR. La forma de hacerlo en definiendo la propiedad hasOne en la clase Car, de la siguiente forma:

class Car {
   static hasOne = [engine: Engine]
}


En algunas circunstancias podemos tener situaciones donde la relacion necesita un lado propietario de la misma, pero no se necesita tener la referencia (back-reference: el ID del propietario en la clase debil de la relación). Grails soporta este tipo de relación de forma similar al caso anterior, pero indicanto solamente el nombre de la clase en lugar de usar una mapa:

class Engine {
   static belongsTo = Car
}

Una de las aplicaciones mas claras de esta aproximación es que automatizan los borrados en cascada: cada vez que se borra un coche de la base de datos se borrará el motor asociado.

Las relaciones de uno-a-muchos se representan facilmente tambien en Grails. Supongamos que tenemos una aplicacion con Albums de música que tienen canciones (Song) y que pertenecen a un Artista. La definicion de estas tres clases podría ser algo asi:

class Artist {
  String name
  static hasMany = [albums:Album]
}

class Album {
  String title
  static hasMany = [songs:Song]
  static belongsTo = [artist:Artist]
}

class Song {
  String title
  Integer duration
  static belongsTo = Album
}

En el ejemplo anterior, un Artist tiene muchos Albums, y un Album perteneca a su Artist propietario. De la misma forma, un Album tiene muchas canciones, y cada cancion tiene su Album propietario. En cualquier caso, una canción no tiene referencia a su Album: dada una canción no podremos saber a que Album pertence, aunque desde los Albumes si que podremos obtener su lista de canciones.

Como vemos, la clase Artist tiene una propiedad, albums, que es una coleccion de objetos Album. El tipo de coleccion que Grails usa por defecto en estos casos es un java.util.Set , que es una coleccion sin orden. Si necesitas otro tipo de coleccion (por ejemplo: List o SortedSet que mantienen un orden, lo que puede penalizar el rendimiento) puedes hacerlo pero tendrás que declararlo explícitamente, por ejemplo:

class Album {
  String title
  static hasMany = [songs:Song]
  static belongsTo = [artist:Artist]
  SortedSet songs
}

Nota: para que este comportamiento funcione, la clase Song tiene que implementar el interface Comparable

No voy a entrar en la problemática del rendimiento que puede provocar el uso de estas propiedades, pero si que recomiendo echar un vistazo a estas dos entradas ( 1 y 2) de Burt Beckwith sobre las recomendaciones de usar el concepto de Bag de Hibernate para estas relaciones u otro tipo de técnicas.

viernes, 14 de junio de 2013

Steve Wozniak sobre iOS7, las libertades y mas cosas

Imperdible este video de Steve Wozniak hablando sobre algunos de los temas no ya de actualidad, sino de ayer mismo (claro, que cuando estes leyendo esto... a saber).

Es una excelente noticia el que haya gente con conocimiento técnico que se de cuenta de lo que esta pasando con tal claridad.



Cita para enmarcar:

Cuando yo era pequeño nos contaban que los comunistas rusos iban a matarnos, lanzarnos bombas… Que torturaban a la gente, la arrestaban, las metían en cárceles y todo eso. Ahora los Estados Unidos nos parecemos cada vez más a esa Rusia comunista.

Y no solo en Estados Unidos. Al hilo del tema de PRISM me hacia mucha gracia el otro dia escuchar en los telediarios a los expertos legales diciendo que eso no podia pasar en España. ¡Ja!


Via Microsiervos

 


lunes, 4 de marzo de 2013

Mi primera experiencia con youzee

Noche de sábado. 23:30. Los niños recién acostados y helado en la nevera. De las películas descargadas hace tiempo ninguna apetecible en el disco duro.

Entonces recuerdo un mensaje que me llegó durante la semana, de Youzee con el imaginativo asunto de Jmiguelweenie, tenemos ARGO pa' ti ;-). Asi que no lo pienso dos veces, conecto con el iPad enchufado a la tele y como tengo pendiente de ver la ganadora del Oscar a la mejor película, que además dicen que estan bien, pago 3.99€ sin despeinarme para ver Argo. Me parece un precio muy razonable para ver una película prácticamente de estreno sin tener que ponerme a buscarla a estas horas por los bajos fondos de la red.

Bien... pago sin problemas desde el iPad pero ... Oh!. necesito Flash para verla. Mierda. Mal asunto en el iPad. ¿No podian haber detectado el dispositivo antes de pagar?. Sin problema. Seguro que hay alguna App para verlo directamente. A ver.... aqui está. Oops!. Es para iPhone, no para iPad. Bueno, probemos a ver que tal se ve... Mierda2. La App solo es una especie de mando a distancia para manejar el ordenador. Supongo que mientras ves la película.

23:45. El helado vuelve a la nevera. Me empiezo a cabrear. Desenchufo el portatil del lugar de trabajo y lo llevo a la tele. Con la salida HDMI lo puedo contectar tal cual. Arranco en mi Ubuntu habitual y al menos la película me la reconoce como comprada. Entro. Play. Espero. Espero. Espero mas. Ningún mensaje de error, simplemente la pelicula no empieza. Reintento. Goto Play. Nada.
Mi mujer sugiere que tal vez sea cosa de Linux, pero digo yo que en algun sitio deberian dar algun mensaje de error, ¿no?.

00:15 Recuerdo que tengo la particion original del portatil con el Windows 7 que venia de serie. Por probar... Arranco en W7 y me acuerdo de todos los ancestros y descendientes de Steve Ballmer mientras intento configurar la conexion Wifi, me bajo el Chrome (que bien funciona Internet Explorer en la tarea de descargar otros navegadores!. Deberian poner en los favoritos por defecto el enlace para bajar Firefox y Chrome para ayudar a los usuarios novatos). 10 minutos después estoy de nuevo en Youzee desde Windows. Entro a la película y veo que ademas del dominio donde estoy hace una conexión que en Linux no hizo -o no vi- a algo como drm.youzee.com. Acabáramos. El put* DRM que no debe funcionar en Linux.

00:30 Empieza la pelicul.... ¿eh?. ¿que mierda3 es esto?. La película va a (como mucho) 10 frames por segundo. En las escenas con un poco de movimiento de cámara se ve una imagen por segundo... y ¡a saltos!. ¿45 Megas de ancho de banda para esto?. Pruebo un test de velocidad. Perfecto. Otro. Tambien bien. No me lo puedo creer. Vuelvo a poner la película... y asi no hay que la vea.

Es casi la 1:00 y abandono. Me quejo cabreado por twitter (al vacio, porque veo que la cuenta de youzee lleva mas de 120 dias sin escribir nada) y consigo un par de respuestas en la linea de 'quien te mandaria no irte a por un torrent'.. Lo normal.

Ya es domingo, 10:00. Me pongo delante del ordenador a currar un poco. Antes, sin complicarme mucho (vamos, en ThePirateBay) veo 3 versiones para bajar. En la mula otras dos. Pongo las 5 a bajar como si no hubiera un mañana y en 1 hora tengo 4 variantes de Argo (una de ella doblada en mexicano). A mediodia me da por ver si con la conexion ethernet por cable va mejor que por Wifi. Nada, va exactamente igual.

Ya por curiosidad (y porque no me puedo creer que la gente vea asi una película) busco algo de información.

Me entero de que Youzee pertenece a los cines Yelmo CinePlex. Que hace un año tenia a 50 trabajadores y que echó a 40. Lo que se viene llamando apostar por el futuro. Por eso pararon la version de iPad. Por eso, teniendo a punto la parte técnica y los acuerdos con las distribuidoras, no funciona en Linux. Por eso no responden en Twitter. Por eso, cuando empecé a tener problemas, el sitio de soporte estaba caido y no pude ni dejar un mensaje.

Sigo buscando y veo que algunos usuarios (con anchos de banda por debajo de 6Mb) han mejorado la calidad de video cambiando la configuracion del Plugin de Flash subiendo el tamaño del caché. Lo pruebo. Ahora si. Ahora funciona a una velocidad razonable como para ver una película. Me gustaria saber como lo hubiera solucionado un usuario sin unos minimos conocimientos técnicos.

Para ser sinceros, se ve mejor en una de las copias del torrent, pero la calidad es mas que razonable para que, 12 horas antes, hubiera tenido una buena experiencia de usuario y aqui, hoy, hubiera escrito otra cosa.

Y mientras, en mi cabeza, resuenan las palabras del presidente de la academia del cine, en su discurso de los premios Goya de hace unos dias:


Y ya que hablamos de dinero y de recaudación, denunciemos una vez más el dinero que pierde la Cultura con la piratería. Tan sólo en la industria cinematográfica la piratería ha supuesto la enorme cifra de 3.000 millones de euros.

[...]

Ya no vale la excusa de que no hay una oferta legal en la red. Hoy en día existen más de 20 portales que ofrecen miles de películas a precios muy asequibles.

No me voy a cansar preguntando al vacio de donde sale la enorme cifra de 3.000 millones. ¿Cuentan como 5 las 5 peliculas que me he bajado hoy?. Ridiculo, ¿no?. ¿Cual es la forma que tienen de calcular esa cifra?. Seria muy interesante conocer los cálculos que hacen y el metodo cientifico que aplican para esa deduccion. ¿Restan a la pirateria los 4€ que me he gastado en una película que no he visto?.

¿20 portales?. ¿Que ha fumado, caballero?. Aparte de Youzee tenemos Wuaki, Filmin, Voddler, Filmotech y ... ¿quien mas?


En Youzee tengo 48 horas para ver la película, asi que con suerte esta noche la veré. La duda es, ¿volveré a coger el portatil, lo conectaré a la tele, arrancaré Windows .. para no estar seguro de si funcionará bien?. O tal vez copie la película bajada por torrent a un pendrive y la pinche en el TDT con entrada USB, que nunca me ha fallado y se ve mejor?. Y mirando mas alla, ¿volveré a confiar en Youzee?. ¿Probaré otro de los portales?.

Es que mira que somos malos, que cuando queremos ver una película, la queremos ver ahora, y no al dia siguiente.




 

sábado, 23 de febrero de 2013

Solo un año

En mi memoria parece muchísimo mas. Pero sólo ha pasado un año desde que por una de esas casualidades (y por escuchar los podcast de Javahispano) un compañero y yo fuimos a Spring IO, una serie de conferencias que a priori trataban sobre el framework de desarrollo Spring MVC.

En aquella época, yo estaba dándo vueltas sobre si merecia o no la pena el cambiar nuestro sistema de desarrollo tradicional y buscando cual podia ser la alternativa. En ratos libres habia echado un vistazo a Spring MVC y GWT,  así que como una de las conferencias era la clásica de Matt Raible sobre la comparativa de frameworks basados en Java en la que se hablaría de otras alternativas al J2EE mas tradicional, parecia claro que no deberiamos perdernos el evento.

Al final, como sucede muchas veces, te encuentras con que aquello para lo que estabas preparado no era lo mas interesante que sucedió en esos dias. La charla de Matt fue impecable pero no fue lo que mas nos marcó. Muchos de los ponentes hablaron sobre un entorno de desarrollo que no habia considerado y del que ni siquiera habia oido hablar, Grails, pero del que muchos de ellos (Tomas Lin, Domingo Suarez, ) hablaban maravillas. Tambien estuvieron implicados algunos de los (en aquel momento yo ni siquiera o sabia) máximos pesos pesados creadores del framework, como Graeme Rocher o Peter Ledbrook.

Pero no sólo (que hubiera sido mas que importante) descubrí Grails. Tambien nuevos conceptos como Agilismo o Scrum. Herramientas como las de Atlassian o JRebel. Empresas que estaban haciendo cosas que me llamaron la atencion, como Salenda, los vecinos de Kaleidos o gente como el propio Alvaro Sánchez-Mariscal, Alberto Vilches o el inimitable David Bonilla. Esos dos dias de hace un año, maltraduciendo del inglés, volaron mi mente. Tuve la sensación de haber pasado los ultimos 10 años metido en una caja. Si: mi propia caja, muy cómoda pero muy limitada. Y nuestra empresa, de la que soy el responsable de tecnología (CIO o CTO, dirían algunos), conmigo.

A partir de ese momento de hace casi exáctamente un año empezó el camino que estamos recorriendo hoy en Virtual Software y en que se esta involucrando toda la empresa para reinventarnos. Un camino hacia una estructura menos jerarquizada -que no menos organizada- con menos compartimentos estancos en lo referente a tecnologia y con la mirada puesta en el futuro.

Un año después estamos preparando a toda la empresa para que todos seamos capaces de realizar desarrollos con Grails. Hemos abrazado (seria mas realista decir “estamos abrazando”) el agilismo y estamos buscando la forma de incorporarlo a nuestros métodos de trabajo diarios. Tenemos nuestro propio scrum-master certificado. Hemos cambiado nuestra obsoleta herramienta de incidencias y control de tareas (desarrollada internamente y que nos ha servido durante unos cuantos años) por Jira + Greenhopper que nos permite tener un control mas certero de lo que realmente está pasando. Estamos  integrando en nuestro método de trabajo la Integracion Continua con Bamboo. Estamos aprendiendo TDD y la realización de tests con Spock o Geb. Ha sido un año duro y cansado, pero no me cabe ninguna duda de que está mereciendo la pena




Este Kanji de arriba representa el concepto crisis en japonés. Esta compuesto de los sinogramas “Peligro” y “Oportunidad”. Nuestra empresa, como tantas en España, está pasando una época de crisis que, al menos en nuestro caso, ha sido motivada en gran medida porque algunos de nuestros clientes pertenecían a sectores que han sido golpeados fuertemente. No solo ese ha sido el motivo, y tenemos que buscar, reconocer y corregir nuestro errores. Pero creemos que estamos en el mejor momento para aprovechar la segunda parte: oportunidad, y darle la vuelta a nuestra empresa a todos los niveles para comenzar, 21 años despues, un nuevo camino.

(Esta anotación se publica simultánemente en el recién creado blog de Virtual Software).



martes, 29 de enero de 2013

Greach 2013

Sin apenas tiempo de asimilarlo, ya ha pasado la edicion de 2013 de Greach, el evento internacional de Groovy y Grails en España.

Como desde hace unos meses estoy empeñado en mi empresa en introducir este lenguaje y framework de desarrollo, no podia desperdiciar (¡ni de lejos!) la oportunidad de escuchar en vivo y en directo a algunas de las personalidades mas punteras de estas tecnologias a nivel mundial.


Estuvieron todos los grandes con la excepcion de Guillaume Laforge, que por motivos familiares tuvo que renunciar a su ponencia pero si que hizo acto de presencia virtual para anunciar la nueva version de Groovy, 2.1


Este año, el evento se celebró en un lugar realmente céntrico (un poco mas, y se hace en plena Puerta del Sol), el Hotel Preciados, usándose dos salas para los dos tracks de conferencias y talleres. Un gran acierto de sitio tanto para los que vinieron de fuera como para los que estábamos en Madrid.

No voy a hacer un análisis completo de las sesiones a las que asistí, no tengo tiempo para ello y en cualquier caso cuando aparezcan los videos que se grabaron de todas las sesiones y estén disponibles las presentaciones correspondientes en slideshare intentaré hacer una recopilación aunque sea para mi mismo.

Aún así, si que quiero destacar un par de ellas que me gustaron especialmente. Por orden cronológico, la primera de Ivan Lopez de Kaleidos sobre Todo lo que me hubiera gustado saber cuando empecé a desarrollar con Grails. Muy instructiva y divertida. Las notas que tomé me serán de gran ayuda cuando pueda retomar la programación con Grails. Que es casi lo mismo que decir cuando empiece ya que llevo mas de un mes sin poderme poner con ello.

La segunda, Hybrid mobile app in minutes, not days. Tenia dudas sobr ela mejor forma de hacer aplicaciones para móviles, si de forma nativa para cada plataforma o usando herramientas tipo PhoneGap. Bien, la duda esta resuelta a favor de esta segunda opcion y probablemente utilizando alguno de los plugins que están aun en desarrollo y que nos mostraron en una divertida presentación.

Del primer dia, la otra charla que me gustó fué la del propio organizador, Alberto Vilches, que nos contó como habian desarrollado en su empresa una plataforma para la venta de libros digitales. Me quedé con un par de ideas bastante útiles como por ejemplo la forma de autenticación a base de tokens encriptados que se mandan en cada petición. Yo ya me habia encontrado con un problema similar en un programa que no se llegó a desarrollar y está bien saber que esta solución les está dando buenos resultados en el mundo real

Del segundo dia no sabría con cual de las conferencias quedarme porque fueron todas de muy alto nivel, alguna superando ampliamente mis conocimientos tan básicos sobre Groovy/Grails actuales. Probablemente la de Cédric Champeau sobre el chequeo de tipos en DSLs fuera la que mas me gustó aunque no haya utilizado nunca (aún) DSLs, pero el concepto es excelente. Las dos charlas sobre seguridad de Burt Beckwith tambien fueron muy buenas porque muchos de los problemas de seguridad que contó los he padecido (y resuelto manualmente) en mis aplicaciones y frameworks propios, asi que eran terreno conocido.

Tambien muy destacable la presentación de Jorge Uriarte sobre los problemas de escalabilidad que habian tenido en su empresa y como los habian solucionado, básicamente, usando Redis y quitándose mucha de la parte de GORM y hibernate de la capa de acceso de los clientes. Otra cosa mas para mirar cuando haya tiempo.

Y.. bueno, aunque siempre suenen a tópico estas cosas, no dejan de ser ciertas: una de las mejores cosas que tuvo el evento fué el poder estar en una misma sala y charlar con algunos de los monstruos del panorama de Groovy & Grails tanto internacionales como españoles. Graeme Rocher, Burt Beckwith, Cédric Champeau, Russel Winder o Sébastien Blanc son nombres que ya me sonaban y es una gran experiencia el poder conocerlos en vivo. Y lo mismo puedo decir de Dani Latorre o Mario García, con quienes me habia cruzado algun mensaje por twitter o (en el caso de Mario) habia coincidido muy brevemente en mi primera asistencia al Madrid Grails User Group

Para finalizar, un 10 para la organización: Alberto Vilches que (me consta) se lo ha currado hasta mas allá de lo necesario y ha conseguido sacar adelante un gran evento internacional. Y tambien para Alvaro Sánchez-Mariscal, de Salenda / Escuela de Groovy que no solo colaboró en que el evento fuera un éxito sino que ... pagó las cervezas del primer dia! ;-)

El segundo dia me llevé la cámara asi que puedes ver unas cuantas fotos en Este álbum en flickr o en esta página del evento en Google+ donde mas gente subió fotos.



miércoles, 23 de enero de 2013

viernes, 11 de enero de 2013

Mi San Silvestre 2012

Aunque no tengo tiempo para casi nada, no puedo dejar de anotar por aqui mi sengunda San Silvestre. si, hace ya unos dias, pero hoy viendo este video en el blog de Sebas Muriel no he podido por menos que volver a abrir la página de blogger para anotarlo.



Mi tiempo: 1:08:28. Exactamente 08 minutos y 29 segundos por encima del tiempo que me habia propuesto. El año de que viene será. Al menos han sido 4 minutos menos que el año pasado. Puesto 26687.