16 December 2016, 10:19
As Instagram API states in its docs, You can secure your API calls and mitigate impersonation attempts by making server-side calls and passing a per-request signature using your Client Secret, but how to do that in Java/Groovy?
Continue reading »
10 October 2016, 12:35
If you ever need to test your REST API endpoints, I would recommend you to use Groovy and Spock. You can find here an easy example using a pet project I created long time ago with AngularJS and Grails.
Continue reading »
16 January 2016, 14:55
He decidido compartir de forma abierta la presentación sobre Spock que imparto en el Experto Java.
Continue reading »
22 September 2015, 17:02
Digamos que la metaprogramación no es más que extender la funcionalidad de determinadas clases Java en tiempo de ejecución. Por ejemplo, imagina que necesitas que la clase String tenga un método llamado urlize() el cual transforme una cadena cualquiera en una cadena que se pueda utilizar como parte de una url de nuestra aplicación. Por ejemplo, si tenemos la frase “Año 2015: el año del cambio.”, nuestro método debería devolver algo así como “ano-2015-el-ano-del-cambio”, esto es, eliminando todo tipo de carácter acentuado, espacios, comas y demás que tanto nos complican la vida en las urls.
Continue reading »
11 September 2015, 16:46
If you need to zip a bunch of files using password protection in Groovy (and of course in Java), there is a very nice library called zip4j that you can embed in your projects.
Continue reading »
2 July 2014, 00:04
Si en alguna ocasión necesitas almacenar el contenido de algún parámetro pasado a alguna función en Groovy, necesitarás almacenar el método antes de modificarlo mediante programación.
Continue reading »
19 June 2014, 13:25
Testear condiciones asíncronas con Spock es sencillo utilizando por ejemplo las PollingConditions
Gracias a ellas es posible retrasar la comprobación de determinadas condiciones en un test con Spock.
Continue reading »
11 September 2013, 22:35
Ayer mismo salió la nueva versión de Grails, la 2.3.0 que destaca, entre otros aspectos por las mejoras en el soporte a los servicios REST y el aumento de la seguridad para evitar ataques XSS.
Esta misma mañana he intentado actualizar una aplicación que estoy desarrollando y de la que por el momento no puedo hablar y me he encontrado con el problema de que se desaconseja el uso el típico comando grails upgrade puesto que está en estado de deprecated. A partir de ahora debemos utilizar el comando
Continue reading »
25 June 2013, 14:51
Si hace 8 meses escribía un post para anunciar que dejaba la Universidad de Alicante para empezar a trabajar para Secret Escapes en Londres, ahora es el momento de escribir un nuevo post para decir que dejo Londres, para volver a Alicante y empezar una nueva aventura como programador freelance.
Continue reading »
24 December 2012, 13:11
[4]
Después de más de dos meses en mi nuevo puesto de trabajo y casi diría yo en mi nueva vida lo único que puedo decir es que no nos hemos equivocado en la decisión tomada. Hablo en plural porque esta decisión ha sido conjunta entre mi mujer y yo y aunque ella todavía está en España, en breve me acompañará en esta aventura.
Pero vamos a lo que quería os contar en este post. El título de mi puesto de trabajo es Senior Software Developer en Secret Escapes, una start-up con base en Londres que se dedica al mercado de los viajes de lujo con grandes descuentos.
Os cuento un poco la estructura actual del departamento técnico de la empresa. A la cabeza está el CTO de la compañía que dirije a 4 programadores, dos de ellos seniors, y dos diseñadores gráficos.
Las teorías ágiles están al orden del día en nuestro departamento y todas las mañanas tenemos nuestra reunión stand-up en la que todos los miembros del equipo cuentan brevemente que hicieron el día anterior y que tienen previsto para ese día. Por supuesto, en esta reunión nada de estar sentados y suele durar unos 10-15 minutos.
Para organizarnos las tareas y saber que está haciendo cada uno de nosotros utilizamos Trello, el típico tablero Scrum con las diferentes fases por las que pasan las tareas antes de ser desplegadas ( backlog, doing, done, staged y deployed). Para tareas complejas utilizamos un único tablero para esa tarea y así fragmentar mejor la misma.
Una vez ya sabemos que tenemos que hacer ese día, es hora de programar y en muchas ocasiones no lo hacemos solos sino que hacemos pair programming bastante a menudo. Es la primera vez que practico esta técnica y la verdad es que todos son ventajas, en primer lugar porque es una forma de involucrar a todos los miembros del equipo en el desarrollo de todas las tareas y que luego no aparezca la típica frase de “es que eso sólo lo sabe hacer Pepito”.
En todo momento la empresa y su CTO aboga por seguir la metodología TDD (Test Driven Dvelopment), que también era la primera vez que lo utilizaba y de nuevo, tiene muchas ventajas aunque el programador debe cambiar su manera de afrontar los problemas y la verdad es que al principio me ha costado un poco (Recomendar libro) y en más de una ocasión me han cogido algún trozo de código nuevo y me lo han borrado por completo porque no había hecho primero los test. Al principio jode, pero luego te das cuenta de lo importante que son los test en un entorno tan cambiante como es una start-up.
Esto ya no sé si se enmarca dentro de las meotodologías ágiles pero una hora y media antes de terminar la jornada de trabajo, debemos cortar de forma bastante radical lo que estamos haciendo para hacer cualquier otra tarea que aparezca en el tablero Scrum. En ocasiones no te gusta cuando estás con un tarea y no puedes terminarla porque toca cambiar, pero en la mayoría de las veces, ese cambio supone un descanso en una tarea en la que muchas veces estás atascado para pasar a otra y refrescar la mente al mismo tiempo que ir sacando pequeñas tareas pendientes y que casi nunca hay tiempo para desarrollar.
Para analizar como ha ido el día a día, cada dos semanas, los viernes a última hora de la tarde, en un ambiente muy relajado, tenemos lo que llamamos las reuniones retrospectivas en la que cada miembro del equipo expone brevemente y por medio de post-its 5 aspectos (start, stop, more, less, continue) en el que se definen que ideas se deben empezar, parar, ampliar, relajar o continuar en la próxima iteración. Con todas estas ideas puestas en un tablero, cada miembro escoje 3 de esas ideas y posteriormente el CTO las recopila para extraer las 3 más importantes.
Ya en la parte menos relativa al agilismo, comentaros que como gestor de repositorios del código fuente utilizamos git y nos ayudamos de git-flow para gestionar las features, los hotfixes y las releases.
Y ya por último el ambiente en el departamento técnico es increíble y prácticamente todo los días comemos juntos y los viernes tras el trabajo solemos ir a tomar algo junto. Así que lo que decía al principio, estoy muy satisfecho con la decisión tomada.