Desarrollo de front para programadores

Simplemente quería compartir el artículo Desarrollo de frontend sobre web para programadores que escribió hace una semana Gonzalo García.

Es muy habitual que entre programadores(novatos, y a veces no tan novatos) al front se le vea como la cáscara y ponerle colores. Como algo complementario, que lo importante son las tripas: FAIL, la interfaz es tu producto.

Y si ya es difícil encontrar buenos programadores por ahí, aún lo es más encontrar que sean buenos en front.

Groovy scripting: migrando de base de datos

Como algunos ya sabréis, una de las cosas que podemos hacer con Groovy es escribir scripts al estilo de Ruby, Perl, Python... para realizar alguna tarea repetitiva. Desde mi humilde punto de vista(y de gente que sabe mucho más que yo), un programador debe tener en su caja de herramientas un lenguaje para escribir scripts que sirva para automatizar tareas.

Hace poco he estado haciendo unos retoques a uno que tenía casi olvidado, cuya responsabilidad era hacer una migración de una base de datos a otra, con esquemas muy distintos(por lo que tocó sudar sangre :P). Para esto me ayudé de un par de scripts escritos en groovy que cumplieron perfectamente con su función.

Hablando ya del código, una de las cosas interesantes que tiene groovy en sus últimas versiones es la incorporación de Grape en el lenguaje. Con Grape podemos manejar las dependencias a librerías externas utilizando los mismos repositorios que hay para maven, por ejemplo yo necesitaba el driver jdbc de mysql:

import groovy.grape.Grape
Grape.grab(group:'mysql', module:'mysql-connector-java', version:'5.1.6',classLoader: this.class.classLoader.rootLoader)

Otra cosa que está muy bien es lo que facilita el trabajo con bases de datos, groovy nos da el paquete groovy.sql.* para ello. Un ejemplo con código limpiado para que sea más fácilmente legible:

def sql = Sql.newInstance("jdbc:mysql://localhost:3306/vieja", "root","pass", "com.mysql.jdbc.Driver")

sql.eachRow("select * from contenidos_secciones where seccionId = 2"){
println it.id
println it.titulo
//acciones reales a ejecutar
}

El it dentro de eachRow, efectivamente representa una fila del resultado obtenido de la consulta.

En mis scripts en los eachRow trataba los datos recibidos para finalmente generar los inserts sql para el esquema de la base de datos nueva y los escribía en un fichero. Para tratar ficheros groovy también nos simplifica la vida, en mi caso tenía por ahí una función tal que así:

def writeToAFile(query, fileName){
def file = new File("${fileName}.sql")
file.append(query+"\n","UTF-8")
}

A este código habría que añadirles muchas líneas pero no quiero aburrir con cosas genéricas que no aportan gran cosa, como el porrón de consultas y subconsultas diferentes, cambios de estructuras, tratamientos de cadenas para generar inserts...

En fin, que si no tienes ningún lenguaje para escribir scripts, ya puedes dejar las excusas/pereza y empezar a aprender uno!

Y si eres programador Java, groovy es el que resulta tener una menor barrera de entrada que los lenguajes sospechosos habituales para esas tareas, la mayoría de la sintaxis ya la conoces :)

Mis objetivos para 2011

Estaba ya convencido de no escribir nada en plan resumen/retrospectiva de 2010 ni objetivos de 2011, había estado tentado un par de momentos, pero el andar este final de año haciendo de (como diría @molpe)malabarista además de mi habitual oficio programador, hace que se me quiten las ganas de elaborar mucho los posts(y aún gracias que aún he ido escribiendo alguna cosa). Pero resulta que ahora va David Bonilla y me devuelve un meme que le pasé yo el año pasado :D.

Viendo lo que me propuse el año pasado, podría hacer un copy/paste, refactorizar un poco y quedarme tan ancho, no he hecho casi nada :P

Primero voy a repasar algunas cosillas que he hecho:

  • He ido a varios eventos interesantes, incluso participando en alguno dando charla, hasta organizando! Donde he tenido oportunidad de conocer y tratar con gente muy interesante. Aunque también me he perdido otros que me llamaban mucho la atención, pero a veces toca currar. Bueno, y confieso que fui al EBE, pero no se lo digáis a nadie :P
  • Participé en el desafío AbreDatos con un auténtico equipazo. Donde surgió el primer DNDzgz, posteriormente la versión nativa de iPhone y luego la lite
  • DNDzgz y el ATS Jobsket, han aparecido varias veces en medios de comunicación. Cosa que no da de comer, pero al ego lo alimenta que da gusto :D
  • He aprendido bastante de Python y Google AppEngine
  • Dejé de fumar. Sólo necesité la ayuda de un neumotórax espontáneo que me hizo estar ingresado 4 días con un tubo enganchado al pulmón.
  • Por primera vez he podido hacer algo que llevaba un par o tres años en mi cabeza, empezar con lo que al final parece llamarse algo como El Programador Itinerante. Ir varias semanas a trabajar con un equipo interesante a otra ciudad. Surgió la oportunidad de pasar un par de meses en Tenerife(que no conocía) para echarle una mano a Carlos Blé y Oscar Moreno con MavenCharts. Donde también pude conocer al ya archiconocido Comando Muyayo, gente cojonuda :D
  • Empecé de nuevo a hacer algunos trabajos como freelance. Precisamente en estos momentos ando colaborando en el proyecto más bonito desde que retomé la actividad. Próximamente más en sus lectores de rss o timeline de twitter! ;)
  • He vuelto a vivir a Zaragoza. El pueblo mola, mola mucho. Pero a mi me gusta mucho relacionarme y andar conociendo gente nueva con intereses afines y el interné tiene sus limitaciones para esto. Soy el clásico nerd, sí :P
  • He empezado(o he vuelto) a estar metido en varios grupos locales profesionales. Este final de año estamos reactivando el ZaragozaJUG. Y soy un habitual en las reuniones de Agile-Aragón y en los Cocktails Cadius Zaragoza

Resumen de un resumen, que esto iba de objetivos, y no quiero darme (todavía más) bombo :P

A diferencia del año anterior, la lista de objetivos la voy a aligerar bastante, tengo que ser consecuente con que ni sé que voy a hacer la semana que viene... como para plantearme un paquetón de cosas para intentar cumplir durante un año.

Mis objetivos

  • Repetir experiencia de El Programador Itinerante al menos una vez este año(sin descartar que pudiera repetir incluso). Es algo complicado porque se tienen que dar varias cosas, mi idea es trabajar dentro de otro equipo que mole, lo que significa que yo debo andar medio liberado de otros temas, y el contexto del equipo permita que una persona esté sólo unas semanas... y que eso coincida en el tiempo XD. Tengo un par de cosillas habladas para colaborar con equipos MUY interesantes
  • Inglés, mi eterno talón de Aquiles. Voy mejorando, pero no le presto el suficiente tiempo como para subir el nivel para intentar trabajar con gente de habla inglesa y que la comunicación sea fluida.
  • He empezado a leer documentación sobre Objective-C y iOS, este año espero colaborar en la próxima versión nativa de iPhone de DNDzgz, y seguramente también intente desarrollar alguna aplicación más como sideproject.
  • Visitar Boston, unos amigos se van a vivir ahí unos meses y tenemos que organizarnos para hacerles una visita... Todo un reto que con algunos de mis amigos organicemos un viaje a varios meses vista :D
  • Volver al gimnasio. Hay que compensar las horas sentado, las cañas y las tapas :P. Aunque juego un par de veces de la semana a fútbol, ir de forma regular al gimnasio siempre ha conseguido que me sienta mucho mejor.
  • Empezar a practicar deportes de montaña. El esquí definitivamente no me engancha, pero me gusta la montaña(que soy del Alto Aragón!). Me gustaría hacer por fin algo de escalada o barranquismo.

En fin, veremos si al menos cumplo un par de esos objetivos :D. Lo que sí es seguro es que haga lo que haga, voy a intentar seguir disfrutando como lo intento ahora ;)

Feliz año y todo eso

Screencasts de Mockito

Hace un poco que he empezado a trastear Mockito para utilizarlo en un proyectillo que llevo entre manos. Por si hay algún javero despistado, es una librería para ayudarnos a hacer mocks y stubs de las dependencias de código que queramos testear.

Pues hace unos días que encontré unos screencasts sobre Mockito que me resultaron muy aclaratorios de como puedo aprovechar la librería. Como me resultaron útiles, simplemente los comparto :):

Remix Manifesto subtitulado al español

Estaba yo anoche haciendo mis cosillas y escuchando lo nuevo de Girl Talk que me descargué la semana pasada, me volvió a la mente el documental RIP: A remix manifesto, sobre el que ya escribí algo hace algo más de año y medio cuando vi la versión doblada al catalán. En esta ocasión encontré una versión subtitulada al español y quería aprovechar para compartirlo, que es muy interesante el documental.

Confieso que en ocasiones soy de los que usa el buscador de youtube y a veces encuentro mashups(o remixes) musicales o no muuuuy curiosos :). Aunque con lo simplón que soy me encanta que me pasen remixes chorras, como este doblaje de Epi y Blas "Se pone fino" con el que me parto siempre :D

Y todos estos remixes/mashups seguramente violen derechos de autor y sean ilegales. Pues eso, interesante documental que trata este tema y muy recomendable vérselo.