Convocado el II encuentro Agile Aragón

Hace un par de semanas, Teresa Oliver avisaba en la lista de correo de Agile Spain que ya estaba preparado el II encuentro Agile Aragón. Este jueves 17 de Junio en el edificio del ITA en Zaragoza, por problemas logísticos se cambia el día al Lunes 21 de Junio a las 18:30.

En esta ocasión será un evento formal, donde gente de Frogtek, en mi humilde opinión, una de las startups tecnológicas con mejor pinta en Aragón; nos explicará cómo trabajan y el ecosistema de herramientas que utilizan.

Hay un video que ronda desde hace unas semanas por youtube y en algunas listas de correo a las que estoy suscrito, en donde se puede intuir de que hablaran este jueves :)

Vivir en el pueblo

Después de 5 años fuera, he estado 10 meses viviendo en el pueblo que me vio crecer, y donde me nafré taaantas veces haciendo el bestia con mis amigos :).

El tiempo ha pasado volando y parece que fue ayer cuando dejaba Zaragoza, y ahora cuando vuelvo a irme de San Esteban de Litera(para vivir la vida entera! XD), quería compartir como vive un freak/geek/ponga_aquí_lo_que_le_dé_la_gana en un pueblo oscense de menos de 600 habitantes ;)

Fue un gran paso hacia adelante el que llegara por fin la llamada banda ancha hace cosa de 2-3 años al pueblo(no es broma...) y a mi esto me da la posibilidad de poder trabajar sin grandes problemas desde allí. Y como ya estaba trabajando desde hace bastante tiempo a distancia, esta no era una limitación. Por otro lado, en este tiempo he percibido como la brecha digital ha disminuido mucho, pero sigue ahí.

A nivel de servicios, como supondréis, un pueblo tan pequeño tiene pocos: médico por la mañanas, tienda de comestibles, dos bares, una farmacia, un taxi... y durante la semana van apareciendo furgonetas de venta ambulante :P. La parte buena es tener muy cercanos pueblos más grandes como Binéfar y Monzón, donde están la mayoría de servicios que puedes necesitar en el día a día, y a mayores uno siempre puede acercarse a Lleida. Eso sí, por descontado que para vivir en un pueblo así necesitas carné de conducir y coche si quieres sentir que eres libre.

Por supuesto que para vivir en un pueblo pequeñito, siempre es preferible que no se le tenga fobia a la naturaleza en estado puro, osea a los animales y bichos en general ;)

Panorámica de San Esteban

CALIMERO_MODE=ON

Para mi una de las cosas más difíciles de estos meses ha sido hacer cambiar la opinión de la gente que se creía que estaba jugando, tomándome un año sabático o cosas del estilo... empezando por la gente de casa y los recados "por que tú no trabajas" XD. Vamos, que en ocasiones me veía completamente incomprendido.

CALIMERO_MODE=OFF

Y otra de las cosas duras ha sido la falta de gente a mano para frikear. Dejar un poco de lado los cadius, las quedadas del JUG, quedar a tomar unas cañas/cafés con amigos del mundillo... y el montón de eventos relacionados con internet y tecnología de una o otra forma a los que me había acostumbrado. De todas formas he ido escapándome a algún evento, que hay que ir dejándose ver :)

Llegando a este punto, imagino que alguno os preguntaréis que hacía para salir del exceso de calma/monotonía y para despejar la cabeza. Pues básicamente manterme activo a base de hacer deporte: ir al gimnasio, salir a correr, entrenar a fútbol, jugar alguna pachanga... por supuesto que no todo en el mismo día :P, pero siempre me ha sentado bien machacar un poco al cuerpo haciendo deporte para descansar la mente.

Llega la Conferencia Agile-Spain 2010

Todavía no sé si podré escaparme para asistir a la Conferencia Agile-Spain 2010, en Madrid los días 10 y 11 de Junio. Seguramente casi hasta a última hora no sabré si puedo ir. Pero sólo ojeando el programa, se ve una pinta estupenda: testing, scrum, integración continua, kanban...

La inscripción a la conferencia cuesta 95€ para los 2 días con desayunos, comidas y cafés incluídos. Eso sí, si se quiere asistir a algún taller, se tiene que pagar por separado, en la misma web del evento aparecen la duración y precio de los talleres.

Conferencia Agile Spain 2010

Es una cita donde se encontrarán empresarios, desarrolladores, gerentes, investigadores, etc. Está enfocada principalmente a la industria de tecnologías de la información y consultoría tecnológica.

CAS2010 es una oportunidad para intercambiar experiencias y hacer contactos con otros profesionales del sector, además de examinar las últimas tendencias en el desarrollo del software ágil de mano de las figuras más representativas del panorama nacional.

Henrik Kniberg será el orador principal de la conferencia. Henrik es autor de “Scrum y XP desde las trincheras” y de “Kanban vs. Scrum – Obteniendo lo mejor de ambos”, además de ser Certified Scrum Trainer, miembro de la junta directiva de la Agile Alliance, y uno de los máximos divulgadores de la aplicación práctica de las metodologías ágiles internacionalmente.

Y aparte de las sesiones y talleres, seguro que vale la pena ir también para charlar con ponentes y otros asistentes, que suele ser de lo mejor en la mayoría de los eventos ;)

SQL con Javascript: Web SQL Database

Como supongo que muchos ya sabréis, una especificación de HTML5 es Web SQL Database para persirtir datos en una base de datos relacional embebidos en el navegador web(la otra alternativa es Web Storage, para persistir datos como clave valor). Esto puede tener muchas aplicaciones, en mi caso lo he utilizado para implementar el sistema de favoritos de DNDzgz.

Cuando pretendamos sacar partido de las nuevas características de HTML5 debemos tener en cuenta que cada navegador puede soportar sólo algunas especificaciones, no es un todo o nada, por lo que lo primero que deberemos hacer es comprobar que soporta la especificación que queremos usar, por ejemplo:

function supports_local_database() {
return !!window.openDatabase;
}

Si existe openDatabase, crearemos la conexión a la base de datos:


db = openDatabase('dndzgz', '1.0', 'DNDzgz', 65536);

Una vez abierta la conexión, podremos ejecutar cualquier tipo de query SQL(compatible con SQLite), dentro de una transacción. Por ejemplo crear una tabla:

db.transaction(
function(transaction) {
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS favorites ' +
' (id INTEGER NOT NULL, ' +
' service VARCHAR(255) NOT NULL, ' +
' date DATE NOT NULL,' +
' name VARCHAR(255) NOT NULL, ' +
' latitude REAL NOT NULL, ' +
' longitude REAL NOT NULL, ' +
' PRIMARY KEY (id,service));'
);
}
);

Insertar datos:

db.transaction(
function(transaction) {
transaction.executeSql(
'INSERT INTO favorites (id, service, date, name, latitude, longitude) VALUES (?, ?, ?, ?, ?, ?);',
[id, service, new Date(), name, latitude, longitude],
callBack,
errorCallBack
);
}
);

Eliminar datos:

db.transaction(
function(transaction) {
transaction.executeSql('DELETE FROM favorites WHERE id=? AND service=?;',
[id,service], null, errorCallBack);
}
);

Y por supuesto mostrarlos:

db.readTransaction(
function(transaction) {
transaction.executeSql(
'Select * from favorites;', [],
function(transaction, result){
for (var i=0; i < result.rows.length; i++) {
var row = result.rows.item(i);
alert(row.name);
alert(row.service);
}
},
errorCallBack
);
}
);

Como podéis ver, a executeSql se le pasa primero la query, seguidamente un array con los valores de los argumentos de la query, y finalmente una función de callback y otra de callback para el caso de que existan errores. Y existen dos tipos de transacciones: transaction y readTransaction, la primera es de lectura-escritura, mientras que la segunda es de sólo lectura.

En fin, supongo que a otros también os pasará lo mismo, resulta bastante raro estar tirando queries SQL desde javascript. Pero puede resultar útil para muchos casos, empezando por descargar de responsabilidades y carga al lado servidor.