tag:blogger.com,1999:blog-122047832020-02-29T08:56:43.170+01:00Cavilaciones somatomórficas ¿o no?"Cuando en el mundo aparece un verdadero genio, puede identificársele por este signo: todos los necios se conjuran contra él." - Jonathan SwiftUnknownnoreply@blogger.comBlogger472125tag:blogger.com,1999:blog-12204783.post-36670743774161646002012-03-21T22:21:00.000+01:002012-03-21T22:23:15.871+01:00La mirada del bosque<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-sYHX_39Hi2w/T2jyUGcXftI/AAAAAAAAAXI/fhRfzIVYv38/s1600/port-lmdb.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-sYHX_39Hi2w/T2jyUGcXftI/AAAAAAAAAXI/fhRfzIVYv38/s320/port-lmdb.jpg" width="202" /></a></div><div style="text-align: justify;"><b>La mirada del bosque</b> es un libro escrito por el aragonés <a href="http://chesusyuste.wordpress.com/">Chesús Yuste</a> conocido por, entre otras muchas cosas, su blog <a href="http://innisfree1916.wordpress.com/">Innisfree</a>, o al menos así fue como yo lo conocí y a través del blog encontré este libro.<br /><br />En año 1992, en un pequeño pueblo del norte de Irlanda sucede algo inédito hasta la fecha: un asesinato. El grupo más inquieto de lugar (el alcalde, la maestra, el cura...) se propone investigarlo hasta dar con el culpable. Ese es el argumento del que se sirve Chesús para mostrarnos como era la vida en un pueblo del Ulster antes de la entrada de la República de Irlanda en la Unión Europea y el despertar del Tigre Celta.<br /><br />No voy a negar que compré el libro básicamente por estar ambientado en Irlanda y estar escrito por un aragonés.<br /><br />El libro tiene menos de 200 páginas y ya os puedo decir que en mi opinión le faltan otras 100 pues tan pocas páginas no dan para contar la historia de un asesinato, describir a los muchos personajes principales, crear intriga y describir Irlanda. Y lo digo porque este libro si que describe Irlanda, si que cuenta la historia del asesinato pero no describe o dedica las suficientes páginas a describir a los personajes ni llega a crear una intriga real. Por ejemplo, hay un personaje, irrelevante completamente para la historia principal, que es un chino-irlandés. Es un personaje que me gusto mucho y que podría haber formado parte de una historia corta paralela que mareara un poco al lector para hacerle creer que tenía relación con la principal pero, por la falta de páginas, este personaje se queda "cojo" (y aun así es mi personaje preferido).<br /><br />Es un libro entretenido, muy fácil de leer (tanto que se puede leer en una tarde) y que muestra Irlanda de una forma bastante fidedigna pero un libro al que como digo le faltan páginas.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-2899627841810689542012-02-13T21:46:00.001+01:002012-02-13T21:46:16.132+01:00En la cabeza de Steve Jobs<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-B8ND2HJSoo8/Tzl2Ruh62aI/AAAAAAAAAWw/urLa85crBsE/s1600/En+la+cabeza+de+steve+jobs.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-B8ND2HJSoo8/Tzl2Ruh62aI/AAAAAAAAAWw/urLa85crBsE/s320/En+la+cabeza+de+steve+jobs.jpg" width="229" /></a></div><div style="text-align: justify;"><b>En la cabeza de Steve Jobs</b> es un libro escrito por <a href="http://en.wikipedia.org/wiki/Leander_Kahney">Leander Kahney</a> en el año 2009 que relata en poco más de 200 páginas el carácter de Jobs y la influencia de este en Apple y toda la industria de la informática/música/etc.<br /><br />El libro es fácil de leer aunque en ocasiones te produce sensaciones de <i>déjà vu</i> al estar dividido en ocho cápitulos relacionados entre sí por lo que en ocasiones se repite. Por ejemplo en un cápitulo en el que habla del primer Mac explica que era un sistema cerrado y en el último cápitulo donde explica como le gustaban a Jobs los sistemas cerrados/completos vuelve a poner el ejemplo del Mac repitiendo prácticamente un par de líneas.<br /><br />Creo que es un libro que hace dos años podía ser muy recomendable para alguien con interés en la vida y/u obra de Jobs y que no siguiera el día a día de Apple. Pero a día de hoy, con la biografía oficial en las tiendas y sobretodo con Jobs ya fallecido, ha quedado completamente obsoleto.<br /><br />Para que os hagais a la idea en un cápitulo comenta que a Jobs le diagnosticaron un cáncer pero que finalmente era operable y que ahora "esta vivo y contento"... al leerlo parece un chiste de humor negro pero hay que recordar que el libro fue escrito en 2009, todavía no existía el iPad, Jobs estaba vivo, ni siquiera la AppStore había sido lanzada...<br /><br />Resulta graciosa una de las críticas en la contraportada: "<i>Entretenido, bien escrito, muy informativo y, lo más importante, <b>actualizado</b></i>".<br /><br />En resumen, un libro completamente desfasado y que no os recomiendo.</div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-32326139848041079652012-01-22T12:41:00.002+01:002012-01-22T12:46:28.876+01:00The Girl Who Kicked the Hornets' Nest<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-IrodKst54ew/TxvyPT4e7cI/AAAAAAAAAWM/GVsudomj8TE/s1600/millenium.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-IrodKst54ew/TxvyPT4e7cI/AAAAAAAAAWM/GVsudomj8TE/s1600/millenium.jpg" /></a></div><div style="text-align: justify;"><b>The Girl Who Kicked the Hornets' Nest</b> es el tercer y último libro de la trilogía <i><a href="http://vsbabylon.blogspot.com/search?q=Millennium">Millennium</a></i>. Al igual que pasa con los dos libros anteriores, el titulo cambia respecto a la versión sueca (los libros en castellano si que traducen fielmente los titulos).</div><div style="text-align: justify;">Este libro es una continuación del <a href="http://vsbabylon.blogspot.com/2011/09/girl-who-played-with-fire.html">segundo</a> y empieza justo donde el segundo acaba. Da la sensación que más que una trilogía es un 1+2. Me explico, este tercer libro continua la historia comenzada en el segundo mientras que el <a href="http://vsbabylon.blogspot.com/2011/01/girl-with-dragon-tattoo.html">primero</a> era una historia independiente. Pero al contrario de lo que ocurría en el segundo, donde la acción comienza casi desde la primera página, aquí tenemos que esperar hasta mitad del libro (a partir de la página 300 o quizá más) para que empieze lo divertido.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Creo que estaban en lo correcto los que me dijeron que se puede leer el primer libro y parar... pero que si lees el segundo debes leer el tercero. En este la historia se acaba, no deja cabos sueltos.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">En resumen, y con cuidado para no estropearos el segundo libro, aquí Salander se ve envuelta en un proceso judicial y Blomkvist tendrá que usar todos los medios (legales o ilegales) para probar la inocencia de Lisbeth. Y la verdad es que tampoco puedo contar mucho más sin revelar el final del segundo libro asi que tendreís que leerlos si quereis saber de que van.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Una vez acabada la trilogía me reafirmo en decir que son unos libros entretenidos pero no me parecen tan buenos como la gente dice.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-86626062765248774202011-09-26T21:18:00.000+02:002011-09-27T00:00:27.323+02:00The Girl who Played with Fire<div style="text-align: justify;"><a href="http://3.bp.blogspot.com/-rAYgqGKvK7c/Tn-Wjfdoi4I/AAAAAAAAAVw/5LUHUEYde68/s1600/TGWPWF.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5656405193486011266" src="http://3.bp.blogspot.com/-rAYgqGKvK7c/Tn-Wjfdoi4I/AAAAAAAAAVw/5LUHUEYde68/s320/TGWPWF.jpg" style="cursor: hand; cursor: pointer; float: left; height: 320px; margin: 0 10px 10px 0; width: 208px;" /></a><span style="font-weight: bold;">The Girl who Played with Fire</span> es el segundo libro de la trilogía <span style="font-style: italic;"><a href="http://vsbabylon.blogspot.com/search?q=Millennium">Millennium</a>. </span>Los protagonistas vuelven a ser los mismos que en el <a href="http://vsbabylon.blogspot.com/2011/01/girl-with-dragon-tattoo.html">primer libro</a> aunque en esta ocasión se verán envueltos en una trama de trata de blancas y asesinatos.<br /><br />Al contrario de lo que ocurría en el libro anterior, en este no tenemos que esperar a la página 200 para que empiecen a ocurrir sucesos interesantes que le darán el libro mayor dinamismo y lo harán mucho más fácil de leer, de hecho me parece que este es un libro muy adictivo.<br /><br />La historía vuelve a estar entretenida pero me sigue sin parecer tan bueno como la gente dice que son. Para mi las novelas policiacas son las de <a href="http://vsbabylon.blogspot.com/search?q=Agatha%20Christie">Agatha Christie</a>, esas donde te presentan a todos los personajes y mientras leer hace conjeturas de cual puede ser la realidad. Un libro donde al final aparecen personajes transcendentales producen cierta frustración si has estado todo el libro haciendo tus conjeturas.<br /><br />De todas formas como dije del <a href="http://vsbabylon.blogspot.com/2011/01/girl-with-dragon-tattoo.html">The Girl with the Dragon Tattoo</a> son libros muy recomendables y entretenidos.<br /><br />Para un resumen más completo y otro punto de vista podéis visitar <a href="http://libroesfera.blogspot.com/2011/02/la-chica-que-sonaba-con-una-cerilla-y.html">Libroesfera</a>. </div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-11612206608022652972011-08-21T20:15:00.012+02:002011-08-22T22:01:50.219+02:00Effective Java: Methods Common to All Objects<div style="text-align: justify;">El capítulo tres de <a href="http://vsbabylon.blogspot.com/2011/07/effective-java-second-edition.html">Effective Java</a> explica los métodos que podemos sobrescribir de Object (<span style="font-style: italic;">equals</span>, <span style="font-style: italic;">hashCode</span>, <span style="font-style: italic;">toString</span>, <span style="font-style: italic;">clone</span> y <span style="font-style: italic;">finalize</span>).
<br />
<br />En el caso del <span style="font-style: italic;">equals</span> lo más importante es recordar el contrato y las propiedades que este tiene que cumplir lo que provoca que no haya forma de extender una clase instanciable añadiendo un nuevo atributo y seguir cumpliendo el contrato. Para este tipo de situaciones la única solución es optar por la composición en lugar de la herencia (pág 37-41).
<br />
<br />El <span style="font-style: italic;">hashCode</span> deberá ser sobrescrito siempre que el equals lo sea y en caso de que este se complicado de calcular podremos optar por usar <span style="font-style: italic;">lazy loading</span>.
<br />
<br />El <span style="font-style: italic;">toString </span>debería ser siempre sobrescrito y es aconsejable en según que situaciones explicar claramente en el javadoc del método el formato en el que se devuelve la información. Por ejemplo:
<br /><pre class="java" name="code">/**
<br />* Returns the string representation of this phone number.
<br />* The string consists of fourteen characters whose format
<br />* is "(XXX) YYY-ZZZZ", where XXX is the area code, YYY is
<br />* the prefix, and ZZZZ is the line number. (Each of the
<br />* capital letters represents a single decimal digit.)
<br />*
<br />* If any of the three parts of this phone number is too small
<br />* to fill up its field, the field is padded with leading zeros.
<br />* For example, if the value of the line number is 123, the last
<br />* four characters of the string representation will be "0123".
<br />*
<br />* Note that there is a single space separating the closing
<br />* parenthesis after the area code from the first digit of the * prefix. */
<br />@Override public String toString() {
<br /> return String.format("(%03d) %03d-%04d", areaCode, prefix, lineNumber);
<br />}</pre>En cuanto al <span style="font-style: italic;">clone</span> debemos recordar que si sobrescribimos este método en una clase no-final tendremos que invocar el <span style="font-style: italic;">super.clone()</span>. Otros consejos que da son que las clases inmutables no deberían ofrecer un <span style="font-style: italic;">clone</span> porque generaría otro objecto exactamente igual que el anterior y que no se va a modificar. Y para terminar explica todos los problemas que conlleva este método aconsejando que en ocasiones es más simple ofrecer un <span style="font-style: italic;">copy constructor</span>:<pre class="java" name="code">public Yum(Yum yum);</pre>O una <span style="font-style: italic;">copy factory</span>:<pre class="java" name="code">public static Yum newInstance(Yum yum);</pre>También hay unas lineas dedicadas al <span style="font-style: italic;">compareTo</span> de la interfaz <span style="font-style: italic;">Comparable</span> y explica el "truco" de devolver la resta cuando comparamos dos números además de explicar que esto no funciona cuando comparamos un números positivo grande y un negativo ya que puede desbordar y devolver un resultado engañoso.
<br />
<br />Para terminar <span style="font-style: italic;">finalize</span> no debería ser utilizado.
<br />
<br /></div>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-12204783.post-73297810137146498912011-08-03T01:11:00.005+02:002011-08-22T18:53:03.711+02:00Effective Java: Creating and destroying objectsEn el capítulo dos del libro <a href="http://vsbabylon.blogspot.com/2011/07/effective-java-second-edition.html">Effective Java</a> se tratan los temas relacionados con la creación y destrucción de objetos. Es un capítulo bastante básico donde explica que hay que usar <span style="font-style: italic;">Boolean.TRUE</span> en lugar de <span style="font-style: italic;">new Boolean(true)</span> y que nunca hagas un <span style="font-style: italic;">new String("ejemplo")</span>.
<br />Podemos destacar dos puntos de este capítulo:
<br /><ul><li>A partir de Java 5.0 la mejor forma de crear un singleton es usando un Enum:</li></ul><pre class="java" name="code">public enum Elvis {
<br /> INSTANCE;
<br />
<br /> public void leaveTheBuilding() { ... }
<br />}</pre><ul><li>Cuando tenemos un constructor con muchos parámetros algunos de ellos obligatorios y otros opcionales, la mejor opción es crear un Builder:</li></ul><pre class="java" name="code">// Builder Pattern
<br />public class NutritionFacts {
<br /> private final int servingSize;
<br /> private final int servings;
<br /> private final int calories;
<br /> private final int fat;
<br /> private final int sodium;
<br /> private final int carbohydrate;
<br />
<br /> public static class Builder {
<br /> // Required parameters
<br /> private final int servingSize;
<br /> private final int servings;
<br /> // Optional parameters - initialized to default values
<br /> private int calories = 0;
<br /> private int fat = 0;
<br /> private int carbohydrate = 0;
<br /> private int sodium = 0;
<br />
<br /> public Builder(int servingSize, int servings) {
<br /> this.servingSize = servingSize;
<br /> this.servings = servings;
<br /> }
<br />
<br /> public Builder calories(int val)
<br /> { calories = val; return this; }
<br /> public Builder fat(int val)
<br /> { fat = val; return this; }
<br /> public Builder carbohydrate(int val)
<br /> { carbohydrate = val; return this; }
<br /> public Builder sodium(int val)
<br /> { sodium = val; return this; }
<br />
<br /> public NutritionFacts build() {
<br /> return new NutritionFacts(this);
<br /> }
<br /> }
<br />
<br /> private NutritionFacts(Builder builder) {
<br /> servingSize = builder.servingSize;
<br /> servings = builder.servings;
<br /> calories = builder.calories;
<br /> fat = builder.fat;
<br /> sodium = builder.sodium;
<br /> carbohydrate = builder.carbohydrate;
<br /> }
<br />}
<br /></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-87675776544650975402011-07-30T23:17:00.008+02:002011-08-22T19:00:27.847+02:00Effective Java Second Edition<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-KeV_GRLYL0g/TjR_-_6uoaI/AAAAAAAAAUo/USP8B1nhMuw/s1600/the-effective-java-2nd-edition.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 207px; height: 260px;" src="http://4.bp.blogspot.com/-KeV_GRLYL0g/TjR_-_6uoaI/AAAAAAAAAUo/USP8B1nhMuw/s320/the-effective-java-2nd-edition.jpg" alt="" id="BLOGGER_PHOTO_ID_5635269754033709474" border="0" /></a>Ayer terminé de leer <span style="font-weight: bold;">Effective Java (2nd Edition)</span>, el libro de <a href="http://en.wikipedia.org/wiki/Joshua_Bloch">Joshua J. Bloch</a>.
<br />El libro no resulta cómodo de leer de principio a fin, a veces pienso que es mejor leer el índice para saber que contiene y usarlo como libro de referencia. No es que el libro sea denso o aburrido, es que simplemente te explica y comenta puntos que ya te has encontrado y con los que has peleado en tu día a día. Otros capítulos sí que son interesantes porque te ofrecen soluciones efectivas a problemas muy comunes. Ese tipo de problemas que sabes que tienen varias soluciones cada una con sus pros y sus contras y no sabes muy bien por cual decidirte.
<br />
<br />El punto clave de leer este libro fue el autor. Saber la respuesta que da el hombre que diseño el API de Collections a ciertos problemas es muy útil para ganar discusiones en la oficina. La típica cuestión de poner las constantes en una clase o en una interfaz se soluciona con el comodín del: "Joshua Bloch dice que en una clase con el contructor privado". Se acabó la discusión.
<br />
<br />En definitiva me parece un libro imprescindible si tienes poca o ninguna experiencia profesional, de lo contrario podrás encontrar capítulos curiosos e interesantes pero otros te resultarán obvios porque ya los has aprendido con el tiempo.
<br />
<br /><span style="font-weight: bold;">Resumen de los diferentes capítulos</span> (iré actualizando la lista conforme los vaya escribiendo)<span style="font-weight: bold;">:</span><a href="http://vsbabylon.blogspot.com/2011/08/effective-java-creating-and-destroying.html">
<br /></a><ul><li><a href="http://vsbabylon.blogspot.com/2011/08/effective-java-creating-and-destroying.html">Effective Java: Creating and destroying objects</a></li><li><a href="http://vsbabylon.blogspot.com/2011/08/effective-java-methods-common-to-all.html">Effective Java: Methods Common to All Objects</a></li></ul></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-9328498134329415362011-06-06T14:14:00.006+02:002011-06-06T14:55:53.299+02:00Start Small, Stay Small: A Developer´s Guide to Launching a Startup<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.softwarebyrob.com/images/cover.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 224px;" src="http://www.softwarebyrob.com/images/cover.jpg" alt="" border="0" /></a><span style="font-weight: bold;">Start Small, Stay Small: A Developer´s Guide to Launching a Startup</span> es un libro de <a href="http://www.softwarebyrob.com/">Rob Walling</a> que sirve como guía para quien quiera crear su propia Startup.<br />Es un libro corto, unas 200 páginas, que abarca todo el proceso desde como tener las ideas hasta como terminarlas (o vendiendo la empresa o manteniéndola generando beneficios).<br />Si bien me parece un libro bastante básico (cualquiera que haya estudiado Administración de empresas, un MBA o un <a href="http://www.dbs.ie/international-business-studies/evening-diploma.htm">diploma</a> sabe mucho más de alguno de los puntos que el libro cita) por otro lado al cubrir todo el proceso siempre hay algún cápitulo del que desconocías o sabías poco.<br />Lo que más me gusta de este libro es que no se trata de <a href="http://www.enriquedans.com/">otro vendedor de mapas del tesoro</a>, sino que Rob ya encontró el tesoro y ahora explica como otros pueden también lograrlo; habla constantemente de sus propias experiencias<br />Y para terminar os comento algunos de los consejos que destacaría de este libro:<br /><ul><li>Ir a por nichos pequeños donde las grandes empresas no puedan entrar a competir.</li><li>Delegar, delegar y delegar (el recomienda y usa <a href="http://www.virtualassistant.org/">VA´s</a>)</li><li>En cuanto puedas lanza un Micro sitio para ver si funciona</li><li>No quieras vender a la primera visita... fideliza</li><li>Lista de correo... imprescindible para un buen marketing (el marketing en Facebook, Twitter, etc son mitos que a ti como pequeño emprendedor no te van a servir)</li><li>Tener varios productos te ayudará diversificar riesgo y reutilizar lo aprendido (con menos inversión generas más retorno)</li></ul>Es un libro que recomendaría a todo programador que quiera lanzar una startup y que crea que con tener un código de calidad ya va a triunfar.<br /></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-55946182437197979842011-02-22T22:35:00.008+01:002011-02-27T21:46:06.711+01:00Java Dynamic ProxiesNo siempre tenemos la posibilidad de usar <a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming">aspectos</a> para hacer logging the nuestra aplicación y el comenzar todos los métodos con un <span style="font-style: italic;">log.debug()</span> es algo que querremos evitar. Para esos casos podemos echar mano de los proxies dinámicos.<br /><br />Lo que haremos será "engañar" a la aplicación dándole un proxy en lugar del objeto real y dicho proxy se encargará de hacer el logging y de delegar en el objeto real la lógica de negocio.<br /><br /><pre name="code" class="java"><br />public class LoggingHandler implements InvocationHandler {<br /><br /> private final Logger LOG;<br /><br /> private Object delegate;<br /><br /> public LoggingHandler(Object delegate) {<br /> this.delegate = delegate;<br /> this.LOG = Logger.getLogger(delegate.getClass());<br /> }<br /><br /> public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {<br /> try {<br /> LOG.debug(">>" + method.getName());<br /><br /> Object result = method.invoke(delegate, args);<br /> return result;<br /> } catch (InvocationTargetException e) {<br /> throw e.getTargetException();<br /> } finally {<br /> LOG.debug("<<" + method.getName()); <br /> } <br /> } <br />} <br /></pre>Utilizarlo es realmente simple:<br /><pre name="code" class="java"><br />Test t = new TestImpl();<br /><br />InvocationHandler handler = new LoggingHandler(t);<br /><br />Test proxy = (Test) Proxy.newProxyInstance(<br /> t.getClass().getClassLoader(),<br /> t.getClass().getInterfaces(),<br /> handler);<br /><br />proxy.echo("hello world");<br /></pre>Se da por supuesto que como buenos programadores estáis programando usando interfaces en caso contrario no podréis "dar el cambiazo".Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-55054858248423405872011-02-21T21:03:00.021+01:002011-02-22T00:38:24.557+01:00Spring I/O<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zyeGDgSKvi8/TWLFfXFVb1I/AAAAAAAAAT8/wkyE5JDAhvU/s1600/logo_small.png"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 250px; height: 85px;" src="http://3.bp.blogspot.com/-zyeGDgSKvi8/TWLFfXFVb1I/AAAAAAAAAT8/wkyE5JDAhvU/s320/logo_small.png" alt="" id="BLOGGER_PHOTO_ID_5576236431201103698" border="0" /></a>El jueves y viernes de la semana pasada tuvo lugar en Madrid el <a href="http://www.javahispano.org/springio11/">Spring I/O 2011</a>, un evento relacionado con las tecnologías de SpringSource (Spring Framework, Grails, Groovy...), así que cogí la mochila y me fuí un par de días para allí.<br /><br />Tengo que decir que había tres tracks simultáneos (dos de conferencias y uno de talleres) así que sólo pude asistir a algunas charlas y ningún taller (que como iba con el equipaje justo no pude llevar el <a href="http://vsbabylon.blogspot.com/2006/06/una-foto-del-pequeo.html">portátil</a>).<br /><br />Lo primero de todo fue registrarse, momento en el cual nos dieron un bolsa con un par de barajas para hacer <a href="http://en.wikipedia.org/wiki/Planning_poker">planning poker</a>, una pegatina de <a href="https://www.masterbranch.com/">Masterbranch</a>, una camiseta del evento (la cual hubiera sido más chula y más llevable si hubiera sido más minimalista) y alguna cosilla más.<br /></div><div style="text-align: justify;">Después comenzamos con la keynote de <a href="http://www.springsource.com/people/jhoeller">Juergen Holler</a>. Nos contó una visión general de la situación y de lo que nos venía en el futuro próximo, me quedé con el tema de Java 7 y la concurrencia para tartar de utilizar los diferentes cores que ya todas las CPU´s tienen.<br />Al terminar, la gente de <a href="http://www.escueladegroovy.com/">Escuela de Groovy</a> hicieron unos minutos de publicidad (que para algo eran Platinum Sponsors y costeaban gran parte de las conferencias). También hicieron notar que más de la mitad de las conferencias eran sobre el ecosistema Groovy & Grails, algo que es para reflexionar.<br /></div><br /><div style="text-align: justify;"><span style="font-weight: bold;">Spring Data</span> fue la conferencia que siguió al descanso para el café. El producto me resulto decepcionante. No acabo de ver que ventaja tiene usar Spring Data para acceder a los bases de datos NoSQL, lo único la jerarquía de excepciones. Sinceramente si no estas usando Spring, ni te plantees usar Spring Data. Si ya estás usando el core del framework pues quizá te aporte algo.<br />En la conferencia sobre <span style="font-weight: bold;">Spring AMQP</span> <a href="http://twitter.com/sergialmar">Sergi Almar</a> nos explicó: porqué usar mensajeria asíncrona, porqué usar un protocolo como AMQP en lugar de JMS y finalmente nos habló de <a href="http://www.rabbitmq.com/">RabbitMQ</a>. Salí convencido. Si puedes usar un protocolo que te permite comunicar con .Net u otras tecnologías para que vas a cerrate sólo a Java, que es lo que hace JMS.<br /><br />Por la tarde tuvimos otras cuatro conferencias. La primera "<span style="font-weight: bold;">De cero a multinacional con Grails y EC2</span>" en la que si bien es cierto que sus números no me impresionaron (picos de 40.000 usuarios) me quedé con el hecho de que más y más compañías con productos reales están apostando por Grails. El usar Amazon EC2 no me sorprendió, me parece que son los que mejor están haciendo las cosas en el mundo "cloud".<br />Y después llegó la primera decepción: <span style="font-weight: bold;">Pruebas de aplicaciones web con Selenium 2 y Webdriver</span>. Si pones en el título Selenium 2 ciñete a él. Los que allí estabamos ya conociamos Selenium y lo estamos usando, al menos en mi caso quería ver lo nuevo de la siguiente versión. Al final nos hablo de Webdriver y los Page Objects (el primero me gustó mucho y el segundo me pareció matar moscas a cañonazos).<br />De vuelta al mundo Grails, Aitor nos habló sobre <span style="font-weight: bold;">Probando con Grails</span>. Un poco básico, al final todo se resumía en <a href="http://www.urbandictionary.com/define.php?term=TATFT">TATFT</a>.<br />Y para terminar el día que mejor que cuatro <span style="font-weight: bold;">Spring Puzzles</span> con Erick Camacho y Sergi Almar. Fue algo entretenido y curioso, que a las 18:30 de la tarde no se hizo nada aburrido. Habría que señalar que el primer puzzle (una variable static no inicializada por el contenedor) era fácil, y el último era demasiado grande como para enterarte de donde estaba el truco (muchas clases y líneas que tener en cuenta), pero estuvo bien.<br /><br />El segundo día comenzamos con una keynote de <a href="http://www.springsource.com/people/grocher">Graeme Rocher</a>. De nuevo te presenta lo que viene en el futuro próximo pero para mi que no uso Grails no me resulto muy útil.<br />Y seguido me fuí a ver a <a href="http://twitter.com/gimenete">@gimenete</a> hablar de <a href="http://redis.io/">Redis</a>. <strike>Cual talibán</strike>, me dio la impresión de que defendía Redis como base de datos o caché en cualquier situación. Fue la charla donde más preguntas se hizo de todas en las que estuve. Me gustó mucho como la estructuró, fue muy dinámica y didáctica aunque mi conclusión final fue que no voy a usar bases de datos NoSQL mientras pueda seguir con las relacionales. Las NoSQL están muy bien con unos requerimientos más o menos cerrados pero creo que instalar una nueva versión de una aplicación que corre sobre Redis en un cliente que usaba una versión anterior debe ser muy doloroso... no podemos hacer el <span style="font-style: italic;">Alter Table</span>, tenemos que meter código en nuestra aplicación que maneje las situaciones y eso no me gusta. Fue una de las conferencias más chulas y eso que poco tenía que ver con SpringSource.<br /><br />En <span style="font-weight: bold;">Effective Groovy </span>volvimos a ver las virtudes de ese lenguaje. Te das cuenta de lo <span style="font-style: italic;">verbose</span> que es Java y de que los closures son una maravilla. Increible el tener una lista de personas y con un simple <span style="font-style: italic;">.collect()</span> puedes recuperar las personas que cumplen ciertas condiciones. Otra cosa que me gustó muchísimo es la anotación <span style="font-style: italic;">@Equalsandhashcode</span>. Se acabó el botón derecho generar <span style="font-style: italic;">equals()</span> y <span style="font-style: italic;">hashcode()</span>.<br /><br />Sin embargo la conferencia <span style="font-weight: bold;">Spring Web Services</span> volvió a decepcionarme. Muy básica, lo que allí nos contaron lo puedes encontrar buscando en google "spring web services" y leyendo un par de parrafos. No estuvo mal la conferencia ni Sam Brannen, simplemente esperaba más.<br /><br />Con <span style="font-weight: bold;">Spring Hadoop</span> me paso lo contario. Como no sabía que era Hadoop pero había oido hablar mucho de él tenía ganas de ir a ver que nos contaban. Supongo que para alguien que sabía de <a href="http://hadoop.apache.org/">Hadoop</a> le parecería básica pero para mi me resultó muy útil y aclaratoria. Por cierto, si un día tengo que trabajar con Hadoop tengo claro que usaré Spring Hadoop para simplificar el código ¡vaya diferencia!.<br /><br />Y la última conferencia a la que pude ir fue <span style="font-weight: bold;">Introducing Summer - The HTML5 Library for Java and Scala</span>. Y fue la peor pero con mucha diferencia, la única a la que me arrepiento de haber ido. El tipo, Rostilav Hristov no tenía ninguna gana de hablar, su inglés era bueno, no es excusa, era sencillamente como si a un programador que no sabe que contar de su librería le dices que hable de ella. No lo vi nada motivado y cuando miré las caras del resto de la gente (la sala estaba llena) ni uno atendía.<br /><br />Si habéis leido hasta aquí pues vais a tener premio, vamos a criticar y dar algún palo: <span style="font-weight: bold;">la comida</span>. Me pareció vergonzoso. Primero tengo que decir que pagamos 20 euros por todo, lo cual es una cifra ridícula pero eso no da derecho a que te den una bolsa con un par de sándwich, un batido, etc. Para empezar porque estoy seguro de que esa bolsa costaría los 4-5 euros que costaba el menú en la cafetería de forma que estoy convencido que la razón de darnos esa bolsa no eran los costes sino evitar que la gente fuera al comedor de la universidad. Eramos más de 300 personas y puede que saturaramos el comedor no lo se, pero me habría gustado una explicación. O quizá la razón era la conferencia que Leche Pascual y un montón de encorbatados tenían el viernes a la vez que el Spring I/O, ellos sí comieron en el comedor e incluso se quejaron de compartir comedor con estudiantes (lo se por fuentes fidedignas, me encanta esa palabra!).<br /><br />Si se da el palo habrá que dar también la zanahoria: me parece un trabajo increible el que ha hecho <span style="font-weight: bold;">Sergi Almar</span> (y el resto de la organización: <a href="http://www.javahispano.org/">Javahispano</a>, etc) organizando todo esto. Hemos tenido gente importantísima, conferencias muy interesantes, diferentes tracks para poder elegir lo que más te interesaba... en fin, no entiendo como no va más gente, es la mejor forma de estar al día, de saber de primera mano que están haciendo otros programadores o empresas... De hecho mi crítica a la comida es debido a que es el único "pero" que se le puede hacer a este evento. Nunca faltaron las botellas de agua gratis, café, galletas, voluntarios a los que preguntar cuando no sabías donde era un taller, etc.<br /><br />Y para acabar, volver a felicitar a Sergi y el resto de la organización por el BeerWorking que organizaron el jueves por la tarde, algo que se echaba de menos en otros eventos.<br /><br />De nuevo, como <a href="http://vsbabylon.blogspot.com/2009/06/sun-open-communities-forum.html">dos años atrás</a>, un diez para las instalaciones de la <a href="http://www.ceu.es/">Universidad San Pablo CEU</a> y un cuatro para la localización (aunque debo aclarar que la organización puso autobuses gratuitos).<br /><br /><div style="text-align: justify;">Y aquí tenéis una foto de los dos cracks de la programación que coincidieron en el Spring I/O:<br /><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-HbAajwYuHXM/TWLWCYYJ09I/AAAAAAAAAUE/79GHYPnwJ9w/s1600/IMG_0563.JPG"><img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/-HbAajwYuHXM/TWLWCYYJ09I/AAAAAAAAAUE/79GHYPnwJ9w/s320/IMG_0563.JPG" alt="" id="BLOGGER_PHOTO_ID_5576254625029936082" border="0" /></a><br /><span style="font-weight: bold;">Actualización</span>: Una pena perderme el taller de <a href="http://twitter.com/dani_latorre">@dani_latorre</a> del que la gente habló muy bien. Espero que lo repita algún día dentro del <a href="http://cachirulovalley.com/">Cachirulo Valley</a>.<br /></div>Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-12204783.post-3857354674908548272011-02-07T20:09:00.003+01:002011-02-08T22:53:00.691+01:00El viento en Dublín<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dTyoJ9DuVIo/TVBE-bBGQDI/AAAAAAAAAT0/wLurCLGm4YI/s1600/IMGP1646.JPG"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_dTyoJ9DuVIo/TVBE-bBGQDI/AAAAAAAAAT0/wLurCLGm4YI/s320/IMGP1646.JPG" alt="" id="BLOGGER_PHOTO_ID_5571028578252242994" border="0" /></a>Pues así es como ha quedado un árbol al lado de mi casa. Este fin de semana ha sido muy duro, una mujer ha muerto al caerle un árbol encima. El viento aquí en Dublín no tiene nada que envidiar al de Zaragoza pero a eso añadirle que no es un viento seco pues está lloviendo.<br />Espero que pasen pronto estos días y volvamos a la normalidad (que haga frio, viento o lluvia pero no los tres a la vez).<br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-54326255056409601242011-02-01T23:10:00.002+01:002011-02-01T23:13:39.332+01:00From Limerick<iframe title="YouTube video player" class="youtube-player" type="text/html" width="425" height="344" src="http://www.youtube.com/embed/ljPFZrRD3J8?rel=0" frameborder="0" allowFullScreen></iframe>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-3350387476804929692011-01-30T21:21:00.002+01:002011-01-30T22:14:06.339+01:00The Grand Canal<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TUXIueUCIDI/AAAAAAAAATo/KYb7uSWXtD8/s1600/IMGP1588.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TUXIueUCIDI/AAAAAAAAATo/KYb7uSWXtD8/s320/IMGP1588.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5568077215050113074" /></a><div style="text-align: justify;">Existen dos canales en Dublín. Uno al norte del río (Royal Canal) y otro al sur (Grand Canal). Yo vivo cerca del Grand Canal y desde hace unos días lo están vaciando (haciendo un bypass) supongo y espero que para limpiarlo.</div><div><br /></div><div style="text-align: justify;">En la foto podéis ver como está el fondo ahora que se ve perfectamente con menos agua. No se la cantidad de latas de cerveza que debe haber allí pero lo que sí se es que hay lo menos 10 conos de obra de esos naranjas en un espacio de 50 metros.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Espero que lo limpien y podamos volver a darnos paseos por la orilla con los patos.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-64281461864273644832011-01-17T21:08:00.003+01:002011-03-26T04:55:45.343+01:00Principios FIRST<div style="text-align: justify;">Hace ya bastante tiempo oí hablar de los principios FIRST enunciados por Robert Martin sobre las condiciones que tenía que cumplir un buen test. Muchas veces recuerdo la palabra FIRST pero no recuerdo el significado de alguna de las letras así que para tenerlo a mano y compartirlo con todos vosotros allá va:<br /><ul><li><span style="font-weight: bold;">F</span>ast</li><li><span style="font-weight: bold;">I</span>ndependent</li><li><span style="font-weight: bold;">R</span>epeatable</li><li><span style="font-weight: bold;">S</span>elf-Validating</li><li><span style="font-weight: bold;">T</span>imely</li></ul></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-36393385920458821912011-01-04T20:35:00.003+01:002011-01-04T20:55:06.547+01:00New year´s resolutionsParece que otro año más tendré que proponerme algún objetivo... siempre hace gracia buscar en el blog para ver si he cumplido o no los del los últimos años. Por ejemplo, hace dos años me puse una lista de libros para leerme:<br /><ul><li><strike>Un mundo sin fin</strike></li><li><strike>Spring in Action</strike></li><li><strike>Testigo de cargo</strike></li><li>The Pragmatic Programmer</li><li>Head First Servlets and JSP</li><li><strike>Freakonomics</strike></li><li>La catedral del mar</li><li>El fuego</li><li>Cinco cerditos y/o Muerte en el Nilo</li><li>El inversor inteligente</li></ul>Por lo que veo todavía tengo unos cuantos pendientes por leer de aquella lista. Quizá lea El Fuego en su versión original...<br /><br />Para este año voy a seguir insistiendo en algunos del año pasado:<br /><ul><li><span style="font-weight: bold;">Hacer deporte</span>: cuando pase el invierno volveré con el <a href="http://en.wikipedia.org/wiki/Five-a-side_football">5-a-side</a>.<br /></li><li style="font-weight: bold;">Programar para iOS</li><li><span style="font-weight: bold;">Java</span>: nunca hay que dejar de mejorar en lo que me da de comer. Para empezar en febrero iré al <a href="http://www.javahispano.org/springio11/index">Spring I/O</a>.<br /></li><li><span style="font-weight: bold;">Inglés</span>: hace unas semanas terminé de leer la que fué <a href="http://vsbabylon.blogspot.com/2011/01/girl-with-dragon-tattoo.html">mi primera novela en inglés</a> (550 páginas). Este año me gustaría leerme tres más. No sólo de libros técnicos vive el hombre. Además me gustaría sacarme el <a href="http://www.cambridgeesol.org/exams/general-english/cae.html">CAE</a> antes de fin de año.<br /></li><li><span style="font-weight: bold;">Diploma en International Business</span>: la semana que viene tengo los examenes del primer cuatrimestre... no se que hago escribiendo esto en vez de estar estudiando.<br /></li></ul>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-12204783.post-64699435618241757042011-01-02T19:48:00.007+01:002011-01-02T21:51:44.549+01:00The Girl with the Dragon Tattoo<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TSDdQPgh2-I/AAAAAAAAATg/jSuv6lQTA28/s1600/51OgK0Tf7yL.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 206px; height: 320px;" src="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TSDdQPgh2-I/AAAAAAAAATg/jSuv6lQTA28/s320/51OgK0Tf7yL.jpg" alt="" id="BLOGGER_PHOTO_ID_5557685211285806050" border="0" /></a><span style="font-weight: bold;">The Girl with the Dragon Tattoo</span>, cuyo título original traducido sería más o menos Los hombres que odian a las mujeres (vamos, que no se parece en nada), es el primer libro de la trilogía <span style="font-style: italic;">Millennium</span>. Es una novela policiaca escrita por el difunto <a href="http://es.wikipedia.org/wiki/Stieg_Larsson">Stieg Larsson</a>.<br /><br />Empecé el libro con muchas ganas porque me gusta este tipo de libros y porque todo el mundo hablaba del fenómeno Millennium además de que están las películas suecas (que he evitado ver) y están haciendo el remake americano. El comienzo del libro es muy lento, casi podría decir que hasta la página 200 (de 550) no empiezan a suceder hechos interesantes, pero una vez pasas la mitad del libro te enganchas por saber más y acabas el libro del tirón.<br /><br />El libro trata sobre el misterio de una chica desparecida mucho tiempo atrás y que es familiar de un anciano magnate que quiere resolver el asunto de una vez por todas. Un periodista con problemas y una investigadora privada con todavía más problemas se ven envueltos en la misma aventura.<br /><br />Le veo dos problemas al libro. El primero es el nombre de los sitios y ciudades ya que excepto Estocolmo no hay forma de aclararse con el resto. Y el segundo es, como he dicho antes, que el comienzo es muy lento.<br /><br />Me ha gustado el libro pero no creo que sea tan bueno como la gente dice. Me ha parecido un libro más, decente sí, pero uno más. Supongo que tendré que leer el siguiente a ver si mejora la cosa...<br /><br /><span style="font-weight: bold;">Actualizado</span>: Si queréis saber más sobre el libro podéis echar un ojo <a href="http://libroesfera.blogspot.com/2010/12/los-hombres-que-no-amaban-las-mujeres.html">aquí</a>.<br /></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-51936602954871358932010-11-27T21:50:00.002+01:002010-11-27T22:02:16.201+01:00Manifestación en Dublín<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TPFvyH1rnVI/AAAAAAAAATU/wPY_BWuKYAg/s1600/DSC_0007.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TPFvyH1rnVI/AAAAAAAAATU/wPY_BWuKYAg/s320/DSC_0007.jpg" alt="" id="BLOGGER_PHOTO_ID_5544335523158138194" border="0" /></a>Pues hoy hemos tenido manifestación. La gente no estaba nada contenta con los recortes anunciados esta semana así que han salido a la calle a ver si se enteran los que manda.<br /><br />Según la organización 110.000 personas (muchas de ellas de fuera de Dublín) han recorrido las calles desde el ayuntamiento hasta la Oficina central de correos (el lugar donde acaban todas las marchas en Dublín).<br /><br /></div><div style="text-align: justify;">Ha sido una manifestación muy controlada, en todo momento hombres y mujeres con un chaleco naranja rodeaban a los manifestantes haciendo que la policía tuviera poco trabajo. A la cabeza de la marcha iba un grupo de gaiteros que animaban el asunto porque la verdad que ha sido la manifestación más aburrida que he visto. Nadie gritaba consignas ni nada parecido. Con los carteles ocurría justo lo contario, eran todos muy originales como: W<s>b</s>ankers o Fiona Failed entre otros.<br /><br />Al final de la marcha los de los sindicatos han dado un discurso al que se ha unido entre otros <a href="http://en.wikipedia.org/wiki/Frances_Black">Frances Black</a> cantando "Legal Illegal".<br /><br />Para terminar os pongo un enlace a <a href="http://www.flickr.com/photos/xshayx/5211461215/in/contacts/">una foto</a> que ha sacado un amiguete.<br /></div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-24111603871546512732010-08-30T21:13:00.005+02:002010-08-30T21:47:58.525+02:00El arte de negociar y persuadir<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_dTyoJ9DuVIo/THwK0BHDJrI/AAAAAAAAAS4/jqbSiLvWj7E/s1600/arte-de-negociar--persuadir.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 146px; height: 200px;" src="http://2.bp.blogspot.com/_dTyoJ9DuVIo/THwK0BHDJrI/AAAAAAAAAS4/jqbSiLvWj7E/s320/arte-de-negociar--persuadir.jpg" alt="" id="BLOGGER_PHOTO_ID_5511291932762121906" border="0" /></a><span style="font-weight: bold;">El arte de negociar y persuadir</span> es un libro escrito por <a href="http://en.wikipedia.org/wiki/Allan_Pease">Allan Pease</a> de unas cien páginas que se lee fácilmente en una sentada.<br /><div style="text-align: justify;"><br />La primera impresión al empezar a leer es que nos hemos equivocado de libro y deberíamos parar. Nos habla de estructuras piramidales (con un nombre más <span style="font-style: italic;">cool</span>) y parece que nos va a enseñar a tener exito en este tipo de negocios. Si continuamos leyendo vemos que los que nos enseña se puede aplicar en cualquier negocio, reunión, charla o momento del día. Nos enseña como hablar, comportarnos, interpretar a nuestro interlocutor, etc...<br /><br />Es un libro básico, sencillo de leer y nos dejará cuatro o cinco detalles que puede ser interesante recordar. Por ejemplo:<br /><ul><li>Asentir con la cabeza: hace que el interlocutor también lo haga y el mismo se reafirme.</li><li>Espejo espejo: imitar la postura.</li><li>Señalar con la palma hacia arriba: para no ser dominante.</li><li>Dirigir la mirada con, por ejemplo, un bolígrafo.</li><li>Hablar más despacio que el cliente.</li><li>Y sobretodo lograr que el cliente hable, hable, hable y el mismo se venda el producto.</li></ul>Si os estáis preguntado si deberiais leerlo ya os digo que no os perdéis nada. Si lo tenéis por casa o lo cogéis en la biblioteca pues leerlo porque no está mal pero no os recomiendo que gastéis dinero en él.<br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-72718543987162581182010-07-29T18:38:00.003+02:002010-07-29T18:51:36.842+02:00Edimburgo<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TFGuncuGW-I/AAAAAAAAASw/Mu_Lvsuxk2Y/s1600/Edimburgo.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_dTyoJ9DuVIo/TFGuncuGW-I/AAAAAAAAASw/Mu_Lvsuxk2Y/s320/Edimburgo.jpg" alt="" id="BLOGGER_PHOTO_ID_5499368612743764962" border="0" /></a>Vaya días que llevo, el martes pasado volví de Edimburgo y mañana me voy para Bélgica y Holanda. Esto del turismo puede ser relajante para algunos pero yo acabo más cansado, mucho más, que en un día de trabajo. Cada vez que voy a un sitio me propongo ir de tranquilo disfrutar y ver lo que de tiempo pero al final siempre trato de comer rápido para poder ver más sitios, museos, etc...<br /><br />Como os iba diciendo pasé cuatro días en Edimburgo, una ciudad que hay que visitar al menos una vez. Es pequeñita, limpia, tiene mucho encanto.... vamos que da gusto pasear por la "Royal Mile"(la calle principal).<br /><br />Si por algo es conocido Edimburgo (a parte de por ser la capital de Escocia, el Whisky y los hombres con falda) es por su castillo, el cual podéis ver en al foto.<br />Si os digo la verdad el castillo es lo que menos me gusto, quizá porque al ser caro, tener que hacer cola y tardar 2 horas en verlo te vas con la sensación de que tampoco es tanta cosa, y que esta muyyy reconstruido.<br /><br />La gente es muy maja, aunque la verdad es que entre tanto turista es dificil reconocer a los escoceses. Además su acento no es tan malo como lo pintan.<br /><br />Hicimos un tour histórico por la ciudad la primera mañana lo cual os recomiendo ya que así te situas en la ciudad, te enteras de que es cada cosa, y aprovechas a preguntar al guía por un buen restaurante típico y barato escoces (el Royal McGregor en Rose Street).<br /></div><br />La semana que viene os contaré que tal por Bélgica y Holanda.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-8378811679071595232010-07-14T13:52:00.001+02:002010-07-14T13:54:06.397+02:00Economía en clave de rap<object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/FXgWoG5_3QA&color1=0x234900&color2=0x4e9e00&hl=en_US&feature=player_embedded&fs=1"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/FXgWoG5_3QA&color1=0x234900&color2=0x4e9e00&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="344" width="425"></embed></object>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-392987454506681202010-07-02T11:18:00.004+02:002010-07-02T11:29:42.155+02:00La lógica oculta de la vida<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dTyoJ9DuVIo/TC2vWwj6gZI/AAAAAAAAASo/oJ_nIoTUGK8/s1600/la+logica+oculta+de+la+vida.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 206px; height: 320px;" src="http://1.bp.blogspot.com/_dTyoJ9DuVIo/TC2vWwj6gZI/AAAAAAAAASo/oJ_nIoTUGK8/s320/la+logica+oculta+de+la+vida.jpg" alt="" id="BLOGGER_PHOTO_ID_5489236326362022290" border="0" /></a><span style="font-weight: bold;">La lógica oculta de la vida</span> es el segundo libro escrito por <a href="http://timharford.com/">Tim Hardford</a> después del éxito que tuvo con <a href="http://vsbabylon.blogspot.com/2007/04/el-economista-camuflado.html">El economista camuflado</a>.<br /></div><br /><div style="text-align: justify;">En este libro sigue con la misma temática que el primero, tratando de explicar para profanos las reglas económicas que explican la mayoría de nuestros actos, por supuesto usando otros ejemplo y explicando otros comportamientos.<br /><br />Algunos ejemplos serían porqué nuestro jefazo cobra mucho más que nosotros cuando parece que trabaja menos. O porque la gente prefiere vivir en Manhattan cuando podría ahorrar más dinero viviendo en otra ciudad más pequeña. También nos explica que, aunque parezca extraño, las adicciones como la ludopatía son completamente racionales y explicables. Y lo más peligroso de todo: el racismo racional y porque es necesaria la discriminación positiva para solucionar este (y otros problemas).<br /><br />Este es un libro que me ha costado de leer, quizá porque he tenido poco tiempo libre o porque habia secciones "no muy divertidas", es un libro peor que el primero y peor que <a href="http://vsbabylon.blogspot.com/2009/06/freakonomics.html">Freakonomics</a>. Por supuesto si habéis leido esos dos libros y os han gustado os recomiendo que leáis también este. Es curioso.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-82202644223859675782010-06-18T10:35:00.005+02:002010-06-18T10:41:51.859+02:00Cargador de coches eléctricos<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TBswlEnO59I/AAAAAAAAASg/hrAb2v4FEnw/s1600/cargador_coche_electrico.jpg"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 237px; height: 320px;" src="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TBswlEnO59I/AAAAAAAAASg/hrAb2v4FEnw/s320/cargador_coche_electrico.jpg" alt="" id="BLOGGER_PHOTO_ID_5484030384705300434" border="0" /></a>El otro día me encontré con esto cerca de donde trabajo en el centro de Dublín. Me paré a echarle un vistazo y al parecer es una "gasolinera" para coches eléctricos. Yo no había visto ninguna hasta ahora y no se si en España abundan o no.<br /><br />Al parecer necesitas una tarjeta para que se abra la tapa y poder enchufarlo pero la verdad es que no ponía más instrucciones o explicaciones.<br /><br />Me pareció curioso así que lo pongo aquí para que vosotros tambien lo veáis.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12204783.post-66852259986211574712010-06-14T13:53:00.002+02:002010-06-14T14:00:55.194+02:00Cambiar la pestaña seleccionada en un TabPanel usando javascriptCreo que el título lo deja bastante claro, voy a mostraros como podemos cambiar de pestaña en un TabPanel (un componente de la librería Richfaces) usando javascript.<br /><br />Esta primera forma sólo funcinara en modo <span style="font-style: italic;">client</span>, es decir, con toda la información cargada en el cliente:<br /><br /><span style="font-style: italic;">RichFaces.switchTab('TabPanelId','TabId','TabLabel')</span>;<br /><br />otra forma que siempre va a funcionar sería la siguiente:<br /><br /><span style="font-style: italic;">document.getElementById(FormId:TabId_shifted').onclick();</span><br /><br />Atentos a que en este segundo caso tenemos que concatenar "_shifted" al identificador de la pestaña.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12204783.post-68542182770340899722010-06-02T10:33:00.001+02:002010-06-02T10:34:35.738+02:00El anuncio de Bocatta censurado<div style="text-align: justify;">Hace años que censuraron este anuncio porque según decían no mostraba la realidad de la vida en el campo de hoy en día... a mi es uno de los anuncios que más me gustaban.<br /></div><br /><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/tc2ldX_bJnM&hl=en_GB&fs=1&color1=0x234900&color2=0x4e9e00"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/tc2ldX_bJnM&hl=en_GB&fs=1&color1=0x234900&color2=0x4e9e00" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-12204783.post-42971131270436575822010-05-31T14:25:00.003+02:002010-05-31T14:35:11.985+02:00Final Magners League<div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TAOsbn8IluI/AAAAAAAAASQ/r7RhEuR8di4/s1600/DSC04980.JPG"><img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_dTyoJ9DuVIo/TAOsbn8IluI/AAAAAAAAASQ/r7RhEuR8di4/s320/DSC04980.JPG" alt="" id="BLOGGER_PHOTO_ID_5477411162390304482" border="0" /></a>Al final no pudo ser. Después de haber terminado primeros en la liga regular, el Leinster perdió en la final de los play offs contra los Ospreys.<br /><br />Para colmo el partido fue bastante malo y el equipo de Dublín nunca dió muestras de poder remontarlo.<br /><br />Muy espectacular el comienzo, con fuego mientras salían los jugadores y una banda de samba tocando (qué pinta una banda de samba en Dublín en lugar de un grupo celta?).<br /><br />En fin... en otra ocasión será.<br /></div>Unknownnoreply@blogger.com0