<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yo en el Universo &#187; desarrollo</title>
	<atom:link href="http://sixservix.com/blog/david/category/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://sixservix.com/blog/david</link>
	<description>El blog de David Bonilla</description>
	<lastBuildDate>Fri, 24 Jun 2011 05:30:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Crónica The Evnt 2011</title>
		<link>http://sixservix.com/blog/david/2011/05/16/cronica-the-evnt-2011/</link>
		<comments>http://sixservix.com/blog/david/2011/05/16/cronica-the-evnt-2011/#comments</comments>
		<pubDate>Mon, 16 May 2011 05:46:07 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[productividad]]></category>
		<category><![CDATA[theevtn2011]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5911</guid>
		<description><![CDATA[Una crónica personal sobre lo que fue el evento The Evnt 2011 para los que lo vivimos desde dentro.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Escribo está crónica volviendo a Madrid, en un tren atestado de gente con el que Renfe ha desafiado el espacio-tiempo vendiendo plazas para <strong>seis vagones</strong> y haciendo llegar hasta Cáceres un tren con <strong>sólo tres</strong>&#8230;</p>
<p style="text-align: justify">Ha sido un fin de semana intenso: muchas charlas, muchos amigos nuevos y muchas conversaciones construidas alrededor de una ronda de cervezas o el minibar de una habitación de hotel.</p>
<p style="text-align: justify"><a title="The Evnt 2011" href="http://www.theevnt.com/" target="_blank"><strong>The Evnt 2011</strong></a> ha sido un evento pequeño en tamaño pero ENORME en calidad y contenido. En pocos saraos &#8211; y ya he estado en unos cuantos- he visto la devoción y cariño que nos han regalado <a title="Javier Alonso" href="http://twitter.com/#!/oyabun" target="_blank">Javier</a> y <a title="Kinisoftware" href="http://twitter.com/#!/kinisoftware" target="_blank">Kini</a> a todos los ponentes y asistentes.</p>
<p style="text-align: center"><a href="http://2011.theevnt.com/"><img class="aligncenter size-full wp-image-5922" style="border: 0pt none" title="theEvnt2011" src="http://sixservix.com/blog/david/files/2011/05/theEvnt20111.jpg" alt="" width="576" height="383" /></a></p>
<p style="text-align: justify">Si buscas una conferencia con cientos de sesiones en paralelo y 40.000 asistentes, puedes asistir al <strong>Oracle OpenWorld</strong> de San Francisco. Si quieres asistir a un congreso más técnico y cercano, la <strong>Devoxx</strong> belga cumplirá todas tus expectativas. Pero, si esperas asistir a un evento más familiar y cercano, donde se aborde el desarrollo informático de una forma integral -incluyendo desde temas de seguridad a modelos de negocio- y, sobre todo, puedas disfrutar de la noche cacereña tomándote una cerveza y conversar con cualquiera de los ponentes, tu elección debe ser <strong>The Evnt</strong>.</p>
<p style="text-align: justify">El patio de butacas y el escenario, ponentes y asistentes, se han confundido y mezclado durante todo el fin de semana.</p>
<p style="text-align: justify">He disfrutado de todo y todos por igual, desde esos <em>cracks</em> del <strong>WordPress</strong> y el <em>frontend</em> web que son mis nuevos amigos sevillanos de <strong>SVQend</strong>, hasta la <em>chavalada</em> adolescente -talento puro <em>en bruto</em>- arremolinados alrededor de los <a title="Betabeers" href="http://betabeers.com/" target="_blank">Betabeers</a> de <strong>Miquel Camps</strong>, que me han hecho sentirme un poco abuelo.</p>
<p style="text-align: justify"><strong>The Evnt 2011</strong> ha sido tecnicazos como <a title="Xavi Fernandez" href="http://twitter.com/#!/xfernandez" target="_blank"><strong>Xavi Fernandez</strong></a> -VP Técnico de <strong>Abiquo</strong>- contándonos como la nube está hoy un poco más cerca gracias a su trabajo; o <a title="Christian Kvalheim" href="http://twitter.com/#!/christkv" target="_blank"><strong>Christian Kvalheim</strong></a> -líder de equipo en <strong>Xing</strong>- hablando sobre <strong>node.js</strong>.</p>
<p style="text-align: justify"><strong>The Evnt 2011</strong> ha sido empresarios como <a title="Roberto Canales" href="http://twitter.com/rcanalesmora" target="_blank"><strong>Roberto Canales</strong></a> o <a title="Agustín Cuenca" href="http://twitter.com/agustincnc" target="_blank"><strong>Agustín Cuenca</strong></a> explicado su <em>savoir-faire</em> y su visión del desarrollo de software como negocio.</p>
<p style="text-align: justify">Pero,<strong> The Evnt</strong> ha sido también mucho más: un viaje en tren compartiendo asiento y sueños con <a title="Pablo Jimeno" href="http://twitter.com/#!/pablojimeno" target="_blank"><strong>Pablo Jimeno</strong></a> y <a title="Dani Latorre" href="http://twitter.com/#!/dani_latorre" target="_blank"><strong>Dani Latorre</strong></a>, la ilusión de los chicos de <a title="Be Code" href="http://www.becodemyfriend.com/" target="_blank"><strong>BeCode</strong></a> al hablar de su proyecto, ver a <strong>Gemma Muñoz</strong> olvidarse de la analítica web y demostrar que es una madridista irredenta, pelearte por servir el café con la sonrisa de <a title="Abel Hernandez" href="http://twitter.com/#!/i_abel" target="_blank"><strong>Abel Hernandez</strong></a> -el cerebro pensante de <strong>Agencia Visual</strong>- o disfrutar viendo a <a title="Jerolba" href="http://twitter.com/#!/jerolba" target="_blank"><strong>Jeroclo</strong></a> explicarle a un chico al que dobla en edad que <strong>Java no es <em>legacy</em></strong>.</p>
<p style="text-align: justify">Pero, para mi, The Evnt ha sido, sobre todo, la ilusión en los ojos de <strong>Joaquín Engelmo Moriche</strong> alias <strong><a title="Kinisoftware" href="http://twitter.com/#!/kinisoftware" target="_blank">Kinisoftware</a></strong> -extremeño de Zafra, orgulloso desarrollador y mi amigo- por hacer las cosas que le gustan y como le gustan sin tener que irse de su tierra.</p>
<p style="text-align: justify">Casi se me olvida, pero también me dio tiempo a dar una ponencia sobre <a title="La Técnica Pomodoro" href="http://es.wikipedia.org/wiki/T%C3%A9cnica_Pomodoro" target="_blank"><strong>La Técnica Pomodoro</strong></a>. Intenté devolver todo el cariño que me habían dado y arriesgué. Me propuse que la charla se alejara completamente de lo que la gente espera de una presentación sobre Productividad Personal y que, fundamentalmente, fuera divertida. Tenía miedo. No sabía si la gente se reiría conmigo&#8230; o de mi. Si quieres juzgar por ti mismo, aquí tienes el vídeo:</p>
<p style="text-align: justify"><a title="La Técnica Pomodoro" href="http://www.livestream.com/theevnt2011/video?clipId=pla_4f1cfd9a-ab13-4030-9b5d-ed2e9b6b1010" target="_blank">The Evnt 2011 &#8211; La Técnica Pomodoro por David Bonilla </a></p>
<h3 style="text-align: justify"><span style="color: #008000">CRÉDITOS</span></h3>
<ul style="text-align: justify">
<li>Foto cortesía de <a title="Pedro Lozano" href="http://twitter.com/#!/peterlozano" target="_blank">Pedro Lozano</a>. Podéis ver más fotos del evento <a title="Fotos TheEvnt2011" href="http://www.flickr.com/photos/peterlozano/sets/72157626585700785/" target="_blank">aquí</a>.</li>
<li>El <a title="lanyrd" href="http://lanyrd.com/2011/theevnt/" target="_blank">Lanyrd</a> del evento</li>
<li>Vídeos de las ponencias en <a title="Livestream" href="http://www.livestream.com/theevnt2011" target="_blank">LiveStream</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/05/16/cronica-the-evnt-2011/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Por qué un CEO no debe hablar de programación</title>
		<link>http://sixservix.com/blog/david/2011/03/28/ceo-no-debe-hablar-programacion/</link>
		<comments>http://sixservix.com/blog/david/2011/03/28/ceo-no-debe-hablar-programacion/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 05:15:38 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[gestion de personal]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[CEO]]></category>
		<category><![CDATA[expensify]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5721</guid>
		<description><![CDATA[Me ha costado no titular este artículo como &#8216;El CEO de Expensify es un poco cretino&#8217;. El viernes pasado, se le ocurrió soltar esta joyita: &#8216;Buscamos desarrolladores, pero no contratamos a gente que trabaje o haya trabajado con .NET. Un programador debe explicarnos porque cuenta en su CV que ha trabajado con ese lenguaje &#8216;. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-5723" style="margin-right: 10px" title="ceo" src="http://sixservix.com/blog/david/files/2011/03/ceo5.jpg" alt="" width="300" height="199" />Me ha costado no titular este artículo como &#8216;El CEO de <strong>Expensify</strong> es un poco cretino&#8217;. El viernes pasado, se le ocurrió soltar esta joyita: &#8216;<em>Buscamos desarrolladores, pero <strong>no contratamos a gente que trabaje o haya trabajado con .NET</strong>. Un programador debe explicarnos porque cuenta en su CV que ha trabajado con ese lenguaje<strong> </strong></em>&#8216;.</p>
<p style="text-align: justify">Hay que ser un pedazo de cretino para soltar una <em>rajada</em> de esas proporciones en <a title="Expensify" href="http://blog.expensify.com/2011/03/25/ceo-friday-why-we-dont-hire-net-programmers/" target="_blank">el <em>blog</em> de la empresa</a>.</p>
<p style="text-align: justify">No he trabajado nunca con .NET y sospecho que <strong>David Barrett</strong> -que es como se llama el individuo- tampoco, pero no creo que el hecho de programar en ese lenguaje en particular, o en cualquier otro, te califique como mejor o peor desarrollador. Ningún programador que lleve más de dos días trabajando se atrevería a decir algo así.</p>
<p style="text-align: justify">La pregunta es: ¿por qué Barrett se pone a filosofar sobre lenguajes de programación? ¿No se supone que es CEO? Se supone que el trabajo principal de un CEO o Presidente consiste en <strong>mantener el foco</strong>, tener claro hacia donde va la compañía, evitar las distracciones, rodearse del equipo adecuado, motivarlo y conseguir todo lo necesario para alcanzar el objetivo. Ni siquiera tiene que saber programar. Lo inaudito del caso es que <strong>Barrett sí sabe programar, y bastante</strong>. No sólo tiene un título como Ingeniero Informático por la Universidad de Michigan -lo cual no demuestra en absoluto que sepas programar- sino que en su primer trabajo programó un motor 3D completo (su <a title="David Barrett" href="http://www.linkedin.com/in/davidmbarrett" target="_blank">perfil en LinkedIn</a>).</p>
<p style="text-align: justify">Entonces, ¿por qué suelta todas estas tonterías ni más ni menos que en el blog de la empresa? ¿Por qué pierde su tiempo y esfuerzo en algo así? Porque, como casi siempre, <strong>todo esto tiene truco</strong>.</p>
<p style="text-align: justify"><strong>Expensify</strong> -y por extensión su CEO, David Barrett- están <strong>desesperados por conseguir buenos programadores</strong>. Ya que desarrollan en PHP, no creo que los expertos en .NET sean su objetivo, así que&#8230; ¿No será todo <strong>esto una maniobra para hacer ruido y conseguir publicidad gratuita</strong>? ¿Quizás una manera de conseguir llegar a más candidatos, vendiendo una imagen de compañía <em>cool</em> dirigida por un CEO capaz de meterse con el <em>establishment</em> que representa el lenguaje .NET de la todopoderosa Microsoft? A lo mejor solo soy un mal pensado&#8230; pero, si eso es lo que quería, lo ha conseguido con creces. Mientras yo redactaba este artículo, su blog ya iba por los 237 comentarios. Y, lo que es mejor, ha conseguido aparecer en <em>prestigiosos</em> medios del sector&#8230; como este <em>blog</em> :P</p>
<p style="text-align: justify">El problema es que, esa táctica <strong>solo parece apropiada para atraer a <em>carne fresca</em> recién llegada de la universidad</strong>. En el MUNDO REAL, quien más quien menos ha tenido que programar en un lenguaje que no le gustaba, pero que pagaba las habichuelas a fin de mes. Quien más quien menos conoce y respeta a alguien que programa en .NET. Y, quien más quien menos, ha visto a gente haciendo verdaderas ATROCIDADES en lenguajes bien <em>molones</em> como Ruby, Scala u Objective-C.</p>
<p style="text-align: justify">A mí no me gustaría que mi CEO soltará una barrabasada así en el blog que representa a toda la empresa. Así que, David, te voy a dar un consejo gratis: si quieres buenos programadores, búscalos en algún congreso de desarrollo web o en la reunión del JUG local o amplía el radio de acción más allá del <a title="Coupa Café" href="http://www.coupacafe.com/" target="_blank">Coupa Café</a> de <strong>Palo Alto</strong>. Pero, por favor, aunque estés desesperado, no inicies una nueva batalla alrededor de algo tan estúpido. Estoy seguro que más de un <em>veterano de élite</em> se va a pensar muy mucho si quiere trabajar contigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/03/28/ceo-no-debe-hablar-programacion/feed/</wfw:commentRss>
		<slash:comments>142</slash:comments>
		</item>
		<item>
		<title>Cosas que la gente real nunca dirá de tu aplicación</title>
		<link>http://sixservix.com/blog/david/2011/03/18/tu-aplicacion/</link>
		<comments>http://sixservix.com/blog/david/2011/03/18/tu-aplicacion/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 05:15:29 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[diseño]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5583</guid>
		<description><![CDATA[Aunque a veces nos olvidemos, los usuarios son gente real, personas normales. No como nosotros...]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">En muchos artículos de este blog he hablado de la tendencia de los desarrolladores a olvidar que trabajamos <em>para otros</em>, que no desarrollamos aplicaciones para nosotros mismos. La <strong>gente real</strong> no entiende por qué debe repetir su contraseña, recibir correos de confirmación o leer (y aprobar) complicados términos de uso acerca de la privacidad de sus datos.</p>
<p style="text-align: center"><a href="http://trpdsaya.tumblr.com/post/2806245433/i-love-verifying-my-email-address"><img class="size-full wp-image-5586 aligncenter" style="border: 0pt none" title="verifying_email" src="http://sixservix.com/blog/david/files/2011/03/verifying_email.jpg" alt="Cosas que la gente real nunca dirá de tu aplicación" width="500" height="433" /></a></p>
<p style="text-align: justify">Algunas veces, nuestras decisiones de diseño son imponderables derivados de los requisitos. Otras, sin embargo, no son más que pura fanfarria y sobrearquitectura. Quien más, quien menos, todos hemos cometido alguna atrocidad en el diseño y usabilidad de nuestras aplicaciones, pero seguro que todos nos reconocemos en muchas de las situaciones que tratan con <strong>humor</strong> en <a title="Thins real people don't say about your app" href="http://trpdsaya.tumblr.com/" target="_blank">THINGS REAL PEOPLE DON&#8217;T SAY ABOUT YOUR APP</a>. Absolutamente recomendado.</p>
<p style="text-align: justify">RT @<a title="Marcos Besteiro" href="http://twitter.com/#!/MarcosBL" target="_blank">MarcosBL</a> RT @<a title="Jaime Dominguez" href="http://twitter.com/#!/rrazo" target="_blank">Rrazo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/03/18/tu-aplicacion/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Alberto Vilches bailará su Groovy en Sixservix</title>
		<link>http://sixservix.com/blog/david/2011/03/01/alberto-vilches-groovy/</link>
		<comments>http://sixservix.com/blog/david/2011/03/01/alberto-vilches-groovy/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 05:15:22 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[sixservix]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[alberto vilches]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5455</guid>
		<description><![CDATA[El, probablemente, mejor programador del mundo y uno de las personas que más sabe de Groovy a nivel mundial, visitará Sixservix para hablar sobre el tema.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><a href="http://sixservix.com/blog/rcotrina/2011/02/22/groovy-alberto-vilches/"><img class="alignleft size-medium wp-image-5457" style="border: 0pt none" title="groovy" src="http://sixservix.com/blog/david/files/2011/02/groovy-300x255.jpg" alt="Groovy" width="300" height="255" /></a>Como ya anunció Raúl Cotrina, coordinador del evento, <strong>Alberto Vilches</strong>, también conocido como <em>Mister Groovy</em>, <a title="Alberto Vilches visita Sixservix" href="http://sixservix.com/blog/rcotrina/2011/02/22/groovy-alberto-vilches/" target="_blank">visitará SIXSERVIX el próximo viernes 4</a> para hablarnos sobre el lenguaje <a title="Groovy" href="http://groovy.codehaus.org/" target="_blank"><strong>Groovy</strong></a>. Pero no será una charla normal, ni mucho menos. Si quieres enterarte de que es lo que va a hacer y <strong>cómo puedes asistir</strong>, sigue leyendo.</p>
<p style="text-align: justify">Cuando, hace unos meses, nos reunimos para hablar de formación, nos dimos cuenta de que <strong>teníamos un problema</strong>: la mayoría de los cursos que se ofertaban no nos valían. Bien, porque eran demasiado introductorios,  demasiado genéricos, demasiado caros  y, en algunos casos, por  nuestra disponibilidad o la del profesor.</p>
<p style="text-align: justify">No necesitábamos un curso sobre EJBs, sino sobre <em>testing</em> unitario  fuera del contenedor. Tampoco queríamos un interminable curso de 20h sobre  Ruby y su sintaxis, sino alguien que nos explicara como aprenderlo  viniendo desde el mundo Java. Y, desde luego, no buscábamos la típica  experiencia de profesor-discurso, sino algo <strong>ameno e interactivo</strong>, donde cualquiera pudiera preguntar y aportar al resto de los asistentes.</p>
<p style="text-align: justify">Así que le propusimos a nuestra empresa intentar hacer <strong>algo diferente</strong>: invitar a técnicos y profesionales de reconocido prestigio a que vinieran a nuestra casa para hablar sobre distintas materias y tecnologías de una forma mucho más practica y menos estructurada. Y creamos las &#8220;<strong>Charlas Sixservix</strong>&#8221; que se inauguran con la charla de Alberto, en la que nos  explicará &#8220;<em>Que puede aportar Groovy a un equipo de desarrollo que programa en Java&#8221;</em>, como piloto.</p>
<h3 style="text-align: justify">¿Cuál va  a ser la estructura de las Charlas Sixservix?</h3>
<ul>
<li>Se impartirán los viernes, en nuestras instalaciones, a partir de las 16h</li>
<li>Antes de la charla, alrededor de las 15:30h se ofrecerá un bufé/comida a todos los asistentes</li>
<li>Tendrán una duración máxima de 2h</li>
<li>Serán de formato abierto. Con un guión y estructura mínimas</li>
<li>Se espera que el ponente aporte un enfoque divertido y práctico</li>
<li>Comenzaremos con un máximo de 15 asistentes con la intención de permitir una autentica conversación entre todos los participantes</li>
<li>Queremos que en cada charla haya también asistentes que no sean de la empresa, para que todos podamos enriquecernos con otros puntos de vista</li>
<li>Intentaremos retransmitir por <em>streaming </em>la charla para que todo el que esté interesado</li>
<li>Al final de la charla, se hará una pequeña retrospectiva</li>
</ul>
<h3>¿Cómo puedo asistir?</h3>
<p style="text-align: justify">Para esta primera charla tenemos disponibles <strong>tres invitaciones</strong>, así que si quieres asistir, mándame un correo, a través del <a title="Formulario de Contacto" href="http://sixservix.com/blog/david/about/" target="_blank">formulario de contacto</a> de este mismo <em>blog</em>, con todos los datos que creas que puedan ser útiles para localizarte e identificarte (twitter, <em>blog</em>, etc).</p>
<p style="text-align: justify">A ver que tal sale el experimento. Como fieles seguidores del desarrollo iterativo e incremental, nos basta con que esta primera charla Alberto no se pierda viniendo  hacia aquí&#8230; ^_^</p>
<p style="text-align: justify">
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/03/01/alberto-vilches-groovy/feed/</wfw:commentRss>
		<slash:comments>102</slash:comments>
		</item>
		<item>
		<title>Programar o no programar</title>
		<link>http://sixservix.com/blog/david/2011/02/25/programar-o-no-programar/</link>
		<comments>http://sixservix.com/blog/david/2011/02/25/programar-o-no-programar/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 05:15:46 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[david]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[gestion de personal]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5390</guid>
		<description><![CDATA[En España, si trabajas en informática, hay un momento en el que alguien te dice que no debes programar, que estás para "otras cosas". Ellos no saben programar.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Que no os engañen. Los que no desarrollan, es <strong>porque no saben</strong>. No conozco a ningún jefe, jefazo o jefecillo al que no le guste saber como se hacen las cosas. Nadie espera que un CEO programe entero un algoritmo genético de cálculo de rutas de transporte, pero siempre podría dedicarle un par de horitas a la semana para hacer <a title="Peer Code Review" href="http://en.wikipedia.org/wiki/Code_review" target="_blank"><em>peer code review</em></a>. <strong>No se me ocurre mejor manera de tomarle el pulso a una empresa de desarrollo</strong>.</p>
<p style="text-align: justify">Que no os engañen. Esto no sólo puede aplicarse a pequeñas <em>startups</em>. Algunas de las compañías más importantes del mundo, <a title="Mark Zuckenberg still codes" href="http://techcrunch.com/2010/04/14/apparently-mark-zuckerberg-still-writes-code/" target="_blank">ya lo están haciendo</a>. Eso si, para poder programar, tienes que <strong>mancharte las manos</strong>. Tienes que saber.</p>
<p style="text-align: center"><img class="aligncenter size-full wp-image-5391" style="border: 0pt none" title="programacion" src="http://sixservix.com/blog/david/files/2011/02/programacion.jpg" alt="Manchate las manos" width="500" height="373" /></p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/02/25/programar-o-no-programar/feed/</wfw:commentRss>
		<slash:comments>99</slash:comments>
		</item>
		<item>
		<title>HTTP Access Control: programando REST de VERDAD</title>
		<link>http://sixservix.com/blog/david/2011/02/16/http-access-control-rest/</link>
		<comments>http://sixservix.com/blog/david/2011/02/16/http-access-control-rest/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 05:15:01 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[cross-site scripting]]></category>
		<category><![CDATA[HTTP Access Control]]></category>
		<category><![CDATA[Jersey]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[Restlet]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5210</guid>
		<description><![CDATA[La mayoría de los que hablan de REST son un fraude que no han hecho NADA REAL con dicha tecnología. Averigua que pasa cuando te pones con las manos en la masa.


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2009/09/30/explicando-rest-a-mam/' rel='bookmark' title='Permanent Link: Explicando REST a mi madre'>Explicando REST a mi madre</a> <small>Si mamá, desde hace ya un buen tiempo, cuando vienes...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-5212" style="border: 0pt none;margin-right: 10px" title="httpaccesscontrol" src="http://sixservix.com/blog/david/files/2011/01/httpaccesscontrol.jpg" alt="HTTP Access Control" width="302" height="225" />Un FRAUDE. La mayoría de <a title="Explicando REST a mi madre" href="http://sixservix.com/blog/david/2009/09/30/explicando-rest-a-mam/" target="_blank">la gente que habla de <strong>REST</strong></a> y de la revolución que va a suponer en el diseño y consumo de aplicaciones en Internet son un fraude, gente que no ha hecho NADA REAL que se aleje cinco pasos más allá de la teoría.</p>
<p style="text-align: justify">Pero, a veces, el destino es caprichoso y te lleva por caminos insospechados. Te encargan que hagas un prototipo en Android y, cuando te quieres dar cuenta, estás <em>RESTificando </em>tu<em> </em>aplicación para conectarte a ella, <em>como Dios manda</em>, desde tu zapatófono con el sistema operativo de Google.</p>
<p style="text-align: justify">Y, cuando te pones en serio a implementar algo, pasa lo de siempre: que te manchas las manos y nada es tan limpio como parece. Perdí al menos un par de horas intentando descubrir por qué el <strong>REST </strong>del demonio no funcionaba como se supone que debía hacerlo.</p>
<p style="text-align: justify">Así que decidí escribir un <strong>artículo técnico</strong>. De esos que dan <em>prestigio </em>y hacen que no te etiqueten exclusivamente como un <em>businessman</em>. Sí, de <a title="EJB 3.1" href="http://sixservix.com/blog/david/2010/05/10/transacciones-bloqueos-glassfish-v3-ejb31-jpa2/" target="_blank">esos artículos que no lee ni mi mujer</a>. Eso sí, ya que no lo iba a leer nadie, lo he escrito a mi manera, nada de <em>ladrillos incendiarios</em> como <a href="http://www.javahispano.org/contenidos/es/el_placer_de_la_programacion_asincrona/" target="_blank">los que se gasta el maligno y vehemente Dr. Arranz</a>.</p>
<p style="text-align: justify">Si quieres saber qué es eso del <strong>HTTP Access Control</strong> y por qué debes tenerlo en cuenta cuando desarrolles en <strong>REST</strong>, sigue leyendo.</p>
<p style="text-align: justify">Banda Sonora del artículo: <a title="In One Ear - Cage The Elephant" href="http://open.spotify.com/track/5dJJnW69ejYOfuntLuLJft" target="_blank">Cage the Elephant &#8211; In One Ear</a></p>
<h3 style="text-align: justify">EL CONTEXTO</h3>
<p style="text-align: justify">Con una aplicación <em>legacy </em>-y una aplicación en <strong>Struts 1</strong> lo es-, lo más lógico es recurrir a un <em>framework </em>que te ayude a implementar REST sin tener que entrar como un elefante en una cacharrería ni reinventar la rueda. Según Google, tenía dos opciones básicas: <a title="Jersey" href="http://jersey.java.net/" target="_blank">Jersey</a>, la implementación de referencia de Oracle/SUN y <strong><a title="Restlet" href="http://www.restlet.org/about/" target="_blank">Restlet</a></strong>, el voluntarioso esfuerzo que da de comer a <strong>Noelios Technologies</strong>.</p>
<div id="attachment_5250" class="wp-caption alignright" style="width: 362px"><a href="http://sixservix.com/blog/david/files/2011/01/introductionAPIRestlet.jpg"><img class="size-full wp-image-5250" style="border: 0pt none;margin-left: 10px" title="introductionAPIRestlet" src="http://sixservix.com/blog/david/files/2011/01/introductionAPIRestlet.jpg" alt="" width="352" height="310" /></a><p class="wp-caption-text">La introducción de la API 2.4.1 de RESTLET es muy LOL :D</p></div>
<p style="text-align: justify"><strong>Jersey </strong>debe ser una maravilla, pero ha debido de ser el último <em>framework </em>en sufrir el <a href="http://eddieamos.wordpress.com/2010/07/30/oracle-suffers-a-homer-simpson-moment-when-rebranding-java-from-sun-to-oracle-duh/" target="_blank"><em>rebranding</em> de Oracle</a> y no me funcionaba ni un solo enlace a la documentación. Así que la elección estaba clara.</p>
<p style="text-align: justify">Lo malo de <strong>Restlet </strong>es que, el cambio de la versión 1 a la 2 ha sido más traumático que encontrarte a tu abuela desnuda en la ducha, así que todos los <a href="http://danilogurovich.wordpress.com/2008/09/23/a-simple-restlet-demo-application/" target="_blank">ejemplos</a> que encontraba sobre cómo utilizar <strong>Restlet </strong>valían lo mismo que un billete de 7 euros.</p>
<p style="text-align: justify">Algunos cambios eran sencillitos, como el <em>rename </em>de <em>Resource </em>a <em>ServerResource</em>, pero otros -el constructor de <em>ServerResource </em>ya no recibe como parámetros un <em>Request </em>y un <em>Response </em>sino que la factoría de creación los inyecta después de instanciar el objeto- te obligaban a hacer lo que hacen los hombres de verdad: remangarse la camisa y tirar de API.</p>
<p style="text-align: justify">Implementé <a href="http://danilogurovich.wordpress.com/2008/09/23/a-simple-restlet-demo-application/" target="_blank">el mejor ejemplo que encontré</a>, adaptándolo para que funcionara con <strong>Restlet 2,</strong> incrustado en mi aplicación <em>legacy</em>, y creé un HTML+JavaScript (del bueno) independiente, con un formulario básico que me permitiera indicar la URL, parámetros y método HTTP que quisiera probar. Un figura, ese soy yo.</p>
<h3 style="text-align: justify">EL MURO DE CEMENTO</h3>
<p style="text-align: justify">Empiezo a probar mi implementación a través de mi cliente  y la cosa parece que funciona: consigo controlar el flujo de la aplicación -hasta un <em>catch-all</em>-, recoger parámetros y devolver mi <em>Response</em>&#8230; pero, cuando llega a mi cliente, un flamante <strong>Firefox</strong> <strong>3.6.2</strong>,  el <a title="HTTP Status" href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes" target="_blank">HTTP Status</a>, ese que te indica que todo ha ido como la seda o que has metido la pata, es un cero patatero. <strong>¿¿¿ Cero ??? WTF ???</strong></p>
<p style="text-align: justify">Bueno&#8230; el <strong>HTTP Status</strong> es básico para validar las cosas van bien, pero podría llegar a prescindir de él. Ya validaré los datos del <em>Response</em>, a lo Pancho Villa, en cliente, pero es que&#8230; ¡tampoco llegan los datos! Ostras, esto ya es más grave.</p>
<p style="text-align: justify">Se me enciende la bombilla y pienso &#8220;claro, eso es porque no indicas el <em>status</em> antes de devolver la <em>Response </em>desde tu aplicación de servidor&#8221; y me pongo a hacer idioteces como esta en <strong>Restlet</strong>:</p>
<pre style="text-align: justify">setStatus(Status.SUCCESS_OK);</pre>
<p style="text-align: justify">
<p style="text-align: justify">¡Pero tampoco funciona! ¡Maldita sea! Y, lo peor de todo, es que, cuando llamaba a los servicios directamente por invocación desde la barra del navegador en vez desde mi HTML+JavaScript (del bueno) independiente, todo funcionaba bien&#8230; ¬¬</p>
<h3 style="text-align: justify">EL PROBLEMA</h3>
<p style="text-align: justify">Después de comprobar unas 20 veces que tenía todo BIEN y, aún así, todo funcionaba MAL, me dio por <em>googlear </em>&#8216;HTTP Status ==  0&#8242; y<strong> la explicación que encontré era tan simple que no podía creerlo</strong>. Lo más increíble de todo era el párrafo que decía &#8220;.<em>.. y no te funcionará en otro navegador que no sea Explorer</em>&#8220;. Así que,  me esforcé por recordar cómo podía abrir el Internet Explorer, ejecuté mi cliente HTML+JavaScript (del bueno) con él y&#8230; <em>voilà</em>! El navegador no solo recibía un <em>Status </em>200 <em>aka </em>&#8220;todo ha ido fino Pochettino&#8221; sino que me pintaba, con mi AJAX de todo a 100, los datos de respuesta del servidor.</p>
<p style="text-align: justify">Al final, todo era una cuestión de seguridad&#8230; y de <strong><em>cross-site scripting</em></strong>.</p>
<p style="text-align: justify">Si os leéis este <a href="https://developer.mozilla.org/En/HTTP_Access_Control" target="_blank">textazo técnico de Mozilla</a>, aprenderéis que, por defecto, Firefox implementa una restricción de seguridad que impide el <em>cross-site request</em> o, lo que es lo mismo, <strong>que un recurso de un dominio A haga una petición de un recurso del dominio B</strong>.</p>
<p style="text-align: justify">En mi caso, mi cliente HTML estaba alojado en mi disco duro, mientras que el recurso que solicitaba por REST era servido por  un TOMCAT en local &#8230; pero  evidentemente en dominio diferente para el navegador.</p>
<p style="text-align: justify">La solución consiste en incluir una cabecera especifica en la <em>HTTP Response</em> que se envía de vuelta al navegador: <strong>Access-Control-Allow-Origin</strong></p>
<p style="text-align: justify">Mediante esta cabecera, desde el servidor podemos avisar al navegador de qué dominios están autorizados para solicitar recursos de nuestro sitio. <strong>Si queremos permitir el acceso a nuestra API REST desde cualquier dominio</strong>, como en mi caso, tendremos que darle el valor &#8220;*&#8221; a dicha cabecera.</p>
<h3 style="text-align: justify">LA SOLUCIÓN</h3>
<div id="attachment_5372" class="wp-caption alignright" style="width: 279px"><a href="https://gist.github.com/816701"><img class="size-medium wp-image-5372  " style="border: 0pt none;margin-left: 10px" title="gist" src="http://sixservix.com/blog/david/files/2011/02/gist-269x300.jpg" alt="Cacho código" width="269" height="300" /></a><p class="wp-caption-text">Soy un looser y no sé cómo incrustar un snippet de GitHub en el WordPress. No me funciona ni un plugin !!! O_o</p></div>
<p style="text-align: justify">El problema es que con <strong>Restlet </strong>no manejamos directamente las cabeceras HTTP, sino que estas se manejan encapsuladas en <em>wrappers</em> propios de la aplicación.</p>
<p style="text-align: justify">Para poder escribir esta cabecera, debemos recuperar este <em>wrapper </em>en forma de objeto <a title="org.restlet.data.Form" href="http://www.restlet.org/documentation/2.0/jse/api/org/restlet/data/Form.html" target="_blank">Form</a> y añadir la cabecera directamente.</p>
<p style="text-align: justify">Para evitar hacer esto en cada método (GET, POST, PUT&#8230;) de nuestro <a title="org.restlet.resource.ServerResource" href="http://www.restlet.org/documentation/2.0/jse/api/org/restlet/resource/ServerResource.html" target="_blank">ServerResource</a>, he sobrescrito el método <strong><em>do Init</em>()</strong> que se ejecuta cada vez que se instancia el objeto.</p>
<p style="text-align: justify">Es evidente que podríamos hacer una refactorización inmediata y hacer que nuestros <strong>ServerResources </strong>(realmente, los recursos REST que exponemos gracias a <strong>Restlet</strong>) no extiendan directamente de esa clase abstracta sino de una implementación propia que sobrescriba el <strong><em>doInit</em>()</strong> para todos.</p>
<p style="text-align: justify">Como soy un auténtico perdedor, no he conseguido copiar el fragmento de código que había colgado en <strong>GitHub</strong>, pero aquí os dejo <a title="Más que código, oro puro" href="https://gist.github.com/816701" target="_blank">el enlace</a>.</p>
<p style="text-align: justify">Queda mucho por hablar de cómo juguetear, de verdad, con REST (autenticación, el <strong><em>preflighted </em></strong>o verificación previa, etc), pero por hoy es suficiente. Ya os habéis tragado un articulazo de casi 1200 palabras.</p>
<p style="text-align: justify"><span style="color: #008000"><strong>DISCLAIMER: La verdad es que no hace falta nada de esto para trabajar con mi aplicación de Android. En Android, pondría un cliente de </strong><strong>Restlet y se comunicaría con mi aplicación por conexión directa, nada de navegador.</strong></span></p>
<p style="text-align: justify"><span style="color: #008000"><strong>También es importante que sepáis que mucha gente no utiliza el</strong></span> <span style="color: #339966"><span style="color: #008000"><strong><strong><em>Access-Control-Allow-Origin</em> </strong>con valor *, sino que gestionan una lista blanca de dominios autorizados. ¿A alguien le suena el registro de dominio para utilizar las APIs de Google?</strong></span><br />
</span></p>
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2009/09/30/explicando-rest-a-mam/' rel='bookmark' title='Permanent Link: Explicando REST a mi madre'>Explicando REST a mi madre</a> <small>Si mamá, desde hace ya un buen tiempo, cuando vienes...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/02/16/http-access-control-rest/feed/</wfw:commentRss>
		<slash:comments>96</slash:comments>
		</item>
		<item>
		<title>Sweet simplicity (Why I love my Mac)</title>
		<link>http://sixservix.com/blog/david/2011/01/21/sweet-simplicity/</link>
		<comments>http://sixservix.com/blog/david/2011/01/21/sweet-simplicity/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 05:05:32 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5181</guid>
		<description><![CDATA[Take a look at the instructions to install an Android USB Device to deploy apps...]]></description>
			<content:encoded><![CDATA[<p>Things like this make me love my mac :)</p>
<div id="attachment_5182" class="wp-caption alignright" style="width: 584px"><a href="http://sixservix.com/blog/david/files/2011/01/AndroidUSBDevice.jpg"><img class="size-full wp-image-5182   " title="AndroidUSBDevice" src="http://sixservix.com/blog/david/files/2011/01/AndroidUSBDevice.jpg" alt="" width="574" height="261" /></a><p class="wp-caption-text">click the image to get the TRUTH :)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/01/21/sweet-simplicity/feed/</wfw:commentRss>
		<slash:comments>289</slash:comments>
		</item>
		<item>
		<title>Sé original, copia</title>
		<link>http://sixservix.com/blog/david/2011/01/11/copia/</link>
		<comments>http://sixservix.com/blog/david/2011/01/11/copia/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 05:05:51 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[gestion de personal]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5052</guid>
		<description><![CDATA[Todo el mundo espera ser el inventor del nuevo Facebook y el creador de la próxima Google. Mientras esperas esa gran idea, copia sin remordimiento alguno.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-5053" style="border: 0pt none;margin-bottom: 20px;margin-right: 10px" title="bigidea" src="http://sixservix.com/blog/david/files/2011/01/bigidea.png" alt="" width="198" height="258" />Últimamente he conocido a mucho desarrollador voluntarioso que está &#8216;<em>pensando y dándole vueltas a un par de ideas</em>&#8216; para empezar a desarrollar una aplicación o sitio web. En realidad, la mayoría de estos camaradas del metal ni por asomo quieren mancharse las manos con todo el trabajo de Word y Powerpoint que supone lanzar algo, sino que buscan una excusa para practicar el nuevo lenguaje de programación de moda o la versión 3.4 del <em>framework</em> de rigor, pero eso es otra historia&#8230;</p>
<p style="text-align: justify">Lo cierto es que es posible que des con la clave para crear el nuevo Facebook. Igual que es posible que te toque la lotería&#8230; pero las posibilidades son muy bajas. Para los que realmente quieran hacer cosas, para los que quieran evitar la <a title="Analysis Paralysis" href="http://en.wikipedia.org/wiki/Analysis_paralysis" target="_blank"><em>analysis paralysis</em></a>, hay otra posibilidad: copiar. <strong>Copiar miserablemente y sin recato alguno</strong>.</p>
<p style="text-align: justify">Es sorprendente el número de desarrolladores voluntariosos de los que he hablado antes que JAMÁS dedican más de un par de minutos a leer una reseña o algún artículo sobre <em>startups</em> o nuevas aplicaciones, aunque pretendan crear o trabajar en una.</p>
<h3 style="text-align: justify">POR QUÉ COPIAR</h3>
<p style="text-align: justify">Intentar crear un producto informático o sitio web sin haber estudiado mínimamente lo que han hecho otros, cómo y porqué, es lo mismo que esperar que un niño componga sólo conciertos y óperas por haber escuchado &#8216;Las cuatro estaciones&#8217; de Vivaldi desde la cuna. Demasiado optimista.</p>
<p style="text-align: justify">Y estudiar una aplicación tiene mucho más que ver con el problema que soluciona y cómo lo soluciona, que con el lenguaje de programación o el <em>framework</em> con el que se implementa la solución. Por mucho que a algunos desarrolladores nos duela porque nos haga plantearnos la mera posibilidad de no ser el ombligo del Universo. ¿Cuántos seríais capaces de enumerar la totalidad de las características de algo tan aparentemente sencillo como vuestro propio <em>blog</em>? ¿RSS, búsquedas, alertas por respuestas a comentarios&#8230;? Probablemente, muy pocos. Pero, lo más importante, es que casi ninguno podría hacer una comparación de características con su <em>competencia</em> directa, por ejemplo, MI <em>blog</em> ¿Cómo pensar siquiera en crear un sistema de <em>blogs</em>? Tendríamos el mismo resultado que alguien que construya una casa sin saber que hacen falta cimientos. Da igual que utilices cemento de la marca Ruby o Java, la casa se caerá.</p>
<h3 style="text-align: justify">CÓMO COPIAR</h3>
<p style="text-align: justify">Una vez que interiorizamos que debemos observar y estudiar otras aplicaciones si queremos diseñar las nuestras ¿Por dónde empezamos? Hay miles de sitios web sobre startups y aplicaciones, pero podéis empezar por un listado sencillo como este, con <a title="50 logos de startups" href="http://blog.designcrowd.com/article/243/50-startup-logos-from-2010" target="_blank">50 logos de startups creados en 2010</a> que me envió Jeroclo, &#8220;el espartano&#8221;. Navegad por los logos, elegid uno que os llame la atención, haced <em>click</em> en el mismo e intentar averiguar qué hace la aplicación, porqué lo hace y cómo lo hace.</p>
<p style="text-align: justify">Interrogaros a vosotros mismos como usuarios. ¿Satisface vuestra necesidad? ¿Echáis en falta alguna funcionalidad? ¿Creéis que podríais resolver mejor el problema? Si respondéis afirmativamente a alguna de las tres preguntas, ya tenéis la idea, <em>vuestra</em> idea, para desarrollar un producto o aplicación. No hay que sobrevalorar la importancia de <strong>ser el primero</strong> y debemos olvidar la esperanza de <strong>ser los únicos</strong> que hagamos algo. Siempre ha habido alguien que ha sido al menos tan listo como tú. Lo importante es <strong>ser diferente</strong>, pensar en algo que te diferencie de la competencia&#8230; y conseguir implementarlo, por supuesto. Facebook no fue la primera red social. Fue la primera que era exclusiva y restringida a universidades americanas de élite. El resto fueron giros en su modelo de negocio.</p>
<h3 style="text-align: justify">DE LA COPIA A LA CREACIÓN</h3>
<p style="text-align: justify">Todos conocemos alguna aplicación o servicio que nos gusta, pero que sería <em>perfecto</em> si tuviera tal o cual característica o hiciera las cosas de una determinada manera. Bien ¿Y por qué no lo implementamos? Probablemente no será tan original como crear el nuevo Facebook, pero será mejor que programar <a title="Pelotator" href="http://www.pelotator.com" target="_blank">la enésima aplicación para enviar un mensaje de agradecimiento a tus nuevos seguidores en Twitter</a>.</p>
<p style="text-align: justify">La copia e imitación es parte del proceso de aprendizaje humano. Los niños aprenden observando y copiando las actividades de los adultos. Integremos este proceso natural en nuestra carrera como diseñadores y desarrolladores de aplicaciones. De la misma manera que un niño descubre por sí solo con emoción que puede correr después de haber aprendido a andar, quizás, algún día, seamos capaces de diseñar una aplicación original desde cero. Mientras tanto, copiad. Copiad sin vergüenza alguna y, si sois capaces, conseguid que vuestras copias superen a los originales.</p>
<p style="text-align: justify"><span style="color: #008000"><strong>DISCLAIMER: redacté este artículo mientras preparaba mi charla para la speakerconf &#8220;15 en 5&#8242;&#8221; que se celebró el 7 de enero en Madrid. Lo creáis o no, conseguí meter todo esto -bueno, al menos, el concepto- en 15 diapositivas y 5 minutos.</strong></span></p>
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/01/11/copia/feed/</wfw:commentRss>
		<slash:comments>167</slash:comments>
		</item>
		<item>
		<title>Web Designer vs. Web Developer</title>
		<link>http://sixservix.com/blog/david/2011/01/03/web-designer-vs-web-developer/</link>
		<comments>http://sixservix.com/blog/david/2011/01/03/web-designer-vs-web-developer/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 06:45:31 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[wix]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=5080</guid>
		<description><![CDATA[Mucha gente confunde a los diseñadores web y a los programadores web. Para la mayoría, simplemente somos "los que hacen páginas web", pero no es así... :)]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Para comenzar el año con energía y fuerza, una de esas infografías que a mi tanto me gustan: diferencias entre un <strong>desarrollador web</strong> y un <strong>diseñador web</strong>. Por si a alguien no le había quedado claro :)</p>
<p style="text-align: center"><a href="http://sixservix.com/blog/david/files/2011/01/web-designers-vs-developers.png"><img class="aligncenter size-full wp-image-5082" style="border: 0pt none" title="web-designers-vs-developers" src="http://sixservix.com/blog/david/files/2011/01/web-designers-vs-developers.png" alt="" width="567" height="882" /></a></p>
<p style="text-align: justify">RT @<a title="WIX" href="http://blog.wix.com/2010/11/web-designers-vs-web-developers.html" target="_blank">WIX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2011/01/03/web-designer-vs-web-developer/feed/</wfw:commentRss>
		<slash:comments>250</slash:comments>
		</item>
		<item>
		<title>Crónica de la BoConf Zaragoza 2010</title>
		<link>http://sixservix.com/blog/david/2010/12/10/cronica-boconf-zaragoza2010/</link>
		<comments>http://sixservix.com/blog/david/2010/12/10/cronica-boconf-zaragoza2010/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 05:05:17 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[boconf]]></category>
		<category><![CDATA[cachirulo valley]]></category>
		<category><![CDATA[masterbranch]]></category>
		<category><![CDATA[spain on twins]]></category>
		<category><![CDATA[vitamin pills]]></category>
		<category><![CDATA[zaragoza]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4884</guid>
		<description><![CDATA[En Zaragoza hay muchas más cosas que el Cierzo y el Pilar. Hay mucha gente interesante haciendo cosas interesantes. Y alguno de ellos estuvieron en la Boconf...


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/' rel='bookmark' title='Permanent Link: BoConf Zaragoza 2010'>BoConf Zaragoza 2010</a> <small>Si ya tengo mi propia televisión ¿Por qué no tener...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">
<p style="text-align: center"><img class="size-full wp-image-4887 aligncenter" title="boconf2010_01" src="http://sixservix.com/blog/david/files/2010/12/boconf2010_01.jpg" alt="Asistentes a la BoConf 2010" width="600" height="214" /></p>
<p style="text-align: justify">El pasado domingo 5 de diciembre se celebró en Zaragoza la I <strong><a title="BoConf" href="http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/" target="_blank">BoConf</a></strong>. La idea era aprovechar mi viaje a Zaragoza para reunirme con Dani, conocer a la interesantísima <em>scene </em>de desarrolladores que hay en Aragón y que yo he bautizado como <strong><a title="Cachirulo Valley" href="http://www.lapastillaroja.net/archives/002166.html" target="_blank">Cachirulo Valley</a></strong>. Lo que nació como una broma, acabó reuniendo a &#8220;más de veinte personas&#8221;, según los cálculos <em>científicos </em>de <strong>Dani Latorre</strong>.</p>
<p style="text-align: justify">Lo cierto es que el éxito de la convocatoria nos desbordó y tuvimos que improvisar un plan de contingencia que hizo que Dani nos arrastrara por los oscuros garitos que suele frecuentar. Para que la gente sea consciente de la altura del <em>personaje</em>, en el <a title="'Angel Azul" href="http://www.tilllate.es/es/location/el-angel-azul" target="_blank">Ángel Azul</a>, las cervezas pasaron de valer 2,50€ a 1,90€ en cuanto me identificaron como &#8220;amigo del caballero&#8221; :)</p>
<p style="text-align: justify">Me fue imposible hablar con todo el mundo, a pesar de que lo intenté hasta las cuatro de la mañana, cuando me retiré a descansar después de <strong>ocho horas</strong> <strong>de BoConf</strong>. Aún así, pude constatar que el <strong>Cachirulo Valley</strong> es una realidad y que tiene una salud espléndida. Una vez más, confirmé una de las máximas del <em>pintxo management</em>, el movimiento de gestión empresarial del que soy -al mismo tiempo- autor, máximo exponente y único seguidor: <span style="text-decoration: underline">muchas veces, se aprende más tomando unas cervezas con un puñado de colegas que asistiendo a una conferencia de un <em>gurú</em> del sector</span>.</p>
<p style="text-align: justify">Primero estuve hablando con los chicos de <strong><a title="Kraken Empire" href="http://www.krakenempire.com/" target="_blank">Kraken Empire</a></strong>, un par de <em>cracks </em>que dejaron su trabajo en Madrid como desarrolladores de videojuegos para volver a Aragón y comenzar a crear su primer juego propio, <strong>Kromaia</strong>, que tiene una pinta estupenda. Charlamos sobre cómo arrancar una empresa desde cero y, sobre todo, les estuve interrogando sobre los conocimientos necesarios para programar con un uso exhaustivo de las 3D, algo muy alejado del mundo Java del que provengo.</p>
<p style="text-align: justify">Al poco de haber empezado y haciéndose esperar, como su estatus de estrella mediática requiere, apareció <strong><a title="Jorge Rubira" href="http://jorgerubira.blogspot.com/" target="_blank">Jorge Rubira</a></strong> que anda celebrando el programa número 100 de su <em>podcast </em>en <strong>javaHispano</strong>. Un tío grande, aunque no apareció con la camiseta que me hizo traerle de la javaOne&#8230;</p>
<p style="text-align: justify">
<div id="attachment_4890" class="wp-caption alignleft" style="width: 370px"><img class="size-full wp-image-4890        " style="border: 0pt none;margin-right: 10px" title="boconf2010_02" src="http://sixservix.com/blog/david/files/2010/12/boconf2010_02.jpg" alt="Dialogando con Gimenete" width="360" height="281" /><p class="wp-caption-text">Escuchando los planes secretos para conquistar el mundo de Gimenete</p></div>
<p style="text-align: justify">También estuve charlando con <a title="Vanessa" href="http://twitter.com/#!/deepbane" target="_blank">Vanessa</a> y <a title="Plunchete" href="http://twitter.com/#!/plunchete" target="_blank">Plunchete</a> durante un rato largo acerca de <strong><a title="Masterbranch" href="http://www.masterbranch.com/" target="_blank">Masterbranch</a></strong> y la evolución del proyecto. Me contaron muuuchas cosas interesantes que por prudencia no voy a contar, pero sí os puedo adelantar que van a hacer mucho ruido a partir de ahora.</p>
<p style="text-align: justify">Durante la cena, <a title="Gimenete" href="http://gimenete.wordpress.com/" target="_blank">Gimenete</a> (sí&#8230; Plunchete, Gimenete, Dani Latorrete&#8230; en Zaragoza, si no tienes un apodo acabado en &#8216;ete&#8217;, estás <em>out</em>) me estuvo contando en que andaba metido últimamente. Después de hablar 10 minutos con él, me di cuenta de que, aunque <a title="Gimenete Ciclista" href="http://twitter.com/#!/gimenete/status/9271745928241152" target="_blank">es un pésimo ciclista</a>, también es uno de los tíos más inquietos y con ganas de hacer cosas con los que he tenido el placer de hablar últimamente. Hasta me enseñó alguno de sus juguetes, como <a title="Vitamin Pills" href="http://itunes.apple.com/es/app/vitamin-pills/id396111296?mt=8" target="_blank">Vitamin Pills</a>.</p>
<p style="text-align: justify">En un bar donde los copazos sólo valían cinco euros -ocasión que ningún madrileño desaprovecha para soltar nuestra frase favorita: &#8220;¡Qué baaaaraaatooo!&#8221;- Lucas aka <a title="Calvo con Barba" href="http://about.me/calvoconbarba" target="_blank"><strong>Calvo con Barba</strong></a> y yo estuvimos hablando de nuestras ideas y futuros proyectos. Lucas, no sólo comparte estilista conmigo, sino que es un gran tipo. No es informático, sino que se dedica a <a title="Vender Humo" href="http://es.wikipedia.org/wiki/Marketing" target="_blank">vender humo</a>. Eso sí, humo <strong>del bueno</strong>. Además, es el tipo que está detrás de <a title="Spain on Twins" href="http://www.spainontwins.com/" target="_blank"><strong>Spain on Twins</strong></a>, así que, si tienes una <strong>Harley</strong>, deberías conocerlo.</p>
<p style="text-align: justify">
<p style="text-align: justify">En el (pen)último antro al que nos arrastró Dani, estuve filosofando de nuevo con él. Los dos coincidíamos en que había gente con muchísimo más talento que nosotros haciendo muchas menos cosas. Y creo que esa frase, ese pensamiento, resumen el espíritu de la <strong>BoConf</strong>: una reunión de gente con ganas de hacer cosas y en donde se trata a todo el mundo de igual a igual, seas un empresario de éxito (con &#8220;participación minúscula&#8221;, pero empresario) como <a href="http://twitter.com/#!/dexem" target="_blank">Dani Baeyens</a> de Warp, o una <em>programadora COBOL</em> de cartón-piedra como <strong>Candela</strong>, mi mujer. Una reunión donde no se expone, sólo se conversa.</p>
<p style="text-align: justify">Me dejo a muchos, como el amigo <a title="Pablo Jimeno" href="http://pablojimeno.tumblr.com/" target="_blank">Pablo Jimeno</a>, <a href="http://twitter.com/#!/jbeerdev" target="_blank">Jose B. Cortes</a> <a href="http://twitter.com/#!/uncurioso" target="_blank">@uncurioso</a> o el crack de <a href="http://voxelizer.blogspot.com/" target="_blank">Jose Felix Lucía </a>(el hombre con tres nombres), pero prefiero dejarme cosas en el tintero para la próxima vez. Porque estoy deseando volver a Zaragoza y reencontrarme con mis viejos y nuevos amigos. Gente maja, gente maña. La savia del <strong>Cachirulo Valley</strong>.</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/' rel='bookmark' title='Permanent Link: BoConf Zaragoza 2010'>BoConf Zaragoza 2010</a> <small>Si ya tengo mi propia televisión ¿Por qué no tener...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/12/10/cronica-boconf-zaragoza2010/feed/</wfw:commentRss>
		<slash:comments>821</slash:comments>
		</item>
		<item>
		<title>BoConf Zaragoza 2010</title>
		<link>http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/</link>
		<comments>http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 05:15:32 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[david]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[boconf]]></category>
		<category><![CDATA[zaragoza]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4839</guid>
		<description><![CDATA[Si ya tengo mi propia televisión ¿Por qué no tener mi propia conferencia? Sigue leyendo para enterarte en lo que me he dejado liar esta vez... :)


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/12/10/cronica-boconf-zaragoza2010/' rel='bookmark' title='Permanent Link: Crónica de la BoConf Zaragoza 2010'>Crónica de la BoConf Zaragoza 2010</a> <small>En Zaragoza hay muchas más cosas que el Cierzo y...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">En algún momento, esto fue un <em>blog</em> corporativo. Quizás, sólo durante un momento fulgurante, pero lo fue. Lo juro. Ahora es algo más que eso. También es un punto de encuentro de amigos.</p>
<p style="text-align: justify">Durante la <a title="AOS2010" href="http://sixservix.com/blog/david/2010/11/10/agile-open-spain-2010/" target="_blank">AOS2010</a>, empecé a bromear con uno de esos amigos, el desarrollador y<em> bon vivant</em> <a title="Dani Latorre" href="http://www.danilat.com/weblog/acerca-de/" target="_blank">Dani Latorre</a>, sobre la posibilidad de aprovechar mi visita a Zaragoza en el puente de la Constitución para montar nuestra propia <em>micro-conferencia</em> sobre tecnología, desarrollo de aplicaciones&#8230; y pintxos, la <strong>BoConf</strong> (DISCLAIMER: vale, el nombre no es muy original, pero es lo único que se nos ocurrió a las 4 de la mañana. Buscamos sugerencias), donde intentar conocer a todos los miembros posibles de lo que yo denomino <strong>Cachirulo Valley</strong>, la vibrante escena de desarrollo que hay en Aragón en general y en Zaragoza en particular.</p>
<p style="text-align: justify"><a href="http://sixservix.com/blog/david/files/2010/12/cachirulovalleylogob.png"><img class="size-full wp-image-4840 aligncenter" style="border: 0pt none" title="cachirulovalleylogob" src="http://sixservix.com/blog/david/files/2010/12/cachirulovalleylogob.png" alt="" width="600" height="231" /></a></p>
<p style="text-align: justify">Hay un MONTÓN de empresas haciendo cosas interesantes en la capital del  Ebro y alrededores, como <a title="Frogtek" href="http://frogtek.org/" target="_blank">Frogtek,</a> <a title="SevenClick" href="http://www.sevenclick.com/" target="_blank">SevenClick</a>, <a title="Masterbranch" href="http://www.masterbranch.com/" target="_blank">Masterbranch</a> o <a title="Pragmatic" href="http://www.pragmatic.es/" target="_blank">Pragmatic</a>; y aún más  personalidades relevantes como <a title="Alberto Gimeno" href="http://gimenete.wordpress.com/" target="_blank">Alberto Gimeno</a>, <a title="Jorge Rubira" href="http://jorgerubira.blogspot.com/" target="_blank">Jorge Rubira</a>, <a title="Teresa Oliver" href="http://twitter.com/#!/tolivern" target="_blank">Teresa  Oliver</a>, <a title="Calvo con Barba" href="http://about.me/calvoconbarba" target="_blank">Calvo con Barba</a>, el propio Dani Latorre y muchos más.</p>
<p style="text-align: justify">Dani y yo conocíamos todos los obstáculos para tener un mínimo poder de convocatoria: pretendíamos reunirnos un domingo, con frío, en mitad de un puente y con la misma planificación ganadora que la del estratega de Ferrari, pero siendo maño y cabezón el, y madrileño de pro yo, nadie dio su brazo a torcer, aunque comenzamos a olvidarnos de lanzar cualquier tipo de convocatoria pública. Hasta que el amigo <strong>Pablo Jimeno</strong> hizo un <em>all-in</em> y nos pasó por la izquierda lanzando <a title="BoConf" href="http://pablojimeno.tumblr.com/post/1985395690/boconf-zaragoza-david-bonilla" target="_blank">ESTO</a>.</p>
<p style="text-align: justify">Así que, me veo empujado a convocar, con orgullo y satisfacción, la primera <strong>BoConf</strong>, el domingo 5 de diciembre de 2010 en Zaragoza, Aragón. Nos reuniremos a las 20h en <a title="El Angel Azul" href="http://11870.com/pro/el-angel-azul-1" target="_blank">El Ángel Azul</a>, el punto de reunión que el maestro de ceremonias Latorre ha considerado más adecuado para acoger a los <em>centenares</em> de asistentes.</p>
<p style="text-align: justify">Si quieres asistir a la única micro-conferencia celebrada en España y primer <em>Testosterone Driven Event</em> del mundo, no te puedes perder la <strong>Boconf Zaragoza 2010</strong>. Hablaremos de la teoría del superhombre de Nietzsche, la alegoría de la caverna de Platón y, si hay tiempo, de los avatares del día a día de todos los que intentamos ganarnos la vida con el desarrollo de software. Estructurada con el modelo <em>Agile Beer Space</em>, cada uno podrá unirse a las conversaciones que quiera con una única norma: tener un vaso de cerveza en la mano.</p>
<p style="text-align: justify">Por supuesto, los acompañantes y acompañantas serán bienvenidos. De hecho, la famosa <em>programadora Cobol</em> Candela Milán impartirá su magistral ponencia &#8220;Como hacer creer a un informático que escuchas con atención las tonterías de las que habla mientras repasas mentalmente la lista de la compra&#8221;.</p>
<p style="text-align: justify">
<p style="text-align: justify">Más de uno pensará que esto es una tontunez. Para nosotros, no es más que hacer Comunidad de la mejor manera posible: con eventos que surgen espontáneamente de la misma. Otros pensareis que hay que ser muy valiente para convocar públicamente a la gente y arriesgarte a que no asista NADIE. No es valentía, es pura inconsciencia :) De todas formas, la última vez que hicimos algo similar, <a title="Quedada Pirata" href="http://sixservix.com/blog/david/2010/03/04/quedadapirata/" target="_blank">no salió nada mal</a>. Es probable que no seamos muchos, pero haremos MUCHO RUIDO.</p>
<p style="text-align: justify">Si vas a asistir y quieres que orgulloso el Mundo lo sepa, deja un comentario en este <em>blog</em> y te añadiremos a la lista de asistentes confirmados <strong>¡Arriba el Cachirulo Valley!</strong></p>
<p style="text-align: justify"><span style="text-decoration: underline"><strong>ASISTENTES CONFIRMADOS</strong></span></p>
<ul>
<li>La buena gente de <a title="Kraken Empire" href="http://www.krakenempire.com/" target="_blank">Kraken Empire</a></li>
<li><a href="http://twitter.com/#!/jbeerdev" target="_blank">Jose B. Cortés</a></li>
<li><a title="Jose Manuel Cristobal" href="http://twitter.com/#!/jcristo2" target="_blank">Jose Manuel Cristobal</a></li>
<li><a href="http://www.hachemuda.com/acerca-de/" target="_blank">Guillermo Latorre</a></li>
<li><a title="Jesús Garcia Gil" href="http://es.linkedin.com/in/jesusgarcia" target="_blank">Jesús García Gil</a></li>
<li><a title="Jorge Rubira" href="http://jorgerubira.blogspot.com/" target="_blank">Jorge Rubira</a></li>
<li><a href="http://plunchete.wordpress.com/" target="_blank">Ignacio Andreu aka Plunchete</a></li>
<li><a href="http://voxelizer.blogspot.com/" target="_blank">Jose Felix Lucía</a></li>
<li>Pablo Jimeno</li>
<li>Oriol Coll</li>
<li><a href="http://twitter.com/#!/candelamd" target="_blank">Candela &#8220;Miss Cobol&#8221; Milán</a></li>
<li>Dani Latorre</li>
<li>David Bonilla</li>
</ul>
<p style="text-align: justify">Y ¡bola extra! <a href="http://www.facebook.com/event.php?eid=133319573391560" target="_blank">La página pública del evento en facebook</a>, para el que quiera socializar y tal. Otra fantástica idea de Dani y donde, de momento, <span style="text-decoration: line-through">no se ha registrado ni él</span> :)</p>
<p style="text-align: justify">


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/12/10/cronica-boconf-zaragoza2010/' rel='bookmark' title='Permanent Link: Crónica de la BoConf Zaragoza 2010'>Crónica de la BoConf Zaragoza 2010</a> <small>En Zaragoza hay muchas más cosas que el Cierzo y...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/12/01/boconf-zaragoza-2010/feed/</wfw:commentRss>
		<slash:comments>394</slash:comments>
		</item>
		<item>
		<title>La cultura del fracaso</title>
		<link>http://sixservix.com/blog/david/2010/11/25/la-cultura-del-fracaso/</link>
		<comments>http://sixservix.com/blog/david/2010/11/25/la-cultura-del-fracaso/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 05:00:19 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[negocios]]></category>
		<category><![CDATA[carlos ble]]></category>
		<category><![CDATA[fracaso]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[maven charts]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4804</guid>
		<description><![CDATA[¿Alguien recuerda la última vez que vio a alguien reconocer que se había equivocado? ¿Cuanto progresaría nuestra Sociedad si aprendiéramos de nuestros errores?]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><a href="http://sixservix.com/blog/david/files/2010/11/fracaso2.jpg"><img class="alignleft size-full wp-image-4807" style="border: 0pt none;margin-right: 10px" title="fracaso" src="http://sixservix.com/blog/david/files/2010/11/fracaso2.jpg" alt="Fracaso" width="300" height="235" /></a>¡Menudo revuelo se ha montado con <a href="http://www.carlosble.com/?p=719" target="_blank">el artículo de Carlos Ble</a> sobre su huida de la Google App Engine! En él, Carlos enumeraba 13 puntos por los que había decidido abandonar la plataforma de Google como infraestructura para su empresa.</p>
<p style="text-align: justify">Hasta ahora, nada revolucionario. La mayoría de las características de la GAE sobre las que se habla en el artículo están ampliamente documentadas y, aunque seas aficionado -como yo- al <em>Macho Programming</em> y no leas ni una vez los manuales, son evidentes a los cinco minutos de intentar trabajar con la misma.</p>
<p style="text-align: justify">Lo revolucionario del artículo es que, en él, Carlos reconoce, bien clarito aunque en inglés, que SE HA EQUIVOCADO.</p>
<p style="text-align: justify">Independientemente de estar de acuerdo o no con lo que cuenta y con el estilo que utiliza, yo reconozco que HE APRENDIDO con el artículo de Carlos y quiero darle las gracias por ello. ¡Ojalá hubiera más artículos como el suyo! Pero no los hay. Al menos no aquí, en España.</p>
<p style="text-align: justify">En España no tenemos <strong>cultura del fracaso</strong>. Cuando alguien fracasa en algo queda estigmatizado, es un perdedor, un inútil que no sirve para nada. Por aquí habrá muchos que piensen que Carlos es un <em>looser</em> por no haber evaluado mejor donde se metía. En cambio, en otros sitios, tendrán una lectura muy diferente de la situación. Pensarán que al menos ha aprendido mucho sobre la GAE, a tener muy en cuenta las <a href="http://code.google.com/intl/es-ES/appengine/terms.html" target="_blank">condiciones y términos de servicio</a> y, sobre todo, que LO HA INTENTADO, y eso es mucho más de lo que suele hacer el 99,99% de la gente.</p>
<p style="text-align: justify">En la <a href="http://sixservix.com/blog/david/2010/07/23/javaone2010/" target="_blank">última javaOne</a> asistí a una charla del CTO de <a href="http://www.mint.com/" target="_blank">Mint</a> donde explicaba cómo, al principio de comenzar el desarrollo de la aplicación, aparecieron graves problemas de rendimiento en su base de datos MySQL que no sabían resolver porque &#8220;<em>no había ningún DBA en el equipo</em>&#8220;. Así que, aunque tenían poco dinero, decidieron contratar a un consultor para que les ayudara con el problema. Según él &#8220;l<em>a primera mejora fue casi instantánea, porque descubrió que habíamos instalado la BBDD con las opciones por defecto y que estaba corriendo en nuestro megaservidor de miles de dolares&#8230; utilizando sólo 256MB de memoria</em>&#8220;. Mint salió de aquel bache, fue comprada por Intuit por 170 millones de dólares y es casi seguro que el cenutrio que instaló la base de datos con 256MB sea hoy un feliz millonario ¿Recordáis haber visto a alguien contar en público alguna historia parecida en nuestro país? Yo no.</p>
<p style="text-align: justify"><img class="alignright size-full wp-image-4811" style="margin-left: 10px;border: 0pt none" title="coscorron" src="http://sixservix.com/blog/david/files/2010/11/coscorron.jpg" alt="" width="300" height="218" />Realmente, aquí tampoco tenemos <strong>cultura del éxito</strong>, porque cuando alguien consigue un mínimo triunfo siempre hay alguien que dictamina &#8220;<em>que tuvo suerte o un enchufe o ambos</em>&#8220;.</p>
<p style="text-align: justify">La verdad es que yo estoy aprendiendo bastante más de la aventura empresarial de Carlos que de las de otros supuestos emprendedores de éxito. Si hiciéramos caso sólo a lo que se lee en la blogosfera y se publica en los medios, España estaría llena de <em>startups</em> punteras&#8230; para que luego resulte que el bombazo del año sea la compra de Tuenti por el mismo dinero que en Estados Unidos dedican a financiar una web especializada en la venta de botones con anclas.</p>
<p style="text-align: justify">Eso si&#8230; creo que hay algo, en mi humilde opinión, en lo que sí se ha &#8220;equivocado&#8221; Carlos y es&#8230; en la audiencia a la que ha dirigido su mensaje. Se nota que ES un técnico y todo este embrollo  -por mucho que diga que sólo escribe para él y sus amigos- no ha dado otra impresión que la de ver a un técnico, un buen técnico, explicando sus decisiones de arquitectura y repitiendo unas 400 veces &#8220;<em>nuestro código es de lo bueno lo mejor y de lo mejor lo superior ¡Fue la plataforma no fui yo!</em>&#8221; para justificarse delante de la Comunidad de desarrolladores. Pero <strong>Carlos no tiene que justificar un carajote a la Comunidad</strong>. Ante los que tiene que justificarse son sus clientes, usuarios y posibles inversores, a los que lo de la latencia de la Google App Engine o del condensador de fluzo no solo les suena a chino sino que además, no les interesa lo más mínimo.</p>
<p style="text-align: justify">Yo hubiera escrito antes en el <em>blog</em> de la compañía pidiendo perdón a los usuarios por los problemas de funcionamiento y explicándoles porque ya no iban a repetirse más, como <a href="http://twitter.com/#!/Mavencharts_es/status/4097584796794880" target="_blank">ya hizo en twitter</a>. O explicando las estrategias y acciones que están adoptando para ganar cuota de mercado. Porque <a href="http://www.carlosble.com/?p=663" target="_blank">Carlos tiene inversores</a> -algunos son amigos míos- y no puedo dejar de pensar que, al menos parte de los 15.000€ que dice que ha perdido, no son suyos.</p>
<p style="text-align: justify">Pero claro, es fácil decir esto &#8220;desde la barrera y a toro pasado&#8221;, lo difícil es acertar a la primera cuando estás creando algo de la nada. Hasta que yo lo consiga, espero seguir aprendiendo mucho gracias a Carlos y a gente como él Ánimo.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/11/25/la-cultura-del-fracaso/feed/</wfw:commentRss>
		<slash:comments>98</slash:comments>
		</item>
		<item>
		<title>BonillaTV &#8211; Capítulo 7: Fin de Fiesta</title>
		<link>http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/</link>
		<comments>http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 04:50:32 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[BonillaTV]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sixservix]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[black eyed peas]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[javaone10]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4572</guid>
		<description><![CDATA[El APOTEOSICO fin de fiesta del Oracle Open World / javaOne 2010 como sólo BonillaTV podía contarlo. Lo nunca visto, lo que nunca ha sido contado... amazing !!!


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/23/bonillatv-capitulo-6/' rel='bookmark' title='Permanent Link: BonillaTV – Capítulo 6: El cuarto poder'>BonillaTV – Capítulo 6: El cuarto poder</a> <small>Una zona oculta del Moscone Center para la mayoría de...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/22/bonillatv-capitulo-5/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA'>BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA</a> <small>Segundo día de javaOne y ya estamos totalmente integrados en...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 4: ¡Esto empieza!'>BonillaTV &#8211; Capítulo 4: ¡Esto empieza!</a> <small>Primer día de javaOne, primer día de conferencias. Y queremos...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Si amáis java, si amáis programar, si amáis vuestra profesión, entenderéis porque creemos que éste es el MEJOR episodio de <strong>BonillaTV</strong> que se ha producido <strong>NUNCA</strong>.</p>
<p style="text-align: justify">En estos 5 minutos, hemos intentado condensar la filosofía que nos guía en nuestro día a día: disfrutar de nuestros amigos, de nuestra pasión y nuestro modo de vida. Nos gusta lo que hacemos e intentamos hacerlo cada día un poco mejor. Eso sí, sin olvidarnos nunca de que uno no debe tomarse muy en serio a si mismo :)</p>
<p style="text-align: center"><p><a href="http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/"><em>Pinche aquí para ver el vídeo</em></a></p></p>
<p style="text-align: justify">Creemos que no hay que ser aburridos para ser serios y que merece la pena arriesgarse a hacer algo nuevo, en vez de repetir una y otra vez las mismas fórmulas.</p>
<p style="text-align: justify">Sabemos que, cuando empezamos esta aventura, más de uno sonrió pensando que hacíamos el ridículo. Dos semanas después, podemos daros con orgullo algunas cifras:</p>
<ul>
<li>1.200 páginas vistas diarias de media en el <em>blog</em> (una cuarta parte del tráfico total de, por ejemplo, <strong>javaHispano</strong>)</li>
<li>185 comentarios generados</li>
<li>Más de 3.400 visionados completos en <strong>YouTube</strong></li>
<li>100º canal de <strong>YouTube</strong> con más subscriptores en el mes (58) a nivel global</li>
<li>7º canal de <strong>YouTube</strong> con más subscriptores en el mes de la categoría &#8220;<em>Gurús</em>&#8220;</li>
<li>Más de 50 <em>followers</em> nuevos en <strong>Twitter</strong> entre la cuenta de Jeroclo y la mía</li>
<li>Apoyo <strong>MASIVO</strong> de la Comunidad&#8230;</li>
</ul>
<p style="text-align: justify">Gracias por estar ahí y dar vuestro apoyo a esta nueva iniciativa. No sabemos si <strong>BonillaTV</strong> seguirá existiendo en el futuro, pero ha sido un placer y un privilegio compartir esta aventura con vosotros.</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/23/bonillatv-capitulo-6/' rel='bookmark' title='Permanent Link: BonillaTV – Capítulo 6: El cuarto poder'>BonillaTV – Capítulo 6: El cuarto poder</a> <small>Una zona oculta del Moscone Center para la mayoría de...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/22/bonillatv-capitulo-5/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA'>BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA</a> <small>Segundo día de javaOne y ya estamos totalmente integrados en...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 4: ¡Esto empieza!'>BonillaTV &#8211; Capítulo 4: ¡Esto empieza!</a> <small>Primer día de javaOne, primer día de conferencias. Y queremos...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/feed/</wfw:commentRss>
		<slash:comments>346</slash:comments>
		</item>
		<item>
		<title>Arquitectura de logging en Glassfish</title>
		<link>http://sixservix.com/blog/david/2010/08/24/logging-glassfish/</link>
		<comments>http://sixservix.com/blog/david/2010/08/24/logging-glassfish/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 04:50:13 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[storetto]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4107</guid>
		<description><![CDATA[Aprende como funciona el sistema de registro o logging en Glassfish v3 descubriendo el "oscuro secreto" de este servidor de aplicaciones ¿te atreves?


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/02/transacciones-y-bloqueos-en-glassfish-v3-con-ejb3-1-y-jpa2-iii/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (III)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (III)</a> <small>Tercera parte del tutorial sobre como utilizar transacciones y bloqueos...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/05/12/transacciones-y-bloqueos-en-glassfish-v3-con-ejb3-1-y-jpa2-ii/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (II)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (II)</a> <small>Segunda parte del tutorial sobre como utilizar transacciones y bloqueos...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/05/10/transacciones-bloqueos-glassfish-v3-ejb31-jpa2/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (I)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (I)</a> <small>Un sencillo tutorial sobre como utilizar transacciones y bloqueos con...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-4121" style="margin-right: 15px" title="glassfish" src="http://sixservix.com/blog/david/files/2010/08/glassfish.jpg" alt="Glassfish" width="256" height="256" />Sí, sé lo que estáis pensando: &#8220;¿Un artículo sobre <em>logging </em>en <strong>Glassfish</strong>?&#8221; Los que visitan este <em>blog </em>y no son técnicos ni siquiera habrán llegado a esta línea y los que sí lo sois pensaréis <a title="Glassfish Logging ? WTF ?" href="http://twitter.com/molpe/status/20713037513" target="_blank">&#8220;¿Qué tiene de interesante?&#8221;</a>.</p>
<p style="text-align: justify">Y, sin embargo, lo es. El modo en el que <strong>Glassfish </strong>trabaja con <em>logs </em>es peculiar y guarda algún <em>oscuro secreto</em>.  Sólo te pido <strong>dos cosas:</strong></p>
<ol style="text-align: justify">
<li>
<ol>
<li><strong>Cinco minutos de tu tiempo</strong> para que juzgues si lo he conseguido.</li>
<li>Que, para vivir una experiencia completa, <strong>escuches la canción &#8216;<em>Old Souls</em>&#8216;</strong> de <a href="http://open.spotify.com/album/2qvA7HmSg1iM6XMiFF76dp" target="_blank">la banda sonora de <em>Origen</em></a> mientras lees el artículo.</li>
</ol>
</li>
</ol>
<p style="text-align: justify">Lo peor que te puede pasar es que salgas de aquí aprendiendo algo nuevo y, por supuesto, siempre puedes tirarme <em>tomates virtuales</em> en los comentarios del artículo.  ¿Te animas?</p>
<h3 style="text-align: justify">EL MISTERIO DE LAS TRAZAS INEXPLICABLES</h3>
<p style="text-align: justify">Como parte de mi <em>asedio y conquista</em> al entorno de trabajo de <a href="../../../es/storetto.php" target="_blank">STORETTO</a>, comencé a estudiar nuestro sistema de traza y la configuración del mismo. Parecía algo relativamente sencillo (una configuración típica de <a href="http://es.wikipedia.org/wiki/Log4j" target="_blank">log4j</a>) Sin embargo, algo no encajaba. Ni las trazas aparecían por donde debían ni tenían el formato  que queríamos. Nada se parecía ni remotamente a lo  que teníamos configurado.</p>
<p style="text-align: justify">Tampoco entendía por qué el equipo de <strong>STORETTO </strong>había configurado el sistema de <strong>log4j </strong>habitual de la compañía mediante una variable de sistema, en vez de colocar el fichero de configuración en el <em>classpath </em>de la aplicación.</p>
<p style="text-align: justify"><strong>¿Qué estaba pasando? ¿Era todo esto real o era un sueño? ¿Estaba soñando dentro de un sueño? ¿Cómo distinguir la realidad del sueño?</strong></p>
<p style="text-align: justify">Como en <a href="http://sixservix.com/blog/david/2010/08/18/nbsp-en-xhtml/" target="_blank">el anterior caso de las JSPX desestructuradas</a>, yo tenía un poco más de tiempo disponible que el equipo para comprender <strong>qué estábamos haciendo y por qué lo estábamos haciendo</strong>. Lo que averigüé fue SORPRENDENTE.</p>
<h3 style="text-align: justify"><em>FRAMEWORK </em>DE <em>LOGGING </em>DE GLASSFISH</h3>
<p style="text-align: justify">Antes de nada, era importante conocer qué sistema de registro de trazas utiliza <strong>Glassfish </strong>y cómo funciona el mismo.</p>
<p style="text-align: justify">He resumido todo lo que se necesita saber en un par de párrafos:</p>
<p style="text-align: justify"><strong>Glassfish</strong> utiliza para su sistema de trazas la implementación  por defecto de la especificación <a href="http://jcp.org/aboutJava/communityprocess/review/jsr047/">JSR-047</a>, una API de <em>logging</em>, y recomienda el  uso de la misma, aunque permite el uso de otras como <strong>Apache Commons  Logging</strong> o <strong>log4j</strong>.</p>
<p style="text-align: justify">El uso de la API de <em>logging </em>del JDK implica varias cosas a tener en  cuenta:</p>
<ol style="text-align: justify">
<li>Se basa en un sistema de <strong>Handlers</strong>, clases que heredan de <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/logging/Handler.html" target="_blank"><strong>java.util.logging.Handler</strong></a> y que son los que encapsulan tanto la lógica de publicación de trazas  como la configuración de las mismas.</li>
<li>Estableciendo un <em>level</em> o nivel por <strong>Handler</strong> podemos  establecer el nivel mínimo de traza que queremos que recoja el HANDLER.  Estableciendo un nivel determinado se recogerán todas las trazas de ese  nivel y de los niveles superiores jerárquicamente (para conocer más  sobre los nieles de traza, <a title="Niveles de Traza en JDK Logging" href="http://www.lab.dit.upm.es/~lprg/material/apuntes/log/log.htm" target="_blank">pinchar aquí</a>). También se  puede establecer el nivel mínimo de traza <strong>por paquete de clases</strong>,  independientemente del nivel implementado por paquete (se usará la  configuración más restrictiva)</li>
<li>Además del nivel, se puede establecer un control secundario y  opcional sobre lo que se registra o no, mediante la asignación de un  filtro o <strong>Filter</strong> (clase que hereda de <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/logging/Filter.html" target="_blank"><strong>java.util.logging.Filter</strong></a>)  a un Handler. Un Filter, básicamente, <a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.iseries.doc/info/iseriesexp/ae/rtrb_createfilter.html" target="_blank">implementa un método <em>isLoggeable</em></a> que devuelve un booleano que indica si un <em>log </em>se debe trazar o no.</li>
<li>Si se quiere formatear las trazas generadas con alguna estructura  especifica, se debe implementar un <strong>Formatter</strong> (clase que herede <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/logging/Formatter.html" target="_blank"><strong>java.util.logging.Formatter</strong></a>)  y asignarlo al Handler deseado.</li>
<li>Toda esta configuración se hace a través de un fichero denominado <em>logging.properties</em></li>
</ol>
<p style="text-align: justify">La primera diferencia que chocará a todos los que venimos de usar <strong>log4j </strong>es que todo se configura programándolo. Es decir, no tienes una manera de poder configurar de forma flexible el formato de tus trazas. Si quieres un <strong>Formatter</strong> que saque el patrón de tu traza de un fichero de propiedades, vas a tener que programártelo.</p>
<h3 style="text-align: justify">TRABAJANDO CON LOG4J</h3>
<p style="text-align: justify">
<div id="attachment_4192" class="wp-caption alignright" style="width: 298px"><a href="http://sixservix.com/blog/david/files/2010/08/origen-glassfish.jpg"><img class="size-full wp-image-4192  " title="origen-glassfish" src="http://sixservix.com/blog/david/files/2010/08/origen-glassfish.jpg" alt="" width="288" height="411" /></a><p class="wp-caption-text">¿Son mis logs reales o sólo un sueño?</p></div>
<p style="text-align: justify">
<p style="text-align: justify">Para trabajar con <strong>log4j </strong>en <strong>Glassfish v2 </strong><a href="http://www.david-sanmartin.net/2009/11/configuracion-de-log4j-glassfish-para-desarrollo/" target="_blank">se recomendaba</a> configurar la librería  de traza como librería del sistema para evitar problemas con el <em>classloading</em> pero esto ya no puede hacerse con <strong>Glassfish v3</strong> así que <a href="http://nzpcmad.blogspot.com/2009/10/log4j-path-to-properties-file.html" target="_blank">la solución</a> pasa por indicar al servidor la ruta del fichero de configuración de <strong>log4j</strong>.</p>
<p style="text-align: justify">En <strong>log4j </strong>se configuran <em>Appender </em>(el equivalente de los Handler en  JSR-047) El <em>Appender </em>típico que todo el mundo utiliza al desarrollar es el <a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/ConsoleAppender.html" target="_blank"><em>org.apache.log4j.ConsoleAppender</em></a>, que publica los <em>logs</em> en la salida por defecto de <em>System.out</em>.</p>
<p style="text-align: justify">El problema es que las trazas no salen por la <em>consola </em>habitual que esperamos todos los programadores sino en un fichero <em>server.log</em> que se encuentra en la ruta <em>/midominio/logs/</em>.</p>
<p style="text-align: justify">Eso es bastante fácil de explicar porque  <strong>ese fichero es <a href="http://forums.java.net/jive/thread.jspa?threadID=52977" target="_blank">la salida por defecto del servidor</a></strong>, así que, ésa es su <em>consola</em>.</p>
<p style="text-align: justify">Lo que <strong>no tiene ni pies ni cabeza</strong> es que <strong>nuestras trazas salgan con el formato de las trazas de la API de <em>logging </em>de JDK</strong> o, más exactamente, <em>envueltas </em>por su formato, puesto que nuestro traza aparece&#8230; pero sólo como parte del mensaje de la traza de <em>logging </em>del JDK.</p>
<p style="text-align: justify">Bueno&#8230; podemos pensar que, de alguna manera, el sistema está ignorando nuestra configuración de <strong>log4j</strong>. Sin embargo, si configuramos cualquier otro <em>Appender</em>, por ejemplo uno que publique en un fichero <em>inception.log</em>, <strong>log4j </strong>funciona PERFECTAMENTE.</p>
<p style="text-align: justify">¿Entonces? <strong>¿Qué está pasando?</strong> ¿Por qué salen todas mis trazas rodeadas de almohadillas &#8216;#&#8217;  y con un retorno de carro cuando las publico por consola?</p>
<h3 style="text-align: justify">LA SOLUCIÓN AL MISTERIO</h3>
<p style="text-align: justify">No, no estamos soñando. Nuestras trazas son reales y nuestra configuración también. No estamos haciendo nada <em>mal</em>. Simplemente, alguien ha estado jugando con nosotros. Alguien ha estado <em>haciendo trampas</em>.</p>
<p style="text-align: justify"><strong>Glassfish</strong>, utiliza una implementación propia y sobrescrita del objeto <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html" target="_blank">System</a> cuyo método <em>out </em>devuelve un <em>PrintWriter </em>que redirige todas las salidas al sistema de <em>logging</em> del servidor. Probadlo, hacer un <em>System.out.println</em> en una clase desplegada en <strong>Glassfish</strong>. No sólo aparecerá en la salida por defecto -server.log- sino que, además, aparecerá con el formato específico del sistema de <em>logging</em>.</p>
<p style="text-align: justify">Lo más <em>grave </em>de todo esto es que <em>System </em>es una clase final. Es decir, que no puede ser extendida, precisamente para evitar lo que <strong>Glassfish </strong>ha conseguido: que nuestro código tenga un comportamiento extraño y nos desconcierte. <strong>Que nos tengamos que frotar los ojos para comprobar que no estamos soñando</strong>.</p>
<p style="text-align: justify">De acuerdo, <strong>Glassfish </strong>nos ha engañado pero ahora, después de leer este artículo sabemos cómo vencerlo:</p>
<ul style="text-align: justify">
<li><strong>¿Queremos modificar el formato de las trazas del servidor? </strong>Implementaremos nuestro propio <em>Formatter </em>y se lo asignaremos al <em>ConsoleHandler </em>del fichero <em>logging.properties</em></li>
<li><strong>¿Queremos que nuestras propias trazas no se mezclen con las del servidor?</strong> Nos olvidaremos de utilizar el <em>ConsoleAppender</em></li>
<li><strong>¿Queremos que sólo nuestras trazas de error salgan en la salida por defecto del servidor?</strong> Podremos utilizar un <em>ConsoleAppender </em>y configurarlo en nuestro <em>log4j.properties</em> para que sólo registre trazas de nivel ERROR o superiores (recordad que sea cual sea el nivel de traza de<strong> log4j</strong>, la salida se publicará en <em>System.out</em> y el <em>logging </em>de JAVA las publicará por defecto como trazas de nivel INFO)</li>
</ul>
<p style="text-align: justify"><strong>Glassfish </strong>ha luchado contra nosotros y ha perdido, por lo menos a nivel de <em>logging</em>. Nosotros le dominamos. No él, a nosotros. Y, desde luego, <strong>no estamos soñando</strong>&#8230; ¿o sí?</p>
<p style="text-align: justify"><span style="color: #339966"><strong>BONILINKS:</strong></span></p>
<ul>
<li><a href="https://issues.sonatype.org/browse/NEXUS-1307" target="_blank">Gente despotricando sobre el tweaking de System de Glassfish</a></li>
<li><a href="http://forums.terracotta.org/forums/posts/list/1957.page" target="_blank">Gente flipando con el comportamiento de System.out</a></li>
<li><a href="http://www.javadocexamples.com/java_source/com/sun/enterprise/server/logging/UniformLogFormatter.java.html" target="_blank">La fuente del UniformLogFormatter</a> (o el origen del formato de traza infernal de <strong>Glassfish</strong>)</li>
<li><a href="http://wiki.glassfish.java.net/Wiki.jsp?page=FaqConfigureLogging" target="_blank">Información Oficial de Glassfish sobre configuración de <em>logging</em></a>, donde se les olvida comentar lo del <em>asuntillo </em>del <em>System.out</em>&#8230;</li>
<li><a href="http://www.crazysquirrel.com/computing/java/logging.jspx" target="_blank">Información para entender lo básico de la API Java Logging</a></li>
</ul>
<p style="text-align: justify">
<p style="text-align: justify">


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/02/transacciones-y-bloqueos-en-glassfish-v3-con-ejb3-1-y-jpa2-iii/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (III)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (III)</a> <small>Tercera parte del tutorial sobre como utilizar transacciones y bloqueos...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/05/12/transacciones-y-bloqueos-en-glassfish-v3-con-ejb3-1-y-jpa2-ii/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (II)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (II)</a> <small>Segunda parte del tutorial sobre como utilizar transacciones y bloqueos...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/05/10/transacciones-bloqueos-glassfish-v3-ejb31-jpa2/' rel='bookmark' title='Permanent Link: Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (I)'>Transacciones y bloqueos en Glassfish v3 con EJB3.1 y JPA2 (I)</a> <small>Un sencillo tutorial sobre como utilizar transacciones y bloqueos con...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/08/24/logging-glassfish/feed/</wfw:commentRss>
		<slash:comments>364</slash:comments>
		</item>
		<item>
		<title>Usando &#8216;&nbsp;&#8217; en XHTML</title>
		<link>http://sixservix.com/blog/david/2010/08/18/nbsp-en-xhtml/</link>
		<comments>http://sixservix.com/blog/david/2010/08/18/nbsp-en-xhtml/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 04:50:02 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[nbsp]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=3976</guid>
		<description><![CDATA[Todos los que hemos trabajado con páginas y aplicaciones web conocemos la entidad &#38;amp;nbsp; o, al menos, creemos conocerla&#8230; Pero, sorprendentemente, la mayoría de nosotros no sabemos qué es exactamente y eso hace que aparezcan problemas en la transición desde HTML hacia XTHML. ¿Queréis enteraros de qué es eso de &#38;amp;nbsp; en apenas cinco minutos, mientras [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-3978" style="margin-right: 15px;margin-bottom: 15px" title="xhtml" src="http://sixservix.com/blog/david/files/2010/08/xhtml.gif" alt="XHTML, ese lenguaje" width="207" height="207" /></p>
<p style="text-align: justify">Todos los que hemos trabajado con páginas y aplicaciones web conocemos la entidad<strong> </strong><strong>&amp;amp;nbsp;</strong> o, al menos, creemos conocerla&#8230; Pero, sorprendentemente, la mayoría de nosotros no sabemos qué es exactamente y eso hace que aparezcan problemas en<strong> la transición desde HTML hacia XTHML</strong>.</p>
<p style="text-align: justify">¿Queréis enteraros de qué es eso de <strong>&amp;amp;nbsp;</strong><strong> </strong> en apenas cinco minutos, mientras leéis una <strong>apasionante historia de intriga y misterio</strong>? Entonces, no lo dudéis y seguid leyendo&#8230;</p>
<h3 style="text-align: justify">EL MISTERIO DE LA JSPX DESESTRUCTURADA</h3>
<p style="text-align: justify">Hace poco que empecé a sacar algo de tiempo libre para aportar al desarrollo  puro y duro de <a href="http://sixservix.com/es/storetto.php" target="_blank">STORETTO</a>. Al instalar el entorno de trabajo en Eclipse,  casi me caigo de la silla golpeado por un error rojo y horrible que señalaba a una <a href="http://en.wikipedia.org/wiki/Jspx" target="_blank">JSPX</a> traidora y maligna donde, según el IDE, había errores en la estructura del XML, la etiqueta de cerrado &#8216;<strong>&lt;/h:form&gt;</strong>&#8216; no se correspondía con ninguna etiqueta de apertura.</p>
<p style="text-align: justify">Cuando les pregunté a los desarrolladores por qué daba el error, me dijeron que era un error de Eclipse porque <strong>la estructura XML de la página estaba bien, </strong>funcionaba y la famosa etiqueta &#8216;<strong> </strong><strong>&lt;/</strong><strong>h:form</strong><strong>&gt;</strong>&#8216; tenía su correspondiente etiqueta de apertura.</p>
<p style="text-align: justify">¡Tenían razón! Entonces&#8230; ¿Qué estaba ocurriendo? ¿Qué era lo que estaba rompiendo el <em>Chi </em>del <strong>Eclipse</strong>? Era un claro caso para Bonilla Holmes&#8230;</p>
<h3 style="text-align: justify">LO MALO DE UN ECLIPSE, ES QUE NO TE DEJA VER</h3>
<p style="text-align: justify">Cuando oficialmente eres Jefe de Equipo, <em>Project Manager</em> o <em>Code Leader</em>, te puedes permitir ciertas licencias, como pararte a ver porqué algo falla aunque el error no sea crítico, que casi compensa el horrible título con el que definen tu puesto.</p>
<p style="text-align: justify">Así que me enfrenté al error con valentía y decisión. Era evidente que el el Eclipse fallaba a la hora de analizar la estructura de la página, la pregunta era: ¿Por qué?.</p>
<p style="text-align: justify">Al principio pensé que era por un código comentado que incluía la etiqueta en cuestión, pero lo borré y el error seguía. La cosa se ponía difícil, pero, entonces, observé un montón de <em>errorcillos</em> (perdonad por mi léxico, no soy un experto en Eclipse, yo soy más de <a href="http://www.jetbrains.com/idea/" target="_blank">IDEA</a>) provocados por el uso de la extraña combinación de caracteres &#8216;<strong>&amp;amp;amp;nbsp;</strong>&#8216;.</p>
<p style="text-align: justify">¿Para qué diantres estábamos <em>escapando </em>el carácter <strong>&amp;</strong> para, a su vez, <em>escapar</em> el carácter <strong>espacio</strong>? No tenía sentido. Cuando lo cambié a <strong>&amp;amp;nbsp;</strong> sin más, <span style="text-decoration: underline">el error de estructura en Eclipse dejó de aparecer</span>, pero la página daba un error al cargarse. No un error de maquetación, sino en la compilación en servidor.</p>
<p style="text-align: justify">Raro, raro, raro&#8230;</p>
<p style="text-align: justify">Cuando volví a preguntar a los desarrolladores si tenían idea alguna de por qué podía fallar la carga de la página web, me dijeron que no tenían ni idea pero que, por algún motivo, JSF -el <em>framework </em>que utilizamos- no se comía directamente el <strong>&amp;amp;nbsp;</strong> y, por eso, teníamos que escapar el carácter <strong>&amp;</strong> utilizando<strong> </strong><strong>&amp;amp;amp;</strong><strong>.</strong></p>
<h3 style="text-align: justify"><img class="alignright size-full wp-image-4023" style="margin-left: 10px" title="XHTML" src="http://sixservix.com/blog/david/files/2010/08/XHTML.jpg" alt="HTML en estado puro" width="200" height="200" />ELEMENTAL, QUERIDO WATSON</h3>
<p style="text-align: justify">No tenía sentido. Una cosa es que al tocar la página web descoyuntara la maquetación y otra cosa es que  rompiera el código del servidor. No comprendía muy bien qué tenía que ver JSF con los caracteres de escape del código HTML, así que le pedí al tío que más sabe de JSF a este lado del Pecos, <a href="http://sixservix.com/blog/cvivero/" target="_blank">César Vivero</a>, que mirara conmigo las trazas de servidor.</p>
<p style="text-align: justify">No nos hizo falta más de 10 segundos para localizar el error -&#8221;<em>The entity &#8220;nbsp&#8221; was referenced, but not declared.</em>&#8220;- e, inmediatamente, mi mente de <a href="http://www.astracanada.net/2010/04/04/5-mitos-sobre-los-viejos-programadores/" target="_blank">viejo rockero</a> sufrió un espectacular <em>flashback </em>peliculero cuando recordé que había tenido el mismo problema al trabajar con <strong>hojas de estilo XSLT que producían HTML</strong>.</p>
<p style="text-align: justify">Miré a mi compañero y le dije &#8220;<em>Lo tenemos César. Ya sé quién mató a Laura Palmer</em>&#8220;.</p>
<h3 style="text-align: justify">EL HTML NO ES XML, Y XHTML TAMPOCO</h3>
<p style="text-align: justify"><strong>El error en servidor no lo daba el uso de JSF en sí, sino el validador del XML de la página web</strong>. Sí, amigos, porque nuestras páginas son JSPX, lo cual quiere decir que utilizan XML y XHTML como lenguaje de marcas, no HTML&#8230; y ahí estaba el problema.</p>
<p style="text-align: justify"><strong>&amp;amp;nbsp;</strong> es <a href="http://www.sightspecific.com/~mosh/WWW_FAQ/nbsp.html" target="_blank">una entidad</a> <span style="text-decoration: underline">usada para representar el carácter espacio <strong>en HTML</strong>, pero no en XML</span>. Aunque a veces se nos olvide y haya cierta confusión al respecto porque algunas de las entidades, como la utilizada para representar el carácter &#8216;<strong>&amp;</strong>&#8216; -<strong>&amp;</strong><strong>amp;amp;</strong>- sean idénticas, <span style="text-decoration: underline"><strong>l</strong><strong>as entidades de caracteres en XML y HTML no son iguales</strong></span>.</p>
<p style="text-align: justify">Así, lo que está cantando el validador de XML es, traducido al cristiano, &#8220;<em>no sé qué me estás contando, brother</em>&#8220;. Y eso es así porque <strong>&amp;amp;nbsp;</strong><strong> </strong>para XML no es absolutamente NADA. El carácter espacio en XML es <strong>&amp;amp;nbsp;</strong> o, lo que es lo mismo, el carácter 160 de UNICODE.</p>
<p style="text-align: justify">Este <em>error</em> trivial es relativamente normal ya que, muchas veces, los desarrolladores trabajan directamente con una maqueta en HTML proporcionada directamente por un diseñador y la adaptan al lenguaje de plantillas correspondiente para que en java acabe siendo una JSP -con HTML incrustado- o una JSPX con XHTML.</p>
<h3 style="text-align: justify">UNA SOLUCIÓN QUIERO&#8230;</h3>
<p style="text-align: justify">Para poder solucionar este problema tenemos dos posibilidades:</p>
<p style="text-align: justify">1. Utilizar el DOCTYPE al comienzo de nuestra página XHTML para que identifique la entidad <strong>&amp;amp;nbsp;</strong> tal y como se especifica en <a href="http://msdn.microsoft.com/es-es/library/ms256059%28VS.80%29.aspx" target="_blank">este enlace</a>:</p>
<p style="text-align: justify">Por ejemplo, para una página XHTML cuyo nodo raíz es <em>jsp:root</em>, escribiríamos:</p>
<p style="text-align: justify">&lt;!DOCTYPE jsp:root [<br />
&lt;!ENTITY nbsp "<strong>&amp;amp;nbsp;</strong>"&gt;<br />
]&gt;</p>
<p style="text-align: justify">2. Haciendo una sustitución masiva de la entidad <strong>&amp;amp;nbsp; </strong> por la entidad <strong>&amp;amp;#160 </strong>que <span style="text-decoration: underline">sí es una entidad reconocida en XML</span>.</p>
<p style="text-align: justify">Lo que nunca descubrimos fue por qué Eclipse se volvía loco, pero el <em>chi</em> de los programadores ahora descansa tranquilo porque la pestaña de avisos y errores ya no muestra ninguna inquietante aspa roja. El misterio de la JSPX desestructurada había sido resuelto.</p>
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">
<p style="text-align: justify">
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/08/18/nbsp-en-xhtml/feed/</wfw:commentRss>
		<slash:comments>339</slash:comments>
		</item>
	</channel>
</rss>

