<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishtitles.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemtitles.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>ALT.NET Hispano</title>
      <description>Agregador de blogs de la comunidad ALT.NET Hispano</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=bf40112b100bd4e0873c11c15f67c116</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=bf40112b100bd4e0873c11c15f67c116&amp;_render=rss&amp;page=2" />
      <pubDate>Fri, 25 May 2012 15:39:38 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AltNetHispano-Blogs" /><feedburner:info uri="altnethispano-blogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.feedness.com/alta/http://feeds.feedburner.com/AltNetHispano-Blogs" src="http://www.feedness.com/ayuda/wp-content/square_b_sh_feed.gif">Subscribe with Feedness</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/AltNetHispano-Blogs" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FAltNetHispano-Blogs" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:browserFriendly>Blogs de la Comunidad ALT.NET Hispano</feedburner:browserFriendly><item>
         <title>Introducción a Silverlight Webcast</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/hZwf-MTJbeQ/</link>
         <description>Hoy me toco dar una introducción a Silverlight en forma de Webcast. Les dejo el material aquí. Gracias a todos los que participaron! Filed under: Client App Dev, Silverlight, Webcast Tagged: software-development&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=744&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=744</guid>
         <pubDate>Mon, 21 May 2012 17:20:12 +0000</pubDate>
         <content:encoded><![CDATA[<p>Hoy me toco dar una introducción a <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Microsoft_Silverlight">Silverlight</a> en forma de <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Webcast">Webcast</a>.</p>
<p>Les dejo el material <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/IntroSilverlight.zip">aquí</a>.</p>
<p>Gracias a todos los que participaron!</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/client-app-dev/'>Client App Dev</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/silverlight/'>Silverlight</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/webcast/'>Webcast</a> Tagged: <a rel="nofollow" target="_blank" href='http://shockbyte.net/tag/software-development/'>software-development</a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/744/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/744/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=744&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/hZwf-MTJbeQ" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2012/05/21/introduccion-a-silverlight-webcast/</feedburner:origLink></item>
      <item>
         <title>Mi ponencia sobre BDD para Campus Party Colombia 2012</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ontGuNJWquw/</link>
         <description>Me siento muy honrado por haber sido invitado por los organizadores de Campus Party para Colombia, a presentar una ponencia para participar con una charla en la edición de este año de tan importante evento, pueden visitar su página http://www.campus-party.com.co/. El título de mi ponencia es “Eliminando la brecha entre clientes y desarrolladores mediante BDD [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=308</guid>
         <pubDate>Wed, 02 May 2012 11:51:47 +0000</pubDate>
         <content:encoded><![CDATA[<p>Me siento muy honrado por haber sido invitado por los organizadores de Campus Party para Colombia, a presentar una ponencia para participar con una charla en la edición de este año de tan importante evento, pueden visitar su página <a rel="nofollow" target="_blank" href="http://www.campus-party.com.co/">http://www.campus-party.com.co/</a>. El título de mi ponencia es “<a rel="nofollow" target="_blank" href="http://www.csi.campus-party.org/story.php?title=eliminando-la-brecha-entre-clientes-y-desarrolladores-mediante-bdd-para-especificar-e-implementar-mejor-software-1">Eliminando la brecha entre clientes y desarrolladores mediante BDD para especificar e implementar mejor software</a>”, lo cual ya dice mucho, pero a continuación les dejo la descripción de lo qué trataría esta charla, en caso de ser seleccionado finalmente.</p>
<blockquote><p>Muchos, si no la mayoría, de los problemas o fracasos en proyectos de desarrollo de software se debe a que clientes y equipos de implementación de aplicaciones sencillamente no se entienden porque ven el mundo de manera muy distinta, hay una brecha entre ambas partes, dificultando materializar los requerimientos en software que realmente aporta valor para el negocio.</p>
<p>La metodología ágil BDD (<a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">Behavior-Driven Development</a>) tiene precisamente el objetivo de lograr que ambas partes, cliente y equipo de desarrollo, en un proyecto se comuniquen de manera efectiva, ayudando a los primeros a especificar de manera sencilla y clara sus requerimientos, y a los segundos a entregar software que realmente cumple esas expectativas.</p>
<p>Tomando muchas de las buenas prácticas de desarrollo ágil de software y Lean, BDD fomenta y facilita la colaboración entre los miembros de diferentes roles, así como la integración de todas las etapas del proceso de desarrollo de software de tal manera que, aun escribiendo código fuente, nunca se pierda la referencia y conexión con las especificaciones del cliente, asegurando que el producto que se entrega coincide con ellas, es de calidad y, como un <em>beneficio adicional</em>, queda soportado por pruebas automatizadas.</p>
<p>Esta sesión mostrará, tanto a gente de negocios (gerentes de proyectos y analistas de negocios), como a gente técnica (especialistas en QA, arquitectos y desarrolladores de software), como aplicar BDD para obtener todos sus beneficios a la vez que hacen más felices a sus clientes con un proceso más eficiente y mejor producto.</p></blockquote>
<p>Aun no es un hecho que estaré allí como presentador charlando sobre este tema, hay que esperar a que se realice el proceso de selección, pero pueden apoyarme votando por mi ponencia en la siguiente página:</p>
<p><a rel="nofollow" title="http://www.csi.campus-party.org/story.php?title=eliminando-la-brecha-entre-clientes-y-desarrolladores-mediante-bdd-para-especificar-e-implementar-mejor-software-1" target="_blank" href="http://bit.ly/K0mNnq">http://www.csi.campus-party.org/story.php?title=eliminando-la-brecha-entre-clientes-y-desarrolladores-mediante-bdd-para-especificar-e-implementar-mejor-software-1</a></p>
<p>Allí podrán votar presionando el botón con forma de triángulo que señala hacia arriba y aparece encima del número de votos hasta el momento, tal como se señala con la flecha roja en la siguiente imagen. Para esto es necesario estar registrado, de modo que al presionar el botón de votación los conducirá a una página en la que pueden ingresar usuario y contraseña si ya lo tienen o donde podrán encontrar un enlace a la página de registro. De antemano, les doy muchas gracias por su respaldo.</p>
<p><a rel="nofollow" target="_blank" href="http://www.jorgegamba.com/blog/wp-content/uploads/2012/05/como-votar.png"><img class="alignnone size-full wp-image-341" title="como-votar" src="http://www.jorgegamba.com/blog/wp-content/uploads/2012/05/como-votar.png" alt="" width="675" height="130"/></a></p>
<p>&nbsp;</p>
<p><span style="color:#ff0000;"><strong>Actualización:</strong></span></p>
<p>El comentario de alguien no identificado me hace caer en cuenta que el procedimiento anterior es tan solo la primera parte del registro para poder votar una ponencia, pues hasta ahí se queda registrado en el portal de Campus Party pero luego hay que activar el registro para CSI, que es el sitio especializado en manejar las ponencias. Entonces, una vez se ha completado el registro inicial, aparecerá una página que contiene la siguiente imagen, ahí hay que dar clic en el enlace que dice &#8220;Activa tu cuenta en CSI&#8221; (señalado con una flecha roja en la imagen) y en la siguiente página se podra activar. Después de esto se podrá regresar a <a rel="nofollow" target="_blank" href="http://bit.ly/K0mNnq">la página de la ponencia</a> y votar como se indicó antes.</p>
<p><a rel="nofollow" target="_blank" href="http://www.jorgegamba.com/blog/wp-content/uploads/2012/05/registro-csi.png"><img class="alignnone size-full wp-image-342" title="registro-csi" src="http://www.jorgegamba.com/blog/wp-content/uploads/2012/05/registro-csi.png" alt="" width="665" height="481"/></a></p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/QvFisL_iD2Q" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ontGuNJWquw" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/QvFisL_iD2Q/</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 12)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/VG0pluY93aQ/introduccion-jquery-parte-12.html</link>
         <description>&lt;p&gt;En esta ocasión no grabe un screencast, ya que solo voy a reacomodar código en base a lo explicado en los pasados posts. Creo que será más fácil apreciar esos cambios si lo muestro como estaba el código y como fue cambiando. Así pueden ver los detalles sin tener que esperar a que lo escriba.&lt;/p&gt;  &lt;p&gt;En la parte 11 de la serie el archivo tasks.js iba de la siguiente forma:&lt;/p&gt;  &lt;pre style="background:#f6f8ff;color:#000020;"&gt;$&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'input[type=&amp;quot;checkbox&amp;quot;]'&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;done&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;checked &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#595979;"&gt;//    $( &amp;quot;li&amp;quot; ).click( function () {&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#595979;"&gt;//        $( this ).toggleClass( &amp;quot;highlight&amp;quot; );&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#595979;"&gt;//    } );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;li&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt;  &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;highlight&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;a.delete&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; confirm&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'¿Borrar la tarea?'&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;            $li &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;            $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;slideUp&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt; $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;remove&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt; &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;button#add&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt; &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;input#task&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; value &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;val&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $ol &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; templateHtml &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;div.template&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;html&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;                &lt;br /&gt;&lt;br /&gt;        $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;append&lt;span style="color:#308080;"&gt;(&lt;/span&gt; templateHtml&lt;span style="color:#308080;"&gt;.&lt;/span&gt;&lt;span style="color:#200080;font-weight:bold;"&gt;replace&lt;/span&gt;&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;{{task}}&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; value &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Expliqué el uso de “on” en lugar de usar “click” directamente en los eventos, así que lo primero que haré es cambiar los “clicks” por “on” y borrar los comentarios del código.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#f6f8ff;color:#000020;"&gt;$&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'input[type=&amp;quot;checkbox&amp;quot;]'&lt;/span&gt; &lt;span style="color:#308080;"&gt;,&lt;/span&gt;  &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;    &lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;done&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;checked &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;li&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt;  &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;highlight&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;a.delete&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; confirm&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'¿Borrar la tarea?'&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;            $li &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;            $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;slideUp&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt; $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;remove&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt; &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;button#add&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt; &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;input#task&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; value &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;val&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $ol &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; templateHtml &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;div.template&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;html&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;append&lt;span style="color:#308080;"&gt;(&lt;/span&gt; templateHtml&lt;span style="color:#308080;"&gt;.&lt;/span&gt;&lt;span style="color:#200080;font-weight:bold;"&gt;replace&lt;/span&gt;&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;{{task}}&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; value &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Aquí se puede ver que se esta usando varias veces el selector $( “ol” ) lo cual puede guardarse en una variable y no tener que hacer la consulta al DOM cada vez que lo necesitamos.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#f6f8ff;color:#000020;"&gt;$&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $ol &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'input[type=&amp;quot;checkbox&amp;quot;]'&lt;/span&gt; &lt;span style="color:#308080;"&gt;,&lt;/span&gt;  &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;    &lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;done&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;checked &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;li&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt;  &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;highlight&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;a.delete&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; confirm&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'¿Borrar la tarea?'&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;            $li &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;            $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;slideUp&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt; $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;remove&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt; &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;button#add&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt; &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;input#task&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; value &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#007d45;"&gt;input&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;val&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;       &lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; templateHtml &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;div.template&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;html&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;append&lt;span style="color:#308080;"&gt;(&lt;/span&gt; templateHtml&lt;span style="color:#308080;"&gt;.&lt;/span&gt;&lt;span style="color:#200080;font-weight:bold;"&gt;replace&lt;/span&gt;&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;{{task}}&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; value &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Por último voy a dejar de usar funciones anónimas y especificar el ligado de los eventos en un solo lugar. Además guardo en una variable la caja de texto para agregar tareas y así no tener que buscarla cada que se necesite agregar una tarea:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#f6f8ff;color:#000020;"&gt;$&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; $ol &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;ol&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt;&lt;br /&gt;        $newTask &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;input#task&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; checkbox_click &lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;done&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;checked &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt;     &lt;br /&gt;   &lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; hightlight&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;toggleClass&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;highlight&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;br /&gt;    &lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; deleteItem&lt;span style="color:#308080;"&gt;(&lt;/span&gt; event &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;if&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt; confirm&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'¿Borrar la tarea?'&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;&lt;br /&gt;            $li &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;this&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;parent&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;            $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;slideUp&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt; $li&lt;span style="color:#308080;"&gt;.&lt;/span&gt;remove&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt; &lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;        event&lt;span style="color:#308080;"&gt;.&lt;/span&gt;stopPropagation&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color:#200080;font-weight:bold;"&gt;function&lt;/span&gt; addItem &lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#406080;"&gt;{&lt;/span&gt;                &lt;br /&gt;        &lt;span style="color:#200080;font-weight:bold;"&gt;var&lt;/span&gt; templateHtml &lt;span style="color:#308080;"&gt;=&lt;/span&gt; $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;div.template&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;html&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;        $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;append&lt;span style="color:#308080;"&gt;(&lt;/span&gt; templateHtml&lt;span style="color:#308080;"&gt;.&lt;/span&gt;&lt;span style="color:#200080;font-weight:bold;"&gt;replace&lt;/span&gt;&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;{{task}}&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; $newTask&lt;span style="color:#308080;"&gt;.&lt;/span&gt;val&lt;span style="color:#308080;"&gt;(&lt;/span&gt;&lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#406080;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#1060b6;"&gt;'input[type=&amp;quot;checkbox&amp;quot;]'&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; checkbox_click &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;li&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt;  hightlight&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    $ol&lt;span style="color:#308080;"&gt;.&lt;/span&gt;on&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;click&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;a.delete&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#308080;"&gt;,&lt;/span&gt; deleteItem&lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;    $&lt;span style="color:#308080;"&gt;(&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#1060b6;"&gt;button#add&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#308080;"&gt;.&lt;/span&gt;click&lt;span style="color:#308080;"&gt;(&lt;/span&gt; addItem &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#406080;"&gt;}&lt;/span&gt; &lt;span style="color:#308080;"&gt;)&lt;/span&gt;&lt;span style="color:#406080;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Con esto, en mi opinión, el código se ve más claro. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Links Relacionados:&lt;br /&gt;  &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-11.html"&gt;Introducción a jQuery (Parte 11)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Mario H. Cornejo&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-6975157221711518538?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/VG0pluY93aQ" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-6975157221711518538</guid>
         <pubDate>Fri, 27 Apr 2012 16:57:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-12.html</feedburner:origLink></item>
      <item>
         <title>Conferencia sobre estandares: HTML5 y Javacript</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/IjTpfXpzvfU/</link>
         <description>Recientemente estuve en la Universidad Abierta Interamericana en Rosario dando un conferencia sobre Estandares Web Pueden descargar el material de aquí. Gracias a todos los que estuvieron presentes, y al MUG por invitarme al evento! Filed under: ASP.NET, Conferences Tagged: software-development&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=520&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=520</guid>
         <pubDate>Thu, 26 Apr 2012 13:38:25 +0000</pubDate>
         <content:encoded><![CDATA[<p>Recientemente estuve en la Universidad <a rel="nofollow" target="_blank" href="http://www.uai.edu.ar/ingreso/estudiar-en-rosario.asp">Abierta Interamericana en Rosario</a> dando un conferencia sobre <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Web_standards">Estandares Web</a></p>
<p>Pueden descargar el material de <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/HTML5v2.zip">aquí</a>.</p>
<p>Gracias a todos los que estuvieron presentes, y al <a rel="nofollow" target="_blank" href="http://mug.org.ar/">MUG</a> por invitarme al evento!</p>
<p><a rel="nofollow" target="_blank" href="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_1_Large.JPG"><img src="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_1_Small.JPG" alt=""/></a></p>
<p><a rel="nofollow" target="_blank" href="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_2_Large.JPG"><img src="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_2_Small.JPG" alt=""/></a></p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a> Tagged: <a rel="nofollow" target="_blank" href='http://shockbyte.net/tag/software-development/'>software-development</a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/520/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/520/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=520&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/IjTpfXpzvfU" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
         <media:content medium="image" url="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_1_Small.JPG" />
         <media:content medium="image" url="http://weblogs.shockbyte.com.ar/BlogImages/HTML5_2_Small.JPG" />
      <feedburner:origLink>http://shockbyte.net/2012/04/26/conferencia-sobre-estandares-html5-y-javacript/</feedburner:origLink></item>
      <item>
         <title>Videos sobre Windows 8 y HTML5</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/L44e3gsmiew/</link>
         <description>Estoy muy contento por que se han publicado en Channel 9 una serie de el videos sobre desarrollo en Windows8 y HTML5 que hemos filmado con mi amigo Miguel Angel Saez. La serie incluye los siguientes videos: Overview Windows 8 Consumer Preview Diseño estilo Metro Construyendo Metro Style Apps con HMTL y JavaScript Construyendo una [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=518&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=518</guid>
         <pubDate>Thu, 26 Apr 2012 11:18:53 +0000</pubDate>
         <content:encoded><![CDATA[<p>Estoy muy contento por que se han publicado en <a rel="nofollow" target="_blank" href="http://channel9.msdn.com/">Channel 9</a> una serie de el videos sobre desarrollo en <a rel="nofollow" target="_blank" href="http://windows.microsoft.com/es-ES/windows-8/consumer-preview">Windows8</a> y <a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/HTML5">HTML5</a> que hemos filmado con mi amigo <a rel="nofollow" target="_blank" href="http://blogs.msdn.com/b/masaez/">Miguel Angel Saez</a>.</p>
<p>La serie incluye los siguientes videos:</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://windows.microsoft.com/es-ES/windows-8/consumer-preview">Overview Windows 8 Consumer Preview</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series-Diseo-estilo-Metro">Diseño estilo Metro</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series-Construyendo-Metro-Style-Apps-con-HMTL-y-JavaScript">Construyendo Metro Style Apps con HMTL y JavaScript</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series-Construyendo-una-UI-estilo-Metro-en-Windows-8">Construyendo una UI estilo Metro en Windows 8</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series-Integrando-la-experiencia-Windows-8-con-contratos">Integrando la experiencia Windows 8 con contratos</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series--Cmo-y-cundo-corren-las-aplicaciones-estilo-metro">Como y cuando corren las aplicaciones estilo metro.</a></li>
<li><a rel="nofollow" target="_blank" href="http://channel9.msdn.com/posts/HTML5-Series-Tiles-y-notificaciones">Tiles y notificaciones</a></li>
</ul>
<p>Espero que les gusten!</p>
<p><strong>Diseño estilo Metro</strong><br />
<span class='embed-youtube' style='text-align:center;display:block;'></span></p> 
<p><strong>Construyendo una UI estilo Metro en Windows 8</strong><br />
<span class='embed-youtube' style='text-align:center;display:block;'></span></p> 
<p><strong>Construyendo Metro Style Apps con HTML y JavaScript</strong><br />
<div id="v-y6ekKjNC-1" class="video-player" style="width:604px;height:482px;">
<embed id="v-y6ekKjNC-1-video" src="http://s0.videopress.com/player.swf?v=1.03&amp;guid=y6ekKjNC&amp;isDynamicSeeking=true" type="application/x-shockwave-flash" width="604" height="482"></iframe></div>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/client-app-dev/'>Client App Dev</a> Tagged: <a rel="nofollow" target="_blank" href='http://shockbyte.net/tag/software-development/'>software-development</a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/518/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/518/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/518/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=518&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><div><a rel="nofollow" target="_blank" href="http://shockbyte.net/2012/04/26/videos-sobre-windows-8-y-html5/"><img alt="Construyendo Metro Style Apps con HMTL y JavaScript" src="http://videos.videopress.com/y6ekKjNC/html53_high_std.original.jpg" width="160" height="120"/></a></div><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/L44e3gsmiew" height="1" width="1"/>]]></content:encoded>
         <geo:lat>42.696492</geo:lat>
         <geo:long>23.326011</geo:long>
         <media:group>
            <media:content bitrate="1528" duration="1046" fileSize="204580864" height="512" isDefault="true" medium="video" type="video/mp4" url="http://videos.videopress.com/y6ekKjNC/html53_high_dvd.mp4" width="640" />
            <media:content bitrate="796" duration="1046" fileSize="106574848" height="320" isDefault="false" medium="video" type="video/mp4" url="http://videos.videopress.com/y6ekKjNC/html53_high_std.mp4" width="400" />
            <media:rating scheme="urn:mpaa">g</media:rating>
            <media:title type="plain">Construyendo Metro Style Apps con HMTL y JavaScript</media:title>
            <media:thumbnail height="204" url="http://videos.videopress.com/y6ekKjNC/html53_high_std.original.jpg" width="256" />
            <media:player height="320" url="http://s0.videopress.com/player.swf?v=1.03&amp;guid=y6ekKjNC&amp;isDynamicSeeking=true" width="400" />
         </media:group>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
         <enclosure length="204580864" type="video/mp4" url="http://videos.videopress.com/y6ekKjNC/html53_high_dvd.mp4" />
      <feedburner:origLink>http://shockbyte.net/2012/04/26/videos-sobre-windows-8-y-html5/</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 11)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/q_NoZ4VtGlA/introduccion-jquery-parte-11.html</link>
         <description>&lt;p&gt;Esta vez hago uso de una plantilla para agregar nuevas tareas a la lista y empiezo a utilizar el método “on” para ligar eventos.&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-10.html"&gt;Introducción a jQuery (parte 10)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-12.html"&gt;Introducción a jQuery (parte 12)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-8179920127856684545?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/q_NoZ4VtGlA" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-8179920127856684545</guid>
         <pubDate>Mon, 23 Apr 2012 13:51:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-11.html</feedburner:origLink></item>
      <item>
         <title>Iniciando tijuana.js</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/EpXmZ5MBBN8/iniciando-tijuanajs.html</link>
         <description>&lt;p&gt;Recientemente el uso de JavaScript ha cobrado importancia al momento de realizar casi cualquier aplicación web. Ahora hay muchas librerías y/o Frameworks desarrollados en JavaScript y empieza a no ser extraño usarlo fuera del browser. &lt;/p&gt;  &lt;p&gt;En el pasado &lt;a rel="nofollow" target="_blank" href="http://shdhtj.pbworks.com"&gt;Super Happy Dev House Tijuana&lt;/a&gt; se reunieron varios desarrolladores a trabajar en diversos proyectos. Cada uno de estos proyectos estaban desarrollados en diferentes lenguajes/Frameworks (tales como RubyOnRails, PHP, ASP.NET, etcétera). Se contó con la asistencia de varias de las comunidades de la región, como la &lt;a rel="nofollow" target="_blank" href="https://twitter.com/#!/tijuanarb"&gt;comunidad de Ruby Tijuana&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://tjnet.org/"&gt;Tijuana .Net&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://gultij.org/"&gt;Grupo de usuarios GNU/Linux&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://landing.php-tj.org/?lrRef=1zChm"&gt;Comunidad de PHPeros en Tijuana&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://gtug.mx/"&gt;Google Developer Group&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-PkJmoP6omgQ/T5WtktecIWI/AAAAAAAAAcI/0WLe-kol19w/s1600-h/WP_000405%25255B3%25255D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_000405" border="0" alt="WP_000405" src="http://lh3.ggpht.com/-oZMI0qhgrlg/T5WtlG4pBDI/AAAAAAAAAcQ/gw3NXGcclsc/WP_000405_thumb.jpg?imgmax=800" width="244" height="184"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-R0c1A55DXSo/T5WtmDYIEnI/AAAAAAAAAcY/jx9qmwyVw8Q/s1600-h/WP_000407%25255B3%25255D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_000407" border="0" alt="WP_000407" src="http://lh5.ggpht.com/-vBYTmOsirL0/T5WtmfeCJVI/AAAAAAAAAcg/8OsRge-nrC4/WP_000407_thumb.jpg?imgmax=800" width="244" height="184"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-bIs89P_Mhs4/T5WtnS4fd5I/AAAAAAAAAco/hyfQ4RyXiYU/s1600-h/WP_000408%25255B3%25255D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WP_000408" border="0" alt="WP_000408" src="http://lh5.ggpht.com/-2rZoF_GzNiw/T5Wtnn9hsVI/AAAAAAAAAcw/vvW1k8Y7QHE/WP_000408_thumb.jpg?imgmax=800" width="244" height="184"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A pesar de ser desarrolladores de diversas tecnologías algo que tienen estas comunidades en común es JavaScript. De ahí la idea de iniciar un grupo donde podemos reunirnos para hablar de lo que todos los desarrolladores web tenemos en común y que cada vez tiene mayor impacto en el desarrollo de las aplicaciones.&lt;/p&gt;  &lt;p&gt;He publicado el sitio &lt;a rel="nofollow" target="_blank" href="http://tijuanajs.org/"&gt;tijuanajs.org&lt;/a&gt; donde espero sea un punto de encuentro para todas aquellas personas, de la región, que les guste hablar de JavaScript. &lt;/p&gt;  &lt;p&gt;Ingresen al grupo y espero verlos en las reuniones.&lt;/p&gt;  &lt;p&gt;Mario H. Cornejo&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-1401908964864486125?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/EpXmZ5MBBN8" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-1401908964864486125</guid>
         <pubDate>Mon, 23 Apr 2012 12:29:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh3.ggpht.com/-oZMI0qhgrlg/T5WtlG4pBDI/AAAAAAAAAcQ/gw3NXGcclsc/s72-c/WP_000405_thumb.jpg?imgmax=800" width="72" />
      <feedburner:origLink>http://www.developeando.com/2012/04/iniciando-tijuanajs.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 10)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/Pt_YhxyFkLk/introduccion-jquery-parte-10.html</link>
         <description>&lt;p&gt;En esta ocasión muestro el uso de callback en el método slideUp y el evento ready del documento&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-9.html"&gt;Introducción a jQuery (Parte 9)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-11.html"&gt;Introducción a jQuery (Parte 11)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-4833272155093279794?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/Pt_YhxyFkLk" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-4833272155093279794</guid>
         <pubDate>Mon, 16 Apr 2012 13:31:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-10.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 9)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/0Jc5jSA5xKM/introduccion-jquery-parte-9.html</link>
         <description>&lt;p&gt;Decimo video de la serie, esta vez aproveché los 5 min para realizar una pequeña refactorización del código.&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-8.html"&gt;Introducción a jQuery (Parte 8)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-10.html"&gt;Introducción a jQuery (Parte 10)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-6836074836016013041?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/0Jc5jSA5xKM" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-6836074836016013041</guid>
         <pubDate>Thu, 12 Apr 2012 22:02:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-9.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 8)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/AJ7q1So_zSo/introduccion-jquery-parte-8.html</link>
         <description>&lt;p&gt;En esta ocasión muestro una parte de como agregar elementos a la lista&lt;/p&gt;   &lt;p&gt;Link Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-7.html"&gt;Introducción a jQuery (Parte 7)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-9.html"&gt;Introducción a jQuery (Parte 9)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-8567563937429857054?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/AJ7q1So_zSo" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-8567563937429857054</guid>
         <pubDate>Mon, 09 Apr 2012 16:27:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-8.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 7)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/m144ooPTfPQ/introduccion-jquery-parte-7.html</link>
         <description>&lt;p&gt;Octavo video de la serie. Eliminando elementos de la lista&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-6.html"&gt;Introducción a jQuery (Parte 6)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-8.html"&gt;Introducción a jQuery (Parte 8)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-781966192403066841?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/m144ooPTfPQ" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-781966192403066841</guid>
         <pubDate>Thu, 05 Apr 2012 16:19:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-7.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 6)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/i53DObjUFGM/introduccion-jquery-parte-6.html</link>
         <description>&lt;p&gt;Séptimo video de la serie…&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-5.html"&gt;Introducción a jQuery (Parte 5)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-7.html"&gt;Introducción a jQuery (Parte 7)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-3526818964062223441?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/i53DObjUFGM" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-3526818964062223441</guid>
         <pubDate>Wed, 04 Apr 2012 17:18:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-6.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 5)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/XUf36SOLUNo/introduccion-jquery-parte-5.html</link>
         <description>&lt;p&gt;Sexto video de la serie sobre &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-4.html"&gt;Introducción a jQuery (Parte 4)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-6.html"&gt;Introducción a jQuery (Parte 6)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-7996627393162429060?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/XUf36SOLUNo" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-7996627393162429060</guid>
         <pubDate>Tue, 03 Apr 2012 14:08:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-5.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 4)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/6bywb9qae6Y/introduccion-jquery-parte-4.html</link>
         <description>&lt;p&gt;Quinto video de la serie&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-3.html"&gt;Introducción a jQuery (Parte 3&lt;/a&gt;)    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-5.html"&gt;Introducción a jQuery (Parte 5)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-2148778425168357431?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/6bywb9qae6Y" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-2148778425168357431</guid>
         <pubDate>Mon, 02 Apr 2012 12:28:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/04/introduccion-jquery-parte-4.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 3)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/dG1z-DC0PDQ/introduccion-jquery-parte-3.html</link>
         <description>&lt;p&gt;Cuarto Video de la Serie…&lt;/p&gt;   &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-2.html"&gt;Introducción a jQuery Parte 2&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/04/introduccion-jquery-parte-4.html"&gt;Introducción a jQuery Parte 4&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-8581399254485372935?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/dG1z-DC0PDQ" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-8581399254485372935</guid>
         <pubDate>Thu, 29 Mar 2012 16:48:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/03/introduccion-jquery-parte-3.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 2)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/_D7PwM2g36k/introduccion-jquery-parte-2.html</link>
         <description>&lt;p&gt;Tercer video de la serie sobre &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;&lt;/p&gt;   &lt;p&gt;Links relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-1.html"&gt;Introducción a jQuery (Parte 1)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-3.html"&gt;Introducción a jQuery (Parte 3)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-723022081234020374?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/_D7PwM2g36k" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-723022081234020374</guid>
         <pubDate>Wed, 28 Mar 2012 16:14:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/03/introduccion-jquery-parte-2.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 1)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/hFWot-DPSEE/introduccion-jquery-parte-1.html</link>
         <description>&lt;p&gt;Segundo video en la serie de Introducción a &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Links Relacionados:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-0.html"&gt;Introducción a JQuery (Parte 0)&lt;/a&gt;    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-2.html"&gt;Introducción a jQuery (Parte 2)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-2899782830411341401?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/hFWot-DPSEE" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-2899782830411341401</guid>
         <pubDate>Tue, 27 Mar 2012 16:54:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/03/introduccion-jquery-parte-1.html</feedburner:origLink></item>
      <item>
         <title>Introducción a jQuery (Parte 0)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/m6iM_dP-b8w/introduccion-jquery-parte-0.html</link>
         <description>&lt;p&gt;En la pasada reunión de la &lt;a rel="nofollow" target="_blank" href="http://tjnet.org/"&gt;comunidad .Net Tijuana&lt;/a&gt; presenté el tema de &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;, Mostré que es y como usar lo básico de esta librería, aunque faltó tiempo para presentar todo el temario que había preparado. Se grabó la presentación pero al final de la misma nos dimos cuenta que el audio no se grabó así que decidí grabar una serie de screencasts donde muestro el uso de jQuery al realizar una aplicación de ejemplo. Los videos son de 5 minutos o menos. Espero los disfruten.&lt;/p&gt;   &lt;p&gt;Links Relacionados:   &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/03/introduccion-jquery-parte-1.html"&gt;Introducción a jQuery (Parte 1)&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-1451893543237455703?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/m6iM_dP-b8w" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-1451893543237455703</guid>
         <pubDate>Mon, 26 Mar 2012 22:24:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/03/introduccion-jquery-parte-0.html</feedburner:origLink></item>
      <item>
         <title>Run 2012</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/Dkrg0xQRCwo/</link>
         <description>Mañana voy estar presentando en el Run 2012 dos tecnologias muy interesantes: Web API y SignalR. El Run 2012 es el evento técnico mas importante de la comunidad de tecnologías Microsoft en la Argentina. Se pueden registrar aqui. Espero verlos ahi! Filed under: ASP.NET, Conferences&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=522&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=522</guid>
         <pubDate>Thu, 22 Mar 2012 14:00:20 +0000</pubDate>
         <content:encoded><![CDATA[<p>Mañana voy estar presentando en el Run 2012 dos tecnologias muy interesantes: <a rel="nofollow" target="_blank" href="http://www.asp.net/web-api">Web API</a> y <a rel="nofollow" target="_blank" href="https://github.com/SignalR/SignalR">SignalR</a>. El Run 2012 es el evento técnico mas importante de la comunidad de tecnologías Microsoft en la Argentina.</p>
<p>Se pueden registrar <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032508136&amp;Culture=es-AR">aqui</a>.</p>
<p>Espero verlos ahi!</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/522/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/522/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/522/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=522&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/Dkrg0xQRCwo" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2012/03/22/run-2012/</feedburner:origLink></item>
      <item>
         <title>Material de ultimas conferencias</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/TZUestoRN9M/</link>
         <description>Lo prometido es deuda y aqui pueden encontrar el material de mis ultimas charlas: La primera en el Manage IT Online sobre arquitectura y estandares tomand como ejemplo HTML5 y JavaScript. La segunda, junto a mi compaño Mariano Sanchez, en el MUG sobre Extensibilidad en ASP.NET MVC. Pueden descargar el material de aquí y aquí. Gracias a todos los que [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=524&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=524</guid>
         <pubDate>Sun, 04 Mar 2012 15:49:21 +0000</pubDate>
         <content:encoded><![CDATA[<p>Lo prometido es deuda y aqui pueden encontrar el material de mis ultimas charlas:</p>
<ul>
<li>La primera en el Manage IT Online sobre arquitectura y estandares tomand como ejemplo <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/HTML5">HTML5</a> y <a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/JavaScript">JavaScript</a>.</li>
<li>La segunda, junto a mi compa<span style="font-family:Helvetica;">ño <a rel="nofollow" target="_blank" href="http://weblogs.asp.net/marianos/">Mariano Sanchez</a>,</span> en el <a rel="nofollow" target="_blank" href="http://www.mug.org.ar">MUG</a> sobre Extensibilidad en <a rel="nofollow" target="_blank" href="http://www.asp.net/mvc">ASP.NET MVC</a>.</li>
</ul>
<p>Pueden descargar el material de <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/ManageITOnline2011.zip">aquí</a> y <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/ASP_NET_MVC_Extensibilidad.zip">aquí</a>.</p>
<p>Gracias a todos los que estuvieron presentes!</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/524/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/524/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/524/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=524&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/TZUestoRN9M" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2012/03/04/material-de-ultimas-conferencias/</feedburner:origLink></item>
      <item>
         <title>Iniciando con QUnit</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/GLi7DV7-vSg/iniciando-con-qunit.html</link>
         <description>&lt;p&gt;Hace poco escribí un &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/01/iniciando-con-jquery.html"&gt;post&lt;/a&gt; sobre como iniciar con &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;. En esta ocasión quiero mostrar como hacer el mismo ejemplo; pero escribiendo las pruebas unitarias primero (a la TDD) utilizando &lt;a rel="nofollow" target="_blank" href="http://qunitjs.com/"&gt;QUnit&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Lo primero que debo hacer es crear un archivo HTML con la plantilla que esta en el sitio de &lt;a rel="nofollow" target="_blank" href="http://qunitjs.com/"&gt;QUnit&lt;/a&gt; con unos cuantos cambios…. cambié la ubicación de la hoja de estilos,&amp;#160; agregue las ubicaciones de los scripts de jQuery, QUnit y agregué un div con id “main” que es donde escribiré el HTML necesario para las pruebas. El archivo me quedo así:&lt;/p&gt;  &lt;pre style="background:#fafafa;color:#000000;"&gt;&lt;span style="color:#000084;"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;html&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;head&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;meta&lt;/span&gt; charset=&lt;span style="color:#0000ff;"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt; &lt;span style="color:#7f0055;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;title&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;QUnit Tests&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;title&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;link&lt;/span&gt; rel=&lt;span style="color:#0000ff;"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; href=&lt;span style="color:#0000ff;"&gt;&amp;quot;http://code.jquery.com/qunit/qunit-git.css&amp;quot;&lt;/span&gt; &lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script src=&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script src=&amp;quot;http://code.jquery.com/qunit/qunit-git.js&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;head&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;body&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;h1&lt;/span&gt; id=&lt;span style="color:#0000ff;"&gt;&amp;quot;qunit-header&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;QUnit Hello World&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;h1&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;h2&lt;/span&gt; id=&lt;span style="color:#0000ff;"&gt;&amp;quot;qunit-banner&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;h2&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;ol&lt;/span&gt; id=&lt;span style="color:#0000ff;"&gt;&amp;quot;qunit-tests&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;ol&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;div&lt;/span&gt; id=&lt;span style="color:#0000ff;"&gt;&amp;quot;main&amp;quot;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;div&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;        &lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#000084;font-weight:bold;"&gt;test&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;hello&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color:#000084;font-weight:bold;"&gt;function&lt;/span&gt;() {&lt;br /&gt;                ok(&lt;span style="color:#000084;font-weight:bold;"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;world&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;            });&lt;br /&gt;        &lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;body&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#7f0055;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;html&lt;/span&gt;&lt;span style="color:#7f0055;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En esta plantilla viene escrito una prueba de ejemplo llamada “hello”. Voy a modificar esa función para especificar lo que quiero probar. Para escribir la prueba voy a aplicar el estilo AAA (Arrange, Act, Assert). Primero (Arrange) especifico las precondiciones para que pueda correr la prueba, en este caso sería escribir el HTML necesario y ligar el evento clic del botón a mi función. En la segunda parte (Act) escribo el nuevo comentario en la caja de texto y disparo el evento en el botón. En la tercera parte (Assert) verifico que se haya agregado un comentario, es decir que la lista tenga un elemento con el contenido esperado. La prueba queda de la siguiente manera:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#fafafa;color:#000000;"&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;test&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;when click 'add' then a comment should be added to the list&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color:#000084;font-weight:bold;"&gt;function&lt;/span&gt;(){&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#808080;"&gt;//Arrange - Agrego el HTML necesario y ligo el evento click del botón&lt;/span&gt;&lt;br /&gt;    $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#main&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).append(&lt;span style="color:#0000ff;"&gt;'&amp;lt;ul id=&amp;quot;comments&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;'&lt;/span&gt;&lt;br /&gt;        + &lt;span style="color:#0000ff;"&gt;'&amp;lt;input id=&amp;quot;comment&amp;quot; type=&amp;quot;text&amp;quot; /&amp;gt;'&lt;/span&gt;&lt;br /&gt;        + &lt;span style="color:#0000ff;"&gt;'&amp;lt;button id=&amp;quot;add&amp;quot;&amp;gt;Add&amp;lt;/button&amp;gt;'&lt;/span&gt;);            &lt;br /&gt;    $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#add&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).click(addComment);&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color:#808080;"&gt;//Act – Escribo el nuevo comentario y hago clic en el botón&lt;/span&gt;&lt;br /&gt;    $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#comment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).val(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;comment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;);                        &lt;br /&gt;    $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#add&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).click();&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color:#808080;"&gt;//Assert – Verifico que el nuevo comentario este en la lista     &lt;/span&gt;&lt;br /&gt;    equals($(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#comments&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).html(), &lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;li&amp;gt;comment&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Una vez que tenemos la prueba, lo que sigue es correrla y verificar que falle para después escribir el código necesario para hacerla pasar. Para correr la prueba lo único que necesito es guardar el archivo (en este caso lo llamé test.html) y abrirlo con un navegador. Al abrir el archivo en el navegador este me muestra el error.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-HOL8hjj-bBg/TzC7coqaV9I/AAAAAAAAAZI/K74dP76lmqQ/s1600-h/error14.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="error1" border="0" alt="error1" src="http://lh4.ggpht.com/-taSuKcm5Lo4/TzC7ddoal_I/AAAAAAAAAZQ/BI6ZjZeM9Y8/error1_thumb2.png?imgmax=800" width="452" height="266"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;El error dice que no se encontró la función “addComment” que es la función que se va a ejecutar cuando se haga clic en el botón. Para definir mi función voy a crear un nuevo archivo al cual llamaré comments.js y agregar la referencia a el desde el archivo test.html. En este archivo (comments.js) es donde definiré la función addComment (por ahora haré la función global espero después escribir sobre como simular namespaces y definir funciones “privadas” en JavaScript). A continuación muestro el contenido de mi archivo comments.js&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#fafafa;color:#000000;"&gt;&lt;span style="color:#000084;font-weight:bold;"&gt;function&lt;/span&gt; addComment(){    &lt;br /&gt;  &lt;span style="color:#000084;font-weight:bold;"&gt;var&lt;/span&gt; newCommentTextBox = $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#comment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  &lt;span style="color:#000084;font-weight:bold;"&gt;var&lt;/span&gt; commentText = newCommentTextBox.val();&lt;br /&gt;  $(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#comments&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;).append(&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt; + commentText + &lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  newCommentTextBox.val(&lt;span style="color:#0000ff;"&gt;''&lt;/span&gt;);    &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Como puede verse es lo mismo que en &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2012/01/iniciando-con-jquery.html"&gt;el post anterior&lt;/a&gt; solo que ahora esta en su propio archivo js. Agrego la referencia en el archivo test.html &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background:#fafafa;color:#000000;"&gt;&amp;lt;script src=&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;comments.js&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;y vuelvo a correr las pruebas (actualizando la página en el navegador). Veo que la prueba pasa. &lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-8OQEjnQn25c/TzC7dqJ728I/AAAAAAAAAZY/bIadC0WAKM8/s1600-h/pass%25255B6%25255D.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="pass" border="0" alt="pass" src="http://lh6.ggpht.com/-PpAOOTt2yEU/TzC7eGJtnHI/AAAAAAAAAZg/B7oTyZXhG7w/pass_thumb%25255B4%25255D.png?imgmax=800" width="444" height="147"/&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ahora puedo tener confianza para hacer modificaciones sin preocuparme de que eche a perder funcionalidad. Además de que el código JavaScript quedó en su propio archivo (comments.js) separado del HTML.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-6871550355261186668?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/GLi7DV7-vSg" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-6871550355261186668</guid>
         <pubDate>Mon, 06 Feb 2012 21:49:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/-taSuKcm5Lo4/TzC7ddoal_I/AAAAAAAAAZQ/BI6ZjZeM9Y8/s72-c/error1_thumb2.png?imgmax=800" width="72" />
      <feedburner:origLink>http://www.developeando.com/2012/02/iniciando-con-qunit.html</feedburner:origLink></item>
      <item>
         <title>Dev3Cast sobre NancyFx</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/CZyiLtTThBU/dev3cast-sobre-nancyfx.html</link>
         <description>&lt;p&gt;El pasado 16 de enero &lt;a rel="nofollow" target="_blank" href="http://msmvps.com/blogs/gflores/"&gt;Gabriel Flores&lt;/a&gt; y yo platicamos con &lt;a rel="nofollow" target="_blank" href="http://twitter.com/majimenezp"&gt;Miguel Ángel Jiménez&lt;/a&gt; sobre el web framework &lt;a rel="nofollow" target="_blank" href="http://nancyfx.org/"&gt;Nancy&lt;/a&gt;. Miguel nos platicó de que se trata y a grandes rasgos como es que se usa. Además hablamos un poco sobre el open source en la plataforma .Net&lt;/p&gt;  &lt;p&gt;Pueden &lt;a rel="nofollow" target="_blank" href="http://www.dev3cast.com/2012/01/16/nancyfx/"&gt;escuchar la platica&lt;/a&gt; y unirse a ella comentando en el &lt;a rel="nofollow" target="_blank" href="http://www.dev3cast.com/2012/01/16/nancyfx/"&gt;post del dev3cast&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-969529571039009553?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/CZyiLtTThBU" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-969529571039009553</guid>
         <pubDate>Thu, 02 Feb 2012 16:39:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/02/dev3cast-sobre-nancyfx.html</feedburner:origLink></item>
      <item>
         <title>Dev3Cast sobre MongoDB y Redis</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/9A9Xa60nFmQ/dev3cast-sobre-mongodb-y-redis.html</link>
         <description>&lt;p&gt;El pasado 2 de diciembre se publicó un &lt;a rel="nofollow" target="_blank" href="http://www.dev3cast.com/2011/12/02/mongodb-y-redis/"&gt;episodio del dev3cast&lt;/a&gt; podcast donde participé junto con &lt;a rel="nofollow" target="_blank" href="http://twitter.com/ebersys"&gt;Eber&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://twitter.com/sarellano"&gt;Samuel&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://twitter.com/gabo"&gt;Gabriel&lt;/a&gt;. En esta ocasión hablamos sobre &lt;a rel="nofollow" target="_blank" href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt;, &lt;a rel="nofollow" target="_blank" href="http://redis.io/"&gt;redis&lt;/a&gt; y como usar en proyectos de software estas tecnologías &lt;a rel="nofollow" target="_blank" href="http://nosql-database.org/"&gt;NoSQL&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-5951517840376375106?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/9A9Xa60nFmQ" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-5951517840376375106</guid>
         <pubDate>Thu, 02 Feb 2012 16:28:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/02/dev3cast-sobre-mongodb-y-redis.html</feedburner:origLink></item>
      <item>
         <title>Capsela, el juego que cambió mi vida</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/Aohl-KD7O4Y/capsela-el-juego-que-cambio-mi-vida</link>
         <description>&lt;p&gt;En 1995 mis padres realizaron un viaje a Estados Unidos y como regalo me trajeron un juego bastante peculiar llamado Capsela. Solo mirando hacia atras puedo darme cuenta del impacto que tuvo este juego en mi vida y es por eso que hoy decidí escribir un artículo en forma de tributo.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-01.png" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;Poca información he encontrado en internet acerca de este juego en estos días. Sobre su origen podría decir que fue diseñado y fabricado en principio por "Mitsubishi Pencil Co" en la decada de 1980, luego se le dió la licencia a una empresa llamada "Play Jour" y desde ese momento fue fabricado por VTech, Kidology y algunas otras subsidiarias.&lt;/p&gt;

&lt;h1&gt;¿En qué consiste el juego?&lt;/h1&gt;

&lt;p&gt;El juego consiste en interconectar cápsulas, con diferentes propósitos mecánicos o eléctricos, para crear diferentes tipos de "modelos". Estos modelos son en su mayoría vehículos tanto para el agua como para la tierra, aunque también es posible construir grúas, robots, bombas de agua e incluso una aspiradora de polvillo. Si bien el manual del juego trae una basta colección de gráficos con cada uno de los modelos que se pueden crear, mucho mas interesante es dejar volar la imaginación y armar lo que nos plazca, una "grúa aspiradora de polvillo con forma de oruga"? suena interesante.&lt;/p&gt;

&lt;p&gt;Todo modelo parte desde una cápsula fundamental que contiene un motor y dos terminales en donde se "conectan" los cables de alimentación desde las pilas (que a su vez se colocan dentro de otra cápsula) o desde una llave que además es inversora pilas-llave-motor.&lt;/p&gt;

&lt;p&gt;Las cápsulas mecánicas son preciosas, con sus engranajes adentro forman algunos de los componentes más comunes que existen en las cosas mecánicas que nos rodean. La explicación en el manual es algo imperdible también, por ejemplo estas tres:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-02.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;Lamentablemente, el manual que tengo en este momento esta en tres idiomas Alemán, Italiano e Islandés, y ninguno es mi fuerte. Pero voy a hacer mi mejor esfuerzo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cápsula motor: El motor incorporado es alimentado de la pila externa. Sí usted desea cambiar el sentido de la rotación del motor, invierta la posición del cable de la batería. Sí usted desea usar la caja del interruptor, colocar los cables como se indica en el diseño. Estar bien atento de no mojar el motor, corre el riesgo de dañarlo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula de reducción de velocidad a estado multiple: Esta cápsula reduce la velocidad del eje, y al mismo tiempo aumenta el momento de torsión o la fuerza de rotación. Para un buen funcionamiento del motor, el mismo debe ser conectado al eje de entrada. Si por error es colocado al eje de salída, el motor no se moverá. Para saber cual es el eje de entrada, hágalo rotar con el dedo. El eje de entrada es el que rota fácilmente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula de cambio de la marcha: Esta cápsula combina la función del cambio de la velocidad con la cápsula de la rueda y diente en una sola unidad. De este modo se puede reducir la velocidad del eje y cambiar la dirección de la fuerza motriz directamente en angúlo recto.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-03.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cápsula engranaje planetario: esta cápsula permite cambiar el sentido de la fuerza motríz en angúlo recto (90°). Sí usted instala un eje a la rueda dentada el comando puede ser transmitido en tres sentidos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula engranaje interno: esta cápsula cambia la velocidad del eje sin cambiar el sentido del comando.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula del interruptor rotante: cuando el eje gira, el interruptor es colocado alternativamente en posición abierta y cerrada. El diseño muestra como debe colocar la lámpara con la pila.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula de fricción: esta cápsula fue concebida para conectar o desconectar el comando del motor. Los dos engranajes pueden ser desconectados mediante el dispositivo de dos puntos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cápsula de transmisión: esta cápsula puede ser conectada a cualquier otra capsula con el objetivo de extender la acción del cambion de la marcha sin cambiar el engranaje de la fuerza motríz.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Luego vienen un monton de partes que pueden ser conectadas a dichas cápsulas, algunas de ellas se pueden ver en esta imágen:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-06.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;Para unir cada cápsula se utiliza una pieza de forma octogonal como se indica en esta figura:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-04.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;Otra perla del manual es este gráfico:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-05.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;Que en mi opinión sintetiza muchisimos años de la historia de la mecánica.&lt;/p&gt;

&lt;h1&gt;Lo que se pueden armar&lt;/h1&gt;

&lt;p&gt;Con las partes antes mencionadas se puede armar este tipo de cosas:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-07.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-08.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-09.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-10.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-10.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://joseoncodecom.ipage.com/wp-content/uploads/images/capsela-11.jpg" alt="2011-12-09_0050.png"/&gt;&lt;/p&gt;

&lt;p&gt;El manual de instrucciones trae muchos ejemplos más pero no es mi intención aburrir.&lt;/p&gt;

&lt;h1&gt;Comercial de televisión&lt;/h1&gt;

&lt;p&gt;También encontré esta otra perlita, un comercial de TV de los años 80' supongo.&lt;/p&gt;

 


&lt;p&gt;En este video se puede ver incluso un control remoto que yo nunca tuve. Como así también leí en &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Capsela"&gt;wikipedia&lt;/a&gt; que se fabricó un modelo que tenía una interfaz para conectar a Commodore 64, un antecesor Lego Mindstorms.&lt;/p&gt;

&lt;h1&gt;¿Cómo me afecto este juego?&lt;/h1&gt;

&lt;p&gt;Por empezar no estudie ingeniería mecánica. Sin embargo me abrió la cabeza, la "libertad" de poder inventar juguetes. Aprendí que por ejemplo, con ciertos componentes podía transformar la energía del motor, la relación entre la velocidad y la fuerza, etc.&lt;/p&gt;

&lt;p&gt;Despertó en mí un deseo e interés por la ingeniería. Visto hacia atrás, encuentro muchas similitudes entre mi trabajo actual como desarrollador de software y este juego. De hecho cualquier ingeniería se asemeja; "aquí están tus herramientas y estos son los bloques que puedes utilizar, ahora construye lo que quieras! el único límite es tu imaginación!!". Tal vez ahora no se aplica "lo que quieras", mas bien lo que otro quiera. Pero como a muchos de los mejores profesionales con los que he trabajado les sucede, nuestro trabajo se convierte en nuestro hobby y es ahí cuando dejamos volar nuestra imaginación de nuevo, al igual que el José de 10 años sentado en su habitación, pensando que inventar.&lt;/p&gt;

&lt;p&gt;Mi mamá guardó todas las partes del juego a pesar de que yo las ignoré por mucho tiempo, y hace dos años ya, encontré una persona en mercadolibre que vendía el suyo. A pesar de que era una versión que traía menos partes que el que ya tenía y de que había sido usado, estaba en excelentes condiciones. Ahora tengo 2 Capsela, y a veces armamos cosas muy alocadas con mi hija Valentina (6 años).&lt;/p&gt;

&lt;p&gt;Para terminar este artículo, me gustaría felicitar a las personas que diseñaron este jueguete, moriría de felicidad si alguno de ellos leyera esto, y agradecer a mis padres, Gines y Franca, por haberlo comprado en Toys"R"Us en 1995.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JoseFRomaniello/~4/n15JtQq2SbY" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/Aohl-KD7O4Y" height="1" width="1"/&gt;</description>
         <author>jfromaniello@gmail.com (José F. Romaniello)</author>
         <guid isPermaLink="false">http://joseoncode.com/2012/01/31/capsela-el-juego-que-cambio-mi-vida</guid>
         <pubDate>Tue, 31 Jan 2012 22:46:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/JoseFRomaniello/~3/n15JtQq2SbY/capsela-el-juego-que-cambio-mi-vida</feedburner:origLink></item>
      <item>
         <title>Iniciando con jQuery</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/X77TsOBw3dU/iniciando-con-jquery.html</link>
         <description>&lt;p&gt;He estado pensando en escribir alguno que otro post sobre JavaScript. No digo que vaya a empezar una serie ni mucho menos (luego las dejo a medias) pero si escribir algunos post. Así que iniciamos por el principio. Lo básico de &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;El ejemplo será una lista de comentarios a la cual le quisiéramos ir agregando elementos a la lista. Tenemos el siguiente HTML:&lt;/p&gt; &lt;pre style="background:#ffffff;color:#000000;"&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;html&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;head&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;title&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;Comentarios&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;title&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;    &lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;head&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;body&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;ul&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#074726;"&gt;id&lt;/span&gt;&lt;span style="color:#808030;"&gt;=&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;comments&amp;quot;&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;li&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;Comentario &lt;span style="color:#008c00;"&gt;1&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;li&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;li&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;Comentario &lt;span style="color:#008c00;"&gt;2&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;li&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;ul&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;        &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;input&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#074726;"&gt;id&lt;/span&gt;&lt;span style="color:#808030;"&gt;=&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;comment&amp;quot;&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#074726;"&gt;type&lt;/span&gt;&lt;span style="color:#808030;"&gt;=&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#a65700;"&gt;/&amp;gt;&lt;/span&gt; &lt;br /&gt;        &lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;button&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#074726;"&gt;id&lt;/span&gt;&lt;span style="color:#808030;"&gt;=&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;add&amp;quot;&lt;/span&gt;&lt;span style="color:#274796;"&gt; &lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;Agregar&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;button&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;         &lt;br /&gt;    &lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;body&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;html&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;La intención es que cuando el usuario haga clic en el botón “Agregar” se agregue lo escrito en la caja de texto a la lista de comentarios.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Lo primero que debemos hacer es agregar la referencia al código de &lt;a rel="nofollow" target="_blank" href="http://jquery.com/"&gt;jQuery&lt;/a&gt;. Podemos usar una copia local o hacer uso de alguna red de distribución de contenidos (&lt;a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/Red_de_entrega_de_contenidos"&gt;CDN&lt;/a&gt;).&lt;/p&gt;&lt;br /&gt;&lt;pre style="background:#ffffff;color:#000000;"&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#5f5035;"&gt;script&lt;/span&gt; &lt;span style="color:#274796;"&gt;src&lt;/span&gt;&lt;span style="color:#808030;"&gt;=&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#5f5035;"&gt;script&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;con esto ya podemos hacer uso de jQuery. Así que agregamos un bloque de script a nuestra página para agregar la funcionalidad que requerimos.&lt;/p&gt;&lt;br /&gt;&lt;pre style="background:#ffffff;color:#000000;"&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    $&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt; &lt;span style="color:#800080;"&gt;{&lt;/span&gt;&lt;br /&gt;        $&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;#add&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#808030;"&gt;.&lt;/span&gt;click&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;function&lt;/span&gt; &lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt; &lt;span style="color:#800080;"&gt;{&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#800000;font-weight:bold;"&gt;var&lt;/span&gt; newCommentTextBox &lt;span style="color:#808030;"&gt;=&lt;/span&gt; $&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;#comment&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#800000;font-weight:bold;"&gt;var&lt;/span&gt; commentText &lt;span style="color:#808030;"&gt;=&lt;/span&gt; newCommentTextBox&lt;span style="color:#808030;"&gt;.&lt;/span&gt;val&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;            $&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;#comments&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#808030;"&gt;.&lt;/span&gt;append&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:#808030;"&gt;+&lt;/span&gt; commentText &lt;span style="color:#808030;"&gt;+&lt;/span&gt; &lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;            newCommentTextBox&lt;span style="color:#808030;"&gt;.&lt;/span&gt;val&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;''&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color:#800080;"&gt;}&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#800080;"&gt;}&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#a65700;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;font-weight:bold;"&gt;script&lt;/span&gt;&lt;span style="color:#a65700;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Lo primero que hacemos es pasar como parámetro a la función “$” de jQuery una función que queremos que se ejecute al cargarse la página. Dentro de esta función tenemos la línea &lt;em&gt;$(“#add”).click(function () {&lt;/em&gt; que lo que hace es primero buscar al elemento con &lt;em&gt;id=“add”&lt;/em&gt;&amp;#160; (en este caso el botón) después llamar el método &lt;em&gt;click&lt;/em&gt; y pasarle la función que queremos ejecutar cuando se haga un clic en el elemento.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Dentro de la función buscamos el elemento id=“comment” (que es la caja de texto) y obtenemos su contenido con la función &lt;em&gt;val()&lt;/em&gt;. Después agregamos un elemento más a la lista de comentarios (id=&amp;quot;comments&amp;quot;) con el texto que obtuvimos de la caja de texto. Por último limpiamos la caja de texto con &lt;em&gt;newCommentTextBox&lt;span style="color:#808030;"&gt;.&lt;/span&gt;val&lt;span style="color:#808030;"&gt;(&lt;/span&gt;&lt;span style="color:#0000e6;"&gt;''&lt;/span&gt;&lt;span style="color:#808030;"&gt;)&lt;/span&gt;&lt;span style="color:#800080;"&gt;;&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Espero que este post sirva para que quienes aun no se animan a entrarle a JavaScript vean lo fácil que es, empiecen a perderle el miedo y aprovechen las ventajas que tiene. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-1676178876305732523?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/X77TsOBw3dU" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-1676178876305732523</guid>
         <pubDate>Fri, 27 Jan 2012 09:10:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/01/iniciando-con-jquery.html</feedburner:origLink></item>
      <item>
         <title>Probando sin mocking framework</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/I1ZgM_ZApDI/probando-sin-mocking-framework.html</link>
         <description>&lt;p&gt;Al estar trabajando en un proyecto sobre ASP.NET MVC pequeño. Pensé que sería mas fácil animar a escribir pruebas, a personas que no están acostumbradas, si al escribirlas no necesitaran usar librerías externas. Como son los mocking frameworks y las librerías para las aserciones. Así que decidí escribir las pruebas unitarias usando solo las herramientas que me brinda Visual Studio. Eso significa usar msTest y escribir implementaciones falsas de las dependencias de los sistemas bajo prueba.&lt;/p&gt;  &lt;p&gt;Llegué a pensar que eso significaría escribir mucho más código ya que tendría que proporcionar varías implementaciones que un mocking framework me ahorraría. Sin embargo he notado que la cantidad de código no es mucho más. Ya que con las mocking frameworks necesitaba hacer más setups dentro del test. Es claro que tiene sus ventajas y desventajas.&lt;/p&gt;  &lt;p&gt;Noté que para un programador, que no esta acostumbrado a escribir pruebas unitarias, es fácil entender qué es lo que pasa cuando usamos una implementación falsa donde puede ver el código. A la vez es fácil que escriba sus implementaciones que solo le sirven para pruebas. En ocasiones cuando trataba de explicar TDD (a gente que no esta acostumbrada) usando un mocking framework, u otra librería, notaba que varios se perdían un poco tratando de entender el código de setups de moq o de NSubstitute. Con implementaciones falsas escritas por ellos mismos (o que pueden ver lo que pasa) es más fácil concentrarse en (y encontrarle más sentido a) la prueba.&lt;/p&gt;  &lt;p&gt;El método de prueba puede centrarse en los efectos secundarios del sistema bajo prueba, en lugar de la implementación. Es decir no pruebas que realice llamadas a ciertos métodos de las dependencias sino que tenga los efectos secundarios que se espera.&lt;/p&gt;  &lt;p&gt;Una de las desventajas es que se necesita escribir la implementación falsa para que la prueba pueda correr y eso hace que pierda un poco el flujo de lo que se esta probando. Al tener que abrir otro archivo y escribir algo de código. Además que terminas con más código que mantener.&lt;/p&gt;  &lt;p&gt;Otra es que a pesar de tener una implementación falsa que se puede compartir. De cualquier forma se necesita algo de código en la prueba para cumplir con las precondiciones que la prueba requiere y terminas con la implementación falsa además de código de setup. Otra vez más código que quizás el mocking framework me hubiera ahorrado.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-4190396402295385539?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/I1ZgM_ZApDI" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-4190396402295385539</guid>
         <pubDate>Tue, 24 Jan 2012 17:08:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2012/01/probando-sin-mocking-framework.html</feedburner:origLink></item>
      <item>
         <title>¿Seguir usando Delphi?</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/V2hWE4PQOJs/seguir-usando-delphi.html</link>
         <description>&lt;p&gt;Aun mantengo y agrego nueva funcionalidad a una aplicación que desarrollé hace algunos años usando Delphi. Específicamente con &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2006/08/vuelven-los-turbo.html"&gt;Turbo Delphi&lt;/a&gt;, basado en la versión 2006 del entonces conocido como &lt;a rel="nofollow" target="_blank" href="http://delphi.wikia.com/wiki/Borland_Developer_Studio_2006"&gt;Borland Developer Studio&lt;/a&gt;. En realidad no se trata de una sola aplicación sino de una familia de aplicaciones para la administración de un negocio de venta al menudeo y medio mayoreo.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-z33_ogewXPI/TxC8uHV0bII/AAAAAAAAAYw/avZHKhBPqsg/s1600-h/producto13.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="producto" border="0" alt="producto" src="http://lh5.ggpht.com/-z_PKjB250S4/TxC8uqaO-HI/AAAAAAAAAY4/PQlgSGTLgkg/producto_thumb11.png?imgmax=800" width="324" height="254"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Sigo agregando nuevas características, conforme las necesidades de la empresa, lo cual no es muy seguido. Cada vez que tengo que agregar alguna funcionalidad me pregunto ¿Debería migrar el código fuente a alguna otra tecnología?&lt;/p&gt;  &lt;h3&gt;¿Por qué cambiar?&lt;/h3&gt;  &lt;p&gt;Bueno si funciona ¿Para que cambiar? es la otra pregunta que me hago inmediatamente después de pensar en migrar. Las razones son:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Mi forma personal de programar ha cambiado&lt;/strong&gt;: al usar Delphi debo regresar a usar objetos como datasets, escribir SQL a mano (Sin &lt;a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/Mapeo_objeto-relacional"&gt;ORM’s&lt;/a&gt;), mucho arrastrar y soltar para después modificar propiedades en el object inspector. Cuando lo que quisiera hacer es utilizar características de lenguajes y frameworks nuevos. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Documentación&lt;/strong&gt;: Ya que no es una tecnología que use todos los días, cada vez que regreso a algún proyecto y necesito agregar algo de código o modificar alguna propiedad necesito buscar documentación para saber cual es la manera Delphi de hacerlo. No quiero escribir mucho código para algo que con cambiar alguna propiedad o arrastrar un componente hubiera bastado. No es mucha la documentación que se encuentra y la mayoría de esta es vieja o trata las nuevas características que aun salen para Delphi. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Precio&lt;/strong&gt;: Otra razón para no migrar a una &lt;a rel="nofollow" target="_blank" href="http://www.embarcadero.com/products/delphi"&gt;versión más reciente de Delphi&lt;/a&gt; (ahora parte de Embarcadero) es el precio de la licencia. Es más cara que una licencia de VisualStudio y siento que con VS puedo hacer más cosas que solo escribir aplicaciones de escritorio. Además de que las puedo desarrollar de una manera “moderna”. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;La tecnología puede llegar a ser obsoleta&lt;/strong&gt;: Al seguir desarrollando en la versión actual corro el riesgo de no encontrar soporte, alguien que pueda ayudarme, cuando necesite realizar algo que no este soportado en la tecnología actual. Como puede ser la integración con sistemas más “modernos”. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;¿Por qué seguir en Delphi?&lt;/h3&gt;  &lt;p&gt;Aun con las desventajas que tiene el mantener la aplicación en una tecnología “vieja” creo que tiene ciertas ventajas mantener el código donde esta:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;La aplicación funciona&lt;/strong&gt;:Esta es la principal razón por la que sigo usando Delphi para esos proyectos. Aun no se ha presentado problemas graves por estar usando esa tecnología. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Tiempo de desarrollo&lt;/strong&gt;: Es más rápido agregar características a las aplicaciones usando la tecnología actual que reescribir todo en alguna tecnología “nueva”. Además el código no esta mal/feo es relativamente fácil de seguir o de modificar para después agregar nueva funcionalidad. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Costo-Beneficio&lt;/strong&gt;: Al final todo se reduce al costo beneficio. No estoy convencido que el costo que implica reescribir toda (o gran parte) de la aplicación tenga un beneficio que valga la pena el gasto. Si bien es posible que en un futuro sea más fácil seguir usando una tecnología moderna; por el momento no ha causado un problema seguir desarrollando en Delphi. Solo alguno que otro enojo (como programador) por no poder usar lambdas o cosas así. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Conclusión&lt;/h3&gt;  &lt;p&gt;Al no poder justificar completamente el gasto creo que seguiré desarrollando (por el momento) las aplicaciones principales en Delphi mientras me sea posible. Quizás haga proyectos pequeños, relacionados, usando alguna otra tecnología (como .Net) para ir migrando poco a poco. Pero sin descuidar que el desarrollo principal en estos proyectos es en Delphi. Aun sigo considerando también comprar la versión más reciente de Delphi aunque es lo menos probable.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-4335496457976037494?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/V2hWE4PQOJs" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-4335496457976037494</guid>
         <pubDate>Fri, 13 Jan 2012 15:22:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/-z_PKjB250S4/TxC8uqaO-HI/AAAAAAAAAY4/PQlgSGTLgkg/s72-c/producto_thumb11.png?imgmax=800" width="72" />
      <feedburner:origLink>http://www.developeando.com/2012/01/seguir-usando-delphi.html</feedburner:origLink></item>
      <item>
         <title>Software en español</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/UxMORaqjoyg/software-en-espanol.html</link>
         <description>Aunque uso principalmente solo software en inglés, seguido tengo la tentación de usar software en español. Tanto en el sistema operativo como en las herramientas de desarrollo y de base de datos.&lt;br /&gt;Esto me pasa más cuando se trata de software administrativo, de entretenimiento o aplicaciones donde necesito escribir en español. En esos casos creo que sí tiene sentido usar aplicaciones e incluso el sistema operativo en español. Porque lo que realizo es en español y el programa (al estar en el mismo lenguaje) puede ofrecerme ayuda adicional. Por ejemplo prevenir faltas de ortografía, de gramática, etc.&lt;br /&gt;El problema viene al tratar de usar herramientas de desarrollo que no están en ingles, ya que &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2011/06/el-ingles-es-parte-de-las-mejores.html"&gt;el desarrollo debe ser en inglés&lt;/a&gt; y si la herramienta de desarrollo esta en español es una desventaja. Tanto en los mensajes de error como en la terminología utilizada. Puede ser difícil encontrar información sobre términos técnicos en español o por lo menos encontrar información reciente.&lt;br /&gt;Hace tiempo instalé la versión en español de &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-web-developer-express"&gt;visual web developer&lt;/a&gt; y se sentía raro usarlo, algunos mensajes arrojados por las excepciones no me eran familiares por estar en español. Pero fue algo divertido y quizás lo vuelva a intentar pero siento que podría haber problemas de compatibilidad con el resto del equipo.&lt;br /&gt;¿Es común usar software completamente en español? Por lo menos en frontera no lo he visto así; pero me gustaría saber como sería la experiencia. Quizás el próximo año me anime a hacer el experimento e instale todo en español para saber que se siente. Aunque presiento que no será posible tener las versiones más recientes.&lt;br /&gt;Post relacionado: &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/2011/12/teclado-en-espanol-latinoamerica.html"&gt;Teclado en Español Latinoamérica&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-3516616211690168923?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/UxMORaqjoyg" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-3516616211690168923</guid>
         <pubDate>Thu, 29 Dec 2011 22:13:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2011/12/software-en-espanol.html</feedburner:origLink></item>
      <item>
         <title>Usando varios atributos en C#</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/C65fFH--O7c/usando-varios-atributos-en-c.html</link>
         <description>Al trabajar en proyectos sobre ASP.NET MVC, al crear los modelos he estado usando &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/es-es/library/system.componentmodel.dataannotations.aspx"&gt;Data Annotations&lt;/a&gt; las cuales consisten en agregar atributos a las propiedades de tu modelo para indicar algo de meta datos que pueden ser usados por la vista. Además de que al usar &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx"&gt;entity framework code first&lt;/a&gt; he necesitado en alguna ocasión usar atributos, aunque últimamente he optado por configurar eso en el mapping del DbContext. También en lo controladores hay necesidad de escribir algunos atributos para los &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/es-mx/library/gg416513(v=VS.98).aspx"&gt;Action Filters&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;He visto que la forma más común para agregar más de un atributo a una clase, propiedad o método es escribiendo uno abajo del otro. Con lo que al declarar una propiedad que tiene&amp;nbsp;varios meta-datos se termine con varias líneas de código. O al definir una acción en un controlador donde necesitas que se ejecuten varios &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/es-mx/library/gg416513(v=VS.98).aspx"&gt;action filters&lt;/a&gt; termines con varias líneas en la declaración del método, lo cual (en mi opinión) se ve igual que si se ejecutan las llamadas de los filtros dentro de los métodos.&lt;br /&gt;&lt;pre class="csharpcode"&gt;[&lt;span style="color:#6fa8dc;"&gt;Required&lt;/span&gt;]&lt;br /&gt;[&lt;span style="color:#6fa8dc;"&gt;DataType&lt;/span&gt;(&lt;span style="color:#76a5af;"&gt;DataType&lt;/span&gt;.Password)]&lt;br /&gt;[&lt;span style="color:#6fa8dc;"&gt;Display&lt;/span&gt;(Name = &lt;span class="str" style="color:#990000;"&gt;"Current password"&lt;/span&gt;)]&lt;br /&gt;&lt;span class="kwrd" style="color:blue;"&gt;public&lt;/span&gt; &lt;span class="kwrd" style="color:blue;"&gt;string&lt;/span&gt; OldPassword { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;br /&gt;En mi caso me ha gustado más el escribir los atributos uno a un lado del otro separados por coma dentro del mismo par de corchetes. Esto hace que sean menos líneas la declaración de un método, propiedad, etc. Y lo principal es que (para mi) se ve más claro. Es decir no es por ahorrarme líneas, las líneas son gratis, sino para quitar ruido en el código.&lt;br /&gt;&lt;pre class="csharpcode"&gt;[&lt;span style="color:#6fa8dc;"&gt;Required&lt;/span&gt;, &lt;span style="color:#6fa8dc;"&gt;DataType&lt;/span&gt;(&lt;span style="color:#6fa8dc;"&gt;DataType&lt;/span&gt;.Password), &lt;span style="color:#6fa8dc;"&gt;Display&lt;/span&gt;(Name = &lt;span class="str" style="color:#990000;"&gt;"Current password"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color:blue;"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;&lt;/span&gt; OldPassword { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;br /&gt;Como todo es cuestión de gustos y si todo el equipo decide usar uno abajo del otro me tendré que alinear; pero por lo pronto prefiero escribir uno después del otro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-7589838166815389157?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/C65fFH--O7c" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-7589838166815389157</guid>
         <pubDate>Fri, 23 Dec 2011 10:40:00 +0000</pubDate>
      <feedburner:origLink>http://www.developeando.com/2011/12/usando-varios-atributos-en-c.html</feedburner:origLink></item>
      <item>
         <title>CoffeeCamp: El año en revisión</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/lz2AVq5tpLU/coffeecamp-el-ano-en-revision.html</link>
         <description>La &lt;a rel="nofollow" target="_blank" href="http://tjnet.org/"&gt;comunidad .Net de Tijuana&lt;/a&gt; organiza un CoffeeCamp el próximo Sábado 17 de diciembre de 2011 en el café &lt;span&gt;&lt;span class="Event_BriefDescription"&gt;Starbucks que esta frente a las torres. El tema es "El Año En Revisión". La idea es reunirnos y platicar de software mientras nos tomamos café (u otra cosa). En la &lt;a rel="nofollow" target="_blank" href="http://tjnet.org/Eventos/2046.aspx"&gt;página del evento&lt;/a&gt; pueden encontrar más información.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear:both;text-align:center;"&gt;&lt;a rel="nofollow" target="_blank" href="http://1.bp.blogspot.com/-w1cyaGGU79k/TuqVIuemqII/AAAAAAAAAYQ/L6Gu1c6tf8A/s1600/100_8282.jpg" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-w1cyaGGU79k/TuqVIuemqII/AAAAAAAAAYQ/L6Gu1c6tf8A/s320/100_8282.jpg" width="320"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear:both;text-align:center;"&gt;&lt;a rel="nofollow" target="_blank" href="http://1.bp.blogspot.com/-qDTA3_Ei1WU/TuqVKAa5kbI/AAAAAAAAAYY/v0SRCd0LwnU/s1600/100_8283.jpg" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-qDTA3_Ei1WU/TuqVKAa5kbI/AAAAAAAAAYY/v0SRCd0LwnU/s320/100_8283.jpg" width="240"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear:both;text-align:center;"&gt;&lt;a rel="nofollow" target="_blank" href="http://1.bp.blogspot.com/-N3EPGySCquI/TuqVqTnz9BI/AAAAAAAAAYg/K44sKS8Pvq8/s1600/100_8273.jpg" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-N3EPGySCquI/TuqVqTnz9BI/AAAAAAAAAYg/K44sKS8Pvq8/s320/100_8273.jpg" width="320"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="Event_BriefDescription"&gt;Si eres desarrollador y estas en Tijuana el Sábado 17/12/11, esperamos verte por ahí.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23470706-3954640437528307473?l=www.developeando.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/lz2AVq5tpLU" height="1" width="1"/&gt;</description>
         <author>Mario Cornejo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-23470706.post-3954640437528307473</guid>
         <pubDate>Thu, 15 Dec 2011 16:50:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-w1cyaGGU79k/TuqVIuemqII/AAAAAAAAAYQ/L6Gu1c6tf8A/s72-c/100_8282.jpg" width="72" />
      <feedburner:origLink>http://www.developeando.com/2011/12/coffeecamp-el-ano-en-revision.html</feedburner:origLink></item>
      <item>
         <title>Proxima VAN, HTML5 para los no iniciados y curiosos</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/XOQfNZ68ACw/</link>
         <description>Este sabado 17 de diciembre tendre el placer de compartir con la comunidad de Alt.Net Hispano el codiciado tema “HTML5 para los no iniciados”, si, eso que esta sonando por todos lados acerca de HTML5, que tan raro es? como se come? me curara la caries? Tantas preguntas, tanto&amp;#160;material. HTML5 es muchisimo mas que un [...]</description>
         <guid isPermaLink="false">http://cprieto.com/2011/12/13/proxima-van-html5-para-los-no-iniciados/</guid>
         <pubDate>Tue, 13 Dec 2011 12:28:34 +0000</pubDate>
         <content:encoded><![CDATA[<p>Este sabado 17 de diciembre tendre el placer de compartir con la comunidad de <a rel="nofollow" target="_blank" href="http://altnethispano.org/Inicio.aspx">Alt.Net Hispano</a> el codiciado tema “HTML5 para los no iniciados”, si, eso que esta sonando por todos lados acerca de HTML5, que tan raro es? como se come? me curara la caries? Tantas preguntas, tanto&nbsp;material.</p>
<p>HTML5 es muchisimo mas que un estandar, mucho mas que un simple buzz, va bastante mas alla de un simple lenguaje de markup. Tratare de explicar HTML5 desde el punto de vista de un desarrollador web, especialmente que implica para un developer de&nbsp;ASP.NET.</p>
<p>El evento pueden encontrarlo en el <a rel="nofollow" target="_blank" href="http://bit.ly/vZx2xk">link de Google Calendar</a>, no olviden hacer la transformacion en su huso&nbsp;horario.</p>
<img src="http://feeds.feedburner.com/~r/IdisposableThoughts/~4/NnZJ_GaEYs4" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/XOQfNZ68ACw" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/IdisposableThoughts/~3/NnZJ_GaEYs4/</feedburner:origLink></item>
      <item>
         <title>Ultimas Conferencias: HTML5 y Silverlight</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/LEKAKKkfANQ/</link>
         <description>Las últimas semanas di 2 presentaciones sobre desarrollo Web: La primera en la Universidad Nacional de La Matanza sobre HTML5. La segunda en el MUG sobre desarrollo en Silverlight. Pueden descargar el material de aquí y aquí. Gracias a todos los que estuvieron presentes! Filed under: ASP.NET, Client App Dev, Conferences&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=526&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=526</guid>
         <pubDate>Thu, 01 Dec 2011 13:03:09 +0000</pubDate>
         <content:encoded><![CDATA[<p>Las últimas semanas di 2 presentaciones sobre desarrollo Web:</p>
<ul>
<li>La primera en la <a rel="nofollow" target="_blank" href="http://www.unlam.edu.ar/">Universidad Nacional de La Matanza</a> sobre <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/HTML5">HTML5</a>.</li>
<li>La segunda en el <a rel="nofollow" target="_blank" href="http://www.mug.org.ar">MUG</a> sobre desarrollo en <a rel="nofollow" target="_blank" href="http://www.silverlight.net/">Silverlight</a>.</li>
</ul>
<p>Pueden descargar el material de <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/HTML5.zip">aquí</a> y <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/CursoSilverlight.zip">aquí</a>.</p>
<p>Gracias a todos los que estuvieron presentes!</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/client-app-dev/'>Client App Dev</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/526/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/526/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=526&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/LEKAKKkfANQ" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2011/12/01/ultimas-conferencias-html5-y-silverlight/</feedburner:origLink></item>
      <item>
         <title>Code Camp 2011</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/U7NF70fAH8o/</link>
         <description>La semana pasada se realizó la edición 2011 del Code Camp. Como todos los años fui speaker, aunque en esta oportunidad me toco hablar sobre un tema que creo nunca estuvo presente en ningún Code Camp: C++. Con este lenguaje está programado casi toda la tecnología que usamos diariamente, y con la llegada de Windows [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=528&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=528</guid>
         <pubDate>Tue, 25 Oct 2011 14:47:48 +0000</pubDate>
         <content:encoded><![CDATA[<p>La semana pasada se realizó la edición 2011 del <a rel="nofollow" target="_blank" href="http://www.codecamp.com.ar">Code Camp</a>. Como todos los años fui speaker, aunque en esta oportunidad me toco hablar sobre un tema que creo nunca estuvo presente en ningún Code Camp: <a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/C%2B%2B">C++</a>. Con este lenguaje está programado casi toda la tecnología que usamos diariamente, y con la llegada de <a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/Windows_8">Windows 8</a> y <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Windows_Runtime">WinRT</a> tendrá especial preponderancia en los próximos años.</p>
<p>Me sorprendió la cantidad de gente que asistió a la charla y el interés que despertó, luego de la charla recibí muchas consultas y preguntas.</p>
<p>Pueden descargar el material desde <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/CodeCampCPP.zip">aquí</a>.</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/528/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/528/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/528/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=528&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/U7NF70fAH8o" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
         <category>Conferences</category>
      <feedburner:origLink>http://shockbyte.net/2011/10/25/code-camp-2011/</feedburner:origLink></item>
      <item>
         <title>Invitación a Webcast MSDN: “Prueba de automatización en todas partes”</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/2u-9_Fbk1MI/</link>
         <description>El jueves 21 de Julio de 2011 a las 10:00 a.m. de Bogotá (Colombia) estaré presentando vía web, con Live Meeting, durante una hora, el tema “Prueba de automatización en todas partes” y como el nombre lo indica, estará principalmente centrado en pruebas, automatizadas, por supuesto. Ahí trataremos diversos tipos de pruebas que contribuyen a [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=296</guid>
         <pubDate>Tue, 19 Jul 2011 23:50:11 +0000</pubDate>
         <content:encoded><![CDATA[<p><img src="https://mseventsww.microsoft.com/BannerImages/e4389585-adfc-43b5-9c54-3a66c5046794.jpg" alt=""/></p>
<p>El jueves 21 de Julio de 2011 a las 10:00 a.m. de Bogotá (Colombia) estaré presentando vía web, con Live Meeting, durante una hora, el tema “<a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032487227">Prueba de automatización en todas partes</a>” y como el nombre lo indica, estará principalmente centrado en <em>pruebas</em>, automatizadas, por supuesto. Ahí trataremos diversos tipos de pruebas que contribuyen a soportar el desarrollo de aplicaciones “mantenibles”.</p>
<p>Para demostrar las aplicaciones implementaré durante la sesión una aplicación web en Visual Studio 2010 con ASP.NET MVC 3, aunque el webcast no se centra ni en este framework ni en otra herramienta de software, sino más bien en algunas técnicas, que otros especialistas y yo hemos encontrado útiles en este ámbito de pruebas, que quisiera compartir con quienes asistan al evento.</p>
<p>Quienes me conocen saben de lo importante que considero el seguir un proceso ágil de desarrollo de software, así que pueden esperar que en este evento use algunos elementos de este estilo, específicamente <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">Behavior-Driven Development</a>.</p>
<p>Para asistir al evento es necesario que se registren usando el siguiente enlace:</p>
<p><a rel="nofollow" title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032487227" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032487227">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032487227</a></p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/gWckAQo_xog" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/2u-9_Fbk1MI" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/gWckAQo_xog/</feedburner:origLink></item>
      <item>
         <title>Podcast sobre “Behavior-Driven Development” (BDD) en dev3cast</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/SoeuXjuVIOs/</link>
         <description>El sábado 16 de Julio de 2011 estuvimos grabando con la gente de dev3cast una sesión muy amena en la que discutimos sobre algunas inquietudes relacionas sobre qué es y cómo aplicar BDD, la grabación quedó publicada en la página Behavior Driven Development, que por supuesto, los invito a visitar para que escuchen desde allí [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/archive/2011/07/17/podcast-sobre-behavior-driven-development-bdd-en-dev3cast/</guid>
         <pubDate>Sun, 17 Jul 2011 13:06:40 +0000</pubDate>
         <content:encoded><![CDATA[<p>El sábado 16 de Julio de 2011 estuvimos grabando con la gente de <a rel="nofollow" target="_blank" href="http://www.dev3cast.com/">dev3cast</a> una sesión muy amena en la que discutimos sobre algunas inquietudes relacionas sobre qué es y cómo aplicar <a rel="nofollow" target="_blank" href="http://blog.dannorth.net/introducing-bdd/">BDD</a>, la grabación quedó publicada en la página <a rel="nofollow" target="_blank" href="http://www.dev3cast.com/2011/07/16/behavior-driven-development/">Behavior Driven Development</a>, que por supuesto, los invito a visitar para que escuchen desde allí algunas de mis opiniones al respecto del tema y por qué lo considero tan valioso.</p>
<p>Como siempre, muchas se escapan y el tiempo no alcanza para abarcar varios asuntos interesantes, es por ello que trataré de publicar en este blog una serie de artículos detallando más esta interesante metodología ágil.</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/fN7iX93XOMY" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/SoeuXjuVIOs" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/fN7iX93XOMY/</feedburner:origLink></item>
      <item>
         <title>Webcast sobre API’s Web</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/inG9IFcAHmA/</link>
         <description>Hoy junto a Zaiden vamos a estar dando un Webcast sobre API&amp;#8217;s Web. Se pueden registrar aquí Los esperamos!!! Filed under: .NET, ASP.NET, Webcast&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=532&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=532</guid>
         <pubDate>Tue, 12 Jul 2011 13:26:02 +0000</pubDate>
         <content:encoded><![CDATA[<p>Hoy junto a <a rel="nofollow" target="_blank" href="http://zpod.com.ar">Zaiden</a> vamos a estar dando un Webcast sobre API&#8217;s Web.</p>
<p>Se pueden registrar <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032484572&amp;Culture=es-AR">aquí</a></p>
<p>Los esperamos!!!</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/net/'>.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/webcast/'>Webcast</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/532/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/532/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/532/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=532&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/inG9IFcAHmA" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2011/07/12/spanish-webcast-sobre-apis-web/</feedburner:origLink></item>
      <item>
         <title>ASP.NET MVC y AJAX en Channel 9</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/Y5YnmGeCLhU/</link>
         <description>Se ha publicado en Channel 9 el video de la charla sobre ASP.NET MVC y AJAX que estuvimos dando con Z en todo el pais. Para el que se la perdio la puede ver aquí! Filed under: .NET, ASP.NET&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=534&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=534</guid>
         <pubDate>Tue, 12 Jul 2011 13:23:07 +0000</pubDate>
         <content:encoded><![CDATA[<p>Se ha publicado en <a rel="nofollow" target="_blank" href="http://channel9.msdn.com/">Channel 9</a> el video de la charla sobre <a rel="nofollow" target="_blank" href="http://www.asp.net/mvc">ASP.NET MVC</a> y <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/AJAX">AJAX</a> que estuvimos dando con <a rel="nofollow" target="_blank" href="http://zpod.com.ar">Z</a> en todo el pais.</p>
<p>Para el que se la perdio la puede ver <a rel="nofollow" target="_blank" href="http://channel9.msdn.com/Shows/Web+Camps+TV/Run-Webcamp-Buenos-Aires-Aspnet-MVC-y-Ajax">aquí</a>!</p>
<div id="v-OMpY2LSR-1" class="video-player" style="width:604px;height:332px;">
<embed id="v-OMpY2LSR-1-video" src="http://s0.videopress.com/player.swf?v=1.03&amp;guid=OMpY2LSR&amp;isDynamicSeeking=true" type="application/x-shockwave-flash" width="604" height="332"></iframe></div>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/net/'>.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/534/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/534/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/534/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=534&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><div><a rel="nofollow" target="_blank" href="http://shockbyte.net/2011/07/12/asp-dotnet-mvc-y-ajax-en-channel-9/"><img alt="Run WebCamp Buenos Aires &#8211; ASP.NET MVC y Ajax" src="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_std.original.jpg" width="160" height="120"/></a></div><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/Y5YnmGeCLhU" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:group>
            <media:content bitrate="1528" duration="2434" fileSize="476051456" height="352" isDefault="true" medium="video" type="video/mp4" url="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_dvd.mp4" width="640" />
            <media:content bitrate="796" duration="2434" fileSize="247995392" height="220" isDefault="false" medium="video" type="video/mp4" url="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_std.mp4" width="400" />
            <media:content bitrate="796" duration="2434" fileSize="247995392" height="220" isDefault="false" medium="video" type="video/ogg" url="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_fmt1.ogv" width="400" />
            <media:rating scheme="urn:mpaa">g</media:rating>
            <media:title type="plain">Run WebCamp Buenos Aires – ASP.NET MVC y Ajax</media:title>
            <media:thumbnail height="141" url="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_std.original.jpg" width="256" />
            <media:player height="220" url="http://s0.videopress.com/player.swf?v=1.03&amp;guid=OMpY2LSR&amp;isDynamicSeeking=true" width="400" />
         </media:group>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
         <enclosure length="476051456" type="video/mp4" url="http://videos.videopress.com/OMpY2LSR/runwebcampbaajax_high_ch9_dvd.mp4" />
      <feedburner:origLink>http://shockbyte.net/2011/07/12/asp-dotnet-mvc-y-ajax-en-channel-9/</feedburner:origLink></item>
      <item>
         <title>RUN Web Camp 2011 Tour</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/TBzCEXS6lag/</link>
         <description>La semana anterior junto a Zaiden estuvimos en la UTN Rosario en el marco del Run Web Campus dando una charla sobre desarrollo de aplicaciones Web con ASP.NET MVC y AJAX. La misma charla la vamos a repetir en la UTN Santa Fe el día 8 de Junio, y en la ULP el día 10 de [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=536&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=536</guid>
         <pubDate>Mon, 06 Jun 2011 19:45:18 +0000</pubDate>
         <content:encoded><![CDATA[<p>La semana anterior junto a <a rel="nofollow" target="_blank" href="http://www.zpod.com.ar">Zaiden</a> estuvimos en la <a rel="nofollow" target="_blank" href="http://www.frro.utn.edu.ar/">UTN Rosario</a> en el marco del <a rel="nofollow" target="_blank" href="http://www.microsoft.com.ar/run">Run Web Campus</a> dando una charla sobre desarrollo de aplicaciones Web con <a rel="nofollow" target="_blank" href="http://www.asp.net/mvc">ASP.NET MVC</a> y <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/AJAX">AJAX</a>.</p>
<p>La misma charla la vamos a repetir en la <a rel="nofollow" target="_blank" href="http://www.frsf.utn.edu.ar/">UTN Santa Fe</a> el día 8 de Junio, y en la <a rel="nofollow" target="_blank" href="http://www.ulp.edu.ar/">ULP</a> el día 10 de Junio.</p>
<p>Pueden descargar el material desde <a rel="nofollow" target="_blank" href="http://prototypes.shockbyte.com.ar/misc/Web_Camp_2011.zip">aquí</a>.</p>
<p>Gracias todos los que vinieron a Rosario, y los esperamos en Santa Fe y San Luis!.</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/net/'>.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/asp-net/'>ASP.NET</a>, <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/conferences/'>Conferences</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/536/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/536/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=536&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/TBzCEXS6lag" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
      <feedburner:origLink>http://shockbyte.net/2011/06/06/run-web-camp-2011-tour/</feedburner:origLink></item>
      <item>
         <title>ALM y TFS 2010</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/bSoYWh9MVWM/</link>
         <description>Gabriel Jara López ha escrito un excelente artículo sobre ALM con TFS 2010. Se los recomiendo. Lo pueden leer aquí. Filed under: Visual Studio&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&amp;#038;blog=35489323&amp;#038;post=538&amp;#038;subd=shockbyte&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">http://shockbyte.net/?p=538</guid>
         <pubDate>Mon, 11 Apr 2011 16:03:30 +0000</pubDate>
         <content:encoded><![CDATA[<p>Gabriel Jara López ha escrito un excelente artículo sobre ALM con TFS 2010.</p>
<p>Se los recomiendo. Lo pueden leer <a rel="nofollow" target="_blank" href="http://centrodeestudiantesmicrosoft.wordpress.com/2011/03/23/introduccion-a-la-gestion-del-ciclo-de-vida-de-las-aplicaciones-y-tfs-2010-alm/">aquí</a>.</p>
<br />Filed under: <a rel="nofollow" target="_blank" href='http://shockbyte.net/category/visual-studio/'>Visual Studio</a>  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/shockbyte.wordpress.com/538/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/shockbyte.wordpress.com/538/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/shockbyte.wordpress.com/538/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=shockbyte.net&#038;blog=35489323&#038;post=538&#038;subd=shockbyte&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/bSoYWh9MVWM" height="1" width="1"/>]]></content:encoded>
         <geo:lat>0.000000</geo:lat>
         <geo:long>0.000000</geo:long>
         <media:content medium="image" url="http://1.gravatar.com/avatar/f4b11145494d520bd1ec443075b11b4e?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">rfinochi</media:title>
         </media:content>
         <category>Visual Studio</category>
      <feedburner:origLink>http://shockbyte.net/2011/04/11/alm-y-tfs-2010/</feedburner:origLink></item>
      <item>
         <title>Run WebCamp 2011 en Buenos Aires</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/jYnHEvZcTFI/run-webcamp-2011-en-buenos-aires.html</link>
         <description>&lt;p&gt;&lt;img style="float:left;" title="RunWebCamp.png" src="http://lh3.ggpht.com/_UL5xJ4XsSh8/TX_pkfdO-1I/AAAAAAAABCE/yxWD4THuK0o/RunWebCamp.png?imgmax=800" border="0" alt="Run WebCamp" width="164" height="189"/&gt;&lt;/p&gt;
&lt;p&gt;Hoy participé en el &lt;a rel="nofollow" target="_blank" href="http://www.codeandbeyond.org/2011/02/run-web-camp-en-buenos-aires.html"&gt;Run WebCamp&lt;/a&gt; organizado por Microsoft de Argentina, en el barrio de Palermo, Buenos Aires.&lt;/p&gt;
&lt;p&gt;&lt;img style="float:right;" title="DaniLaco.png" src="http://lh4.ggpht.com/_UL5xJ4XsSh8/TX_pjooy1rI/AAAAAAAABCA/p1i-oN8l8Sg/DaniLaco.png?imgmax=800" border="0" alt="Dani Laco" width="78" height="100"/&gt;&lt;/p&gt;
&lt;p&gt;Dentro de esta conferencia dedicada a desarrollo web en la plataforma Microsoft, me tocó presentar Entity Framework junto a mi viejo amigo &lt;a rel="nofollow" target="_blank" href="https://mvp.support.microsoft.com/profile/Laco"&gt;Daniel Laco&lt;/a&gt;, con quien a pesar de los años que llevamos en la comunidad de desarrollo, nunca habíamos hecho un dueto.&lt;/p&gt;
&lt;p&gt;La verdad es que más allá del resultado final, que el público juzgará, fue un placer dar una sesión con Dani y logramos completar todo el temario, que era bastante exigente, en 45 minutos exactos, con buen &lt;em&gt;timing&lt;/em&gt; y sin pisarnos.&lt;/p&gt;
&lt;p&gt;Como prometimos durante la charla, quedan aquí los links para descargar &lt;a rel="nofollow" target="_blank" href="http://dl.dropbox.com/u/552847/RunWebCamp2011/Run%20WebCamp%20EF.pdf"&gt;la presentación&lt;/a&gt; (recortada solo con el material importante y referencias), y los ejemplos, una&lt;a rel="nofollow" target="_blank" href="http://dl.dropbox.com/u/552847/RunWebCamp2011/EFDemoFull.zip"&gt; solución completa con muchos ejemplos en detalle&lt;/a&gt; (cortesía de Dani), y una &lt;a rel="nofollow" target="_blank" href="http://dl.dropbox.com/u/552847/RunWebCamp2011/CodeFirst-Mini.zip"&gt;solución mínima mostrando lo básico de Code First&lt;/a&gt; (culpa mía).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Me siento halagado de haber participado con otros oradores muy buenos y muchos amigos, como Edu Mangarelli y Miguel Sáez, Phil Haack y Drew Robbins, Rodo Finochietti y Pablo Zaiden, y por supuesto, mis compañeros de ruta Johnny Halife y Mati Woloski.&lt;/p&gt;
&lt;p&gt;El evento se emitió en vivo a través de &lt;a rel="nofollow" target="_blank" href="http://www.ustream.tv/channel/run-web-camp"&gt;UStream&lt;/a&gt; y espero que pronto quede disponible para verlo en video, idealmente con las charlas por separado.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-1196716794620317894?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/P8RUD686tJY" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/jYnHEvZcTFI" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-1196716794620317894</guid>
         <pubDate>Tue, 15 Mar 2011 19:34:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh3.ggpht.com/_UL5xJ4XsSh8/TX_pkfdO-1I/AAAAAAAABCE/yxWD4THuK0o/s72-c/RunWebCamp.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/P8RUD686tJY/run-webcamp-2011-en-buenos-aires.html</feedburner:origLink></item>
      <item>
         <title>MVP 2011 y objetivos para este año</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/mtYX3A0apj8/mvp-2011-y-objetivos-para-este-ano.html</link>
         <description>&lt;p&gt;&lt;img style="float:right;" title="MVP.jpg" src="http://lh3.ggpht.com/_UL5xJ4XsSh8/TSMNhKOHABI/AAAAAAAAA28/40Ie25d8ntY/MVP.jpg?imgmax=800" border="0" alt="Most Valuable Professional" width="244" height="101"/&gt;&lt;/p&gt;&lt;p&gt;Otra vez, como desde hace años ya, arranco el año con la agradable noticia de que Microsoft me ha premiado como Most Valuable Professional. Siempre es un honor la distinción, aunque sigo sin saber muy bien qué es lo que consideran tan valioso en mi.&lt;/p&gt;&lt;p&gt;Nuevamente me premian en la categoría "C#", que por lo visto es algo así como un comodín para actividades mas bien ligadas a los lenguajes.&lt;/p&gt;&lt;p&gt;Como sea, es bueno sentirse reconocido, y un honor cuando uno queda cerca de la categoría de gente a la que admira. Y estas cosas refuerzan esta idea organizativa de fijarse objetivos para el año. Es cierto que es un plazo matemáticamente arbitrario, pero útil a nivel de planificación. Es como un relajado &lt;em&gt;backlog&lt;/em&gt; personal que uno puede auto-imponerse para tratar de planificar después el corto plazo, semana tras semana o mes tras mes.&lt;/p&gt;&lt;p&gt;Pero hacer pública una lista de objetivos es una manera de dejar un compromiso más alto que simplemente proponerse algo. Uno sueña con un lector hipotético que algún día vendrá a reclamar si no se cumple nada de lo planeado.&lt;/p&gt;&lt;p&gt;Así, aquí van mis objetivos para el año, que iré atacando, por supuesto, de manera iterativa:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Lenguaje del año: como todos los años, en el 2011 trataré de aprender y comprender un lenguaje nuevo. Para mi comprender un lenguaje de programación significa conocer bastante su idiosincracia, el paradigma con el que está diseñado, sus puntos sobresalientes y problemáticos, y acercarme a la manera en que funciona la comunidad y el ecosistema detrás. Eso implica aprender, hacer &lt;a rel="nofollow" target="_blank" href="http://codekata.pragprog.com/"&gt;katas&lt;/a&gt;, programar en ese lenguaje proyectos lo más reales posibles, y tratar de compartir todo lo posible lo aprendido, sobre todo haciendo algunas presentaciones en vivo o en video. Explicando a los demás, como dice el &lt;a rel="nofollow" target="_blank" href="http://msmvps.com/blogs/lopez/"&gt;Maestro&lt;/a&gt;, es como más fácilmente nos "cae la ficha" y afianzamos nuestros conceptos.&lt;br /&gt;&lt;br /&gt;El 2010 lo dediqué a Ruby (aunque personalmente no profundicé tanto como me hubiese gustado), después de zambullirme en F#, volver a Python (para quedarme -hoy lo uso cotidianamente e incluso tengo &lt;a rel="nofollow" target="_blank" href="https://chrome.google.com/extensions/detail/gdiimmpmdoofmahingpgabiikimjgcia"&gt;un shell de Python siempre a mano&lt;/a&gt;, dentro de Chrome), jugar con Boo, meterme en C# desde Generics hasta el IL generado, tratar de avanzar con Eiffel, debatirme entre Haskell y ML (sin lograr mucho con ellos por mis propias limitaciones).&lt;br /&gt;&lt;br /&gt;A la hora de elegir un lenguaje para este año que inicia, prefiero terminar lo que empecé, y voy a dedicarme más a Ruby, pero esta vez específicamente a &lt;strong&gt;Rails y Sinatra&lt;/strong&gt;, donde no hice tanto hincapié. Mi mayor avance con Ruby el año pasado fue entender el lenguaje mismo y usarlo para todas mis tareas principales de &lt;em&gt;scripting&lt;/em&gt; y algunas aplicaciones desktop que necesitaba (si, es raro ver aplicaciones desktop en Ruby, pero se puede). Esta decisión tiene impacto directo en algunos de los siguientes objetivos, como se verá.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Me quedó pendiente, por varios motivos, dar un&lt;strong&gt; taller sobre Ruby&lt;/strong&gt;, que quiero encarar este año. El principal problema fue que las veces que lo propuse lo hice junto a otras alternativas que sonaron más interesantes. Pero como es algo que personalmente quiero hacer, voy a ponerme en campaña por mi lado, y terminaré con alguna serie de videos en mi otro blog, &lt;a rel="nofollow" target="_blank" href="http://www.codeandbeyond.org/"&gt;Code &amp;amp; Beyond&lt;/a&gt;, y probablemente lo de presencialmente en el &lt;a rel="nofollow" target="_blank" href="http://www.mug.org.ar/"&gt;MUG&lt;/a&gt; o algun otro lado.&lt;/li&gt;&lt;li&gt;Hace tiempo tengo pendiente reconstruir mi sitio personal, que es una recopilación de servicios, links a trabajos, mis libros, películas, etc. Todo eso está armado con un antiquísimo script en Python que genera páginas estáticas ASP. En su momento no fueron HTML plano para poder incluir un par de cosas, pero en realidad son básicamente eso. No hay una base de datos detrás, nada dinámico. Los datos son fuentes diversas en mi máquina que se procesa(ba)n para generar las páginas. Y hace tiempo que no se refresca esa información, salvo lo que proviene de servicios como &lt;a rel="nofollow" target="_blank" href="http://www.delicious.com/"&gt;delicious&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Así que tengo un buen ejercicio a mano: rediseñar el sitio, pensándolo mejor (aunque el objetivo básico seguirá siendo tener consolidada una cantidad de información que está dispersa en la web) y usarlo como una práctica de Rails y también de actualizar mi conocimiento en HTML/CSS, que está algo vetusto.&lt;/li&gt;&lt;li&gt;Otro objetivo, a cumplir en el corto plazo, es actualizar mi hardware. Seguiré con una Mac, pero estoy cambiándola en breve por una de las nuevas &lt;strong&gt;MacBook Air&lt;/strong&gt;, que ya tendrá su propia reseña.&lt;br /&gt;&lt;br /&gt;Y en consecuencia con el cambio, también quiero aprender este año &lt;a rel="nofollow" target="_blank" href="http://developer.apple.com/applescript/"&gt;Applescript&lt;/a&gt;. Hasta ahora todas mis tareas en la Mac las automaticé entre un poco de bash y Ruby, pero hay muchas cosas en las que el scripting nativo de la Mac va ayudarme con seguridad. Además, la gente de Apress me regaló el libro "&lt;a rel="nofollow" target="_blank" href="http://apress.com/book/view/9781430223610"&gt;Learn AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Third Edition&lt;/a&gt;", así que ¡no me quedan excusas!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finalmente, como todos los años, sigo rumiando los bocetos de un libro (técnico), pero no quiero auto-imponerme una fecha límite para eso, porque  todavía no tengo el temario final cerrado en mi cabeza. De alguna manera, &lt;a rel="nofollow" target="_blank" href="http://codeandbeyond.org"&gt;Code &amp;amp; Beyond&lt;/a&gt; es una especie de lista de notas que me llevan en ese camino.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;No es una lista tan grande. Espero llegar con todo terminado bastante antes de fin del año próximo, así que corto aquí y me pongo a trabajar.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-1521778646028521687?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/FU8VEvhKSc4" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/mtYX3A0apj8" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-1521778646028521687</guid>
         <pubDate>Tue, 04 Jan 2011 09:07:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh3.ggpht.com/_UL5xJ4XsSh8/TSMNhKOHABI/AAAAAAAAA28/40Ie25d8ntY/s72-c/MVP.jpg?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/FU8VEvhKSc4/mvp-2011-y-objetivos-para-este-ano.html</feedburner:origLink></item>
      <item>
         <title>EmpleosTI</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/PmNsOhJxJ8E/empleosti.html</link>
         <description>&lt;p style="text-align:center;"&gt;&lt;img width="222" height="39" src="http://27.media.tumblr.com/tumblr_ld4chev23C1qcvilfo1_250.png"/&gt;&lt;/p&gt;&lt;p&gt;El día de hoy anuncio un sitio para publicar ofertas de trabajo relacionadas con Tecnologías de Información, el sitio es &lt;a rel="nofollow" target="_blank" href="http://empleosti.decisionesinteligentes.com/"&gt;empleosTI&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align:center;"&gt;&lt;img width="380" height="295" src="http://26.media.tumblr.com/tumblr_ld4chgKEii1qcvilfo1_400.png"/&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;El sitio es muy sencillo de utilizar, no requiere de registro ni para publicar ofertas ni para consultarlas, las ofertan publicadas son enviadas automáticamente a Twitter a través de la cuenta @&lt;a rel="nofollow" target="_blank" href="http://www.twitter.com/empleosti_dein"&gt;empleosti_dein&lt;/a&gt;, además de tener la posibilidad desde la vista de una oferta de enviarla por email, a Twitter o a Facebook.&lt;/p&gt;&lt;p&gt;Para ver el funcionamiento del sitio les dejo el siguiente video:&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed width="400" height="345" src="http://screenr.com/Content/assets/screenr_1116090935.swf" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Actualmente el sitio aún esta en fase beta, es "usable" y funcional, y no tiene costo para publicar ofertas, así que si están buscando personal de TI.&lt;br /&gt;&lt;br /&gt;El sitio salió como idea después de la VAN que di a @&lt;a rel="nofollow" target="_blank" href="http://www.twitter.com/altnethispano"&gt;altnethispano&lt;/a&gt; sobre &lt;a rel="nofollow" target="_blank" href="http://blog.decisionesinteligentes.com/post/2141859211/presentacion-de-ruby-on-rails-en-altnethispano"&gt;Ruby on Rails&lt;/a&gt;, inicialmente como una aplicación de concepto, después de verlo funcionar decidí hacerlo público como un servicio.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-957853623695704284?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/PmNsOhJxJ8E" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-957853623695704284</guid>
         <pubDate>Wed, 08 Dec 2010 11:18:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/12/empleosti.html</feedburner:origLink></item>
      <item>
         <title>Resumen de posts</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/L9HZrFBXDFk/resumen-de-posts.html</link>
         <description>&lt;p style="clear:both;"&gt;Posts recientes en el blog de &lt;a rel="nofollow" target="_blank" href="http://blog.decisionesinteligentes.com/"&gt;http://blog.decisionesinteligentes.com&lt;/a&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://bit.ly/hOd7GU"&gt;Nancy, un framework inspirado en Sinatra&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://bit.ly/iiVtEh"&gt;Generar PDFs en Ruby: PDF Kit irreverencia y monkey patches&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://bit.ly/htuUxU"&gt;Resumen de Tijuana.rb en el 2010&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://bit.ly/hrOQ71"&gt;SHDH Tijuana 6, ED "The return of the walking death"&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-621103105506610933?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/L9HZrFBXDFk" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-621103105506610933</guid>
         <pubDate>Sat, 04 Dec 2010 15:03:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/12/resumen-de-posts.html</feedburner:origLink></item>
      <item>
         <title>Video: Virtual Alt.NET Meeting sobre Cloud Computing</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/JznZz5APpww/video-virtual-altnet-meeting-sobre.html</link>
         <description>&lt;p&gt;Hace unas semanas participé en otra reunión virtual de &lt;a rel="nofollow" target="_blank" href="http://www.altnethispano.org/"&gt;Alt.NET Hispano&lt;/a&gt;, hablando un poco sobre Cloud Computing.&lt;/p&gt;&lt;p&gt;Gracias como siempre a &lt;a rel="nofollow" target="_blank" href="http://www.jorgegamba.com/blog/"&gt;Jorge Gamba&lt;/a&gt; y el resto del equipo de voluntarios, ya está publicado el video, que dejo embebido aquí abajo, pero recuerden que pueden ver cualquiera de los &lt;a rel="nofollow" target="_blank" href="http://www.altnethispano.org/reuniones/historico.aspx"&gt;videos de la reuniones anteriores&lt;/a&gt;.&lt;/p&gt;&lt;p&gt; Unable to display content. Adobe Flash is required.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-3787021131410930266?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/w64xCdgYVoQ" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/JznZz5APpww" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-3787021131410930266</guid>
         <pubDate>Wed, 01 Dec 2010 11:49:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/w64xCdgYVoQ/video-virtual-altnet-meeting-sobre.html</feedburner:origLink></item>
      <item>
         <title>Wash, DRY and fold</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/uDkumTcUhog/wash-dry-and-fold_18.html</link>
         <description>&lt;p style="clear:both;"&gt;DRY es una de las recomendaciones mas mencionadas en el desarrollo de software, DRY es el acronimo de "&lt;a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/No_te_repitas"&gt;Don't Repeat Yourself&lt;/a&gt;" o "No te repitas" en español.&lt;/p&gt;&lt;p style="clear:both;"&gt;DRY lo que promueve es la no duplicidad de código fuente en nuestro software, ya que la duplicidad acarrea una serie de problemas de mantenimiento, inconsistencia en la funcionalidad, falta de claridad, etc.&lt;/p&gt;&lt;p style="clear:both;"&gt;Es por eso que en nuestros desarrollos debemos de buscar patrones de código que se repiten una y otra vez para tratar de extraerlos, abstraerlos y reutilizarlos.&lt;/p&gt;&lt;p style="clear:both;"&gt;El origen de este post es precisamente, que en un desarrollo en Ruby On Rails que estoy haciendo, encontre estos patrones repetitivos en mis controladores. La mayoría de ellos trabajan haciendo CRUD de manera muy tradicional, por lo tanto las acciones de: Index, Show, Edit, New, Create, Update y Destroy tienen código muy similar a excepción de las referencias al modelo sobre el cual actúan.&lt;/p&gt;&lt;p style="clear:both;"&gt;Buscando una solución para eliminar esto, me encontré con el proyecto de José Valim (&lt;a rel="nofollow" target="_blank" href="http://twitter.com/josevalim"&gt;@josevalim&lt;/a&gt;) &lt;a rel="nofollow" target="_blank" href="https://github.com/josevalim/inherited_resources"&gt;Inherited Resources&lt;/a&gt;, el cual trata precisamente sobre como mantenerse DRY.&lt;br /&gt;Algo importante es que Inherited Resources no cambia nuestra forma de trabajar al nombrar variables con nombres genéricos para que puedan ser usadas en nuestros controladores, el se encarga de nombrar las variables de acuerdo a la convención de Rails por lo tanto su uso es bastante transparente.&lt;/p&gt;&lt;p style="clear:both;"&gt;El post no se trata sobre Inherited Resources, por lo que aqui les dejo ligas a material de referencia para quien guste conocer mas:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://railscasts.com/episodes/230-inherited-resources"&gt;Railscasts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://akitaonrails.com/2009/09/01/screencast-real-thin-restful-controllers-with-inherited-resources"&gt;Video de AkitaOnRails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/josevalim/inherited_resources"&gt;InheritedResources&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;¿Bueno entonces de que se trata el post? Es sobre DRY, pero mi implementación de DRY para un problema particular.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;En el proyecto que estoy trabajando, tuve la necesidad de que la aplicación de Rails consumiera datos de un API de otra aplicación, la aplicación, de hecho son varias aplicaciones, que contiene lo datos no tiene API, por lo que con una aplicación de Sinatra, le cree un &lt;a rel="nofollow" target="_blank" href="http://es.wikipedia.org/wiki/Representational_State_Transfer"&gt;API Rest&lt;/a&gt; para que pueda ser consumida con la aplicación Rails - la aplicación de Rails y las aplicaciones sin API están en diferentes servidores/redes -. Esta API Rest puede ser consumida desde Rails a través del uso de &lt;a rel="nofollow" target="_blank" href="http://api.rubyonrails.org/classes/ActiveResource/Base.html"&gt;ActiveResources&lt;/a&gt;, que aparentan ser modelos normales de Rails, pero que en realidad hacen llamados remotos a través de http para obtener sus datos.&lt;/p&gt;&lt;p style="clear:both;"&gt;En mi problema, tengo un controlador con diversas acciones, donde cada acción hace una llamada Rest a diferentes modelos y muestra los datos obtenidos, hay llamadas que traen una colección de objetos y otras que solamente traen un objeto en particular.&lt;/p&gt;&lt;p style="clear:both;"&gt;El patron que comencé a ver en las diversas llamadas para traer colecciones de datos fue:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;así como la variación siguiente, también para traer colecciones de objetos:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt; La diferencia entre ellos es que en ocasiones se pasa el ID y en otras no, fuera de eso son muy similares.&lt;/p&gt;&lt;p style="clear:both;"&gt;Por otro lado, al traer un solo elemento el patrón era el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;Donde se pasa el ID en otro orden como parametro y la llamada ya no es al metodo &lt;strong&gt;all&lt;/strong&gt;, es a &lt;strong&gt;find&lt;/strong&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;Este código se repetia una y otra ves en mi controlador donde solo cambiaba el nombre del Modelo, así como las variables @modelos y @modelo que es a donde se asignan los datos una vez que se obtienen. &lt;/p&gt;&lt;p style="clear:both;"&gt;Mi intención aquí es hacer que esto funcione DRY, y con la ayuda de un poco de metaprogramacion es fácil el lograrlo.&lt;/p&gt;&lt;p style="clear:both;"&gt;La idea es que pudiese hacer algo como:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;fetch_resources! :modelo&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;o&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;fetch_resource! :modelo&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Para obtener mis datos a través de Rest para el modelo adecuado y que se cargara la variable correspondiente con los datos correctos.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;&lt;br style="clear:both;"/&gt; Así es como llegue al código que se muestra arriba. El método en singular trae un solo modelo a través de Rest y el metodo en plural trae una colección de modelos, opcionalmente ambos pueden aceptar un filtro en forma de &lt;a rel="nofollow" target="_blank" href="http://ruby-doc.org/core/classes/Hash.html"&gt;Hash&lt;/a&gt;, y el modelo se indica a través de un &lt;a rel="nofollow" target="_blank" href="http://ruby-doc.org/core/classes/Symbol.html"&gt;símbolo&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;El metodo fetch! es el que hace toda la &lt;em&gt;magia&lt;/em&gt;, primero crea un Hash con el filtro default para todas las llamadas Rest, luego evalúa si a traves de fetch_resource! o fetch_resources! le estamos pasando filtros adicionales, si es así, los integra al Hash de filtro default.&lt;/p&gt;&lt;p style="clear:both;"&gt;En este punto es donde esta lo mas interesante, usamos en simbolo que se almacena en la variable resource para obtener la referencia a la clase del modelo sobre el cual nos interesa hacer la consulta, por ejemplo si nuestro símbolo es :cliente, asume que tenemos un modelo Cliente y sobre el queremos enviar nuestra solicitud Rest.&lt;/p&gt;&lt;p style="clear:both;"&gt;Acto seguido identificamos si tenemos un ID a traves del Hash params en el controlador, si es así, identificamos si debemos de llamar al metodo &lt;strong&gt;find&lt;/strong&gt; o &lt;strong&gt;all&lt;/strong&gt; y colocamos los parámetros de la forma correcta, mediante &lt;strong&gt;send&lt;/strong&gt; hacemos el llamado de forma dinamica y el resultado lo guardamos en la variable values.&lt;/p&gt;&lt;p style="clear:both;"&gt;Finalmente fetch! asume que si tenemos una colección y nuestro símbolo es :cliente, esperamos tener una variable @clientes con los datos, en cambio si tenemos un solo modelo como respuesta y nuestro símbolo sigue siendo :cliente, asume que esperamos una variable @cliente con el dato.&lt;/p&gt;&lt;p style="clear:both;"&gt;De esta forma en nuestras vistas podemos hacer uso de @clientes o @cliente según corresponda.&lt;/p&gt;&lt;p style="clear:both;"&gt;Si bien no hubo un &lt;em&gt;ahorro&lt;/em&gt; significativo en lineas de código, si hubo la eliminación de lineas de código repetidas y susceptibles a errores o cambios, las cuales fueron reemplazadas por otras instrucciones mas simples que manejan el mismo escenario para cualquiera de mis modelos.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-3455309873818546693?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/uDkumTcUhog" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-3455309873818546693</guid>
         <pubDate>Thu, 18 Nov 2010 16:59:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/11/wash-dry-and-fold_18.html</feedburner:origLink></item>
      <item>
         <title>Arquitectura de Software en el Ciclo de Vida Agil</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/891bGGw4oR0/arquitectura-de-software-en-el-ciclo-de.html</link>
         <description>&lt;p&gt;Durante el mes de octubre tuvimos nuevamente la oportunidad de facilitar nuestro auditorio en &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net"&gt;Southworks&lt;/a&gt; para otro desayuno de arquitectos de los que organiza Microsoft.&lt;/p&gt;&lt;p&gt;Esta vez, a diferencia de los últimos, en que sólo me tocó oficiar de anfitrión, &lt;a rel="nofollow" target="_blank" href="http://twitter.com/guadacasuso"&gt;Guada&lt;/a&gt; me pidió que presentara, ya que el tema elegido por el grupo tenía que ver con documentación y validación de arquitectura, algo sobre lo que vengo trabajando bastante fuerte, incluyendo &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/architecture/ff476940.aspx"&gt;el artículo que publicamos al respecto&lt;/a&gt; con &lt;a rel="nofollow" target="_blank" href="http://diegofontdevila.wordpress.com/"&gt;Diego Fontdevila&lt;/a&gt; en el n&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/architecture/ff476933.aspx"&gt;úmero 23 del Architecture Journal&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Casualmente, la sesión estuvo basada en la que presentamos con Diego en &lt;a rel="nofollow" target="_blank" href="http://agiles2010.agiles.org/"&gt;Agiles 2010&lt;/a&gt;, un par de semanas antes, en Lima, adaptada ligeramente a este público que tiene un perfil diferente.&lt;/p&gt;&lt;p&gt;Gracias a &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/jscopinaro/"&gt;Julián Scopinaro&lt;/a&gt;, la sesión quedó capturada en video, que comparto aquí abajo.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://vimeo.com/16210009"&gt;Architects' Breakfast: Architecture in Agile Life Cycle - Part 1&lt;/a&gt; from &lt;a rel="nofollow" target="_blank" href="http://vimeo.com/southworks"&gt;Southworks Showcase&lt;/a&gt; on &lt;a rel="nofollow" target="_blank" href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://vimeo.com/16279381"&gt;Architects' Breakfast: Architecture in Agile Life Cycle - Part 2&lt;/a&gt; from &lt;a rel="nofollow" target="_blank" href="http://vimeo.com/southworks"&gt;Southworks Showcase&lt;/a&gt; on &lt;a rel="nofollow" target="_blank" href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-1225907002475164754?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/KmsJ6TsBC-c" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/891bGGw4oR0" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-1225907002475164754</guid>
         <pubDate>Mon, 08 Nov 2010 17:20:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/KmsJ6TsBC-c/arquitectura-de-software-en-el-ciclo-de.html</feedburner:origLink></item>
      <item>
         <title>Ruby on Rails este mes de Noviembre</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/b3W8AXJZXM4/ruby-on-rails-este-mes-de-noviembre.html</link>
         <description>&lt;p style="clear:both;"&gt;&lt;img src="http://lh5.ggpht.com/_COcsfdYwI20/TNLySOr2h3I/AAAAAAAAFiQ/ZdMwoUNJ8JY/s800/logo-thumb.gif" height="119" width="331" style="text-align:center;display:block;margin:0 auto 10px;"/&gt;Al parecer un mes mas activo en cuanto a mis actividades en Ruby y Rails este mes de Noviembre.&lt;/p&gt;&lt;p style="clear:both;"&gt;Primeramente &lt;a rel="nofollow" target="_blank" href="http://altnethispano.org/Inicio.aspx"&gt;Alt.NET Hispano&lt;/a&gt; me ha invitado este sábado 6 de Noviembre a dar una VAN sobre Rails, la dirección para conectarse aparecera ese mismo dia en el sitio o traves de la cuenta de twitter @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/AltNetHispano"&gt;altnethispano&lt;/a&gt;, la VAN sera a las 18:00 UTC/GMT.&lt;/p&gt;&lt;p style="clear:both;"&gt;El domingo 7 participare en el evento "&lt;a rel="nofollow" target="_blank" href="http://tv.rails.mx/platforms/rails-mx/event/latam-on-rails"&gt;Latam en Rails&lt;/a&gt;" de &lt;a rel="nofollow" target="_blank" href="http://rails.mx/"&gt;Rails.mx&lt;/a&gt;, con la platica "&lt;a rel="nofollow" target="_blank" href="http://tv.rails.mx/platforms/rails-mx/presentation/uso-de-steakrb-para-bdd"&gt;Uso de Steakrb para BDD&lt;/a&gt;", la platica en es linea y sera a las 5:30pm hora del centro de Mexico.&lt;/p&gt;&lt;p style="clear:both;"&gt;Finalmente el proximo sábado 13 de noviembre estaré en el evento "&lt;a rel="nofollow" target="_blank" href="http://gultij.org/node/213"&gt;Software Freedom Day 2010&lt;/a&gt;" del &lt;a rel="nofollow" target="_blank" href="http://gultij.org"&gt;grupo de usuarios linux de Tijuana&lt;/a&gt;, este evento sera en el &lt;a rel="nofollow" target="_blank" href="http://www.eltrompo.org/"&gt;Museo del Trompo&lt;/a&gt; y estaré a las 10:00am hora del pacifico platicando sobre Rails.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-6467593752278201796?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/b3W8AXJZXM4" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-6467593752278201796</guid>
         <pubDate>Thu, 04 Nov 2010 10:50:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/_COcsfdYwI20/TNLySOr2h3I/AAAAAAAAFiQ/ZdMwoUNJ8JY/s72-c/logo-thumb.gif" width="72" />
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/11/ruby-on-rails-este-mes-de-noviembre.html</feedburner:origLink></item>
      <item>
         <title>ConfORMando NHibernate 3 (the day after)</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ijrhgtVjr6g/conformando-nhibernate-3-day-after.html</link>
         <description>Fue un placer ayer mostrar lo que se puede llegar a hacer con NHibernate 3.0 y alguna otras “cajita feliz”.

La verdad es que pensaba que fuese un poco mas desafiante especialmente por el hecho que la mayoría de los asistentes son actualmente usuarios de NHibernate. En dos horas no pudimos ver mucho porque me dejaron hablar demasiado… 

Tal vez, si lo piden al MUG, podamos hacer otra session del
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/DGPrdOIrJEHr_mxV7tctusrNu7k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DGPrdOIrJEHr_mxV7tctusrNu7k/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/DGPrdOIrJEHr_mxV7tctusrNu7k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DGPrdOIrJEHr_mxV7tctusrNu7k/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/Hunabku?a=TTeK1H8TWto:AbqJICafICU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hunabku/~4/TTeK1H8TWto" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ijrhgtVjr6g" height="1" width="1"/&gt;</description>
         <author>Fabio Maulo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3924739636407907202.post-3859361600836518172</guid>
         <pubDate>Wed, 03 Nov 2010 14:58:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh6.ggpht.com/_s7Ij1CTFJuM/TNGiT-gFHmI/AAAAAAAAATU/HqJXb8MvWQ8/s72-c/wlEmoticon-winkingsmile%5B2%5D.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Hunabku/~3/TTeK1H8TWto/conformando-nhibernate-3-day-after.html</feedburner:origLink></item>
      <item>
         <title>Code &amp; Beyond: hablando muchos lenguajes, pero en español</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ozgx8h5y_ag/code-beyond-hablando-muchos-lenguajes.html</link>
         <description>&lt;p&gt;&lt;img style="float:right;" title="cb-iso.png" src="http://lh4.ggpht.com/_UL5xJ4XsSh8/TNFtT_VDKJI/AAAAAAAAAv0/WCpMFloUXRI/cb-iso.png?imgmax=800" border="0" alt="Code &amp;amp; Beyond" width="203" height="203"/&gt;&lt;/p&gt;&lt;p&gt;Para quienes han sido fieles lectores de este blog algo abandonado, no podía dejar de invitarlos a seguir mi nueva iniciativa: &lt;a rel="nofollow" target="_blank" href="http://www.codeandbeyond.org/"&gt;Code &amp;amp; Beyond&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;El objetivo de este blog (que pronto contará con videos además de noticias) es difundir contenido interesante sobre desarrollo de software en cualquier plataforma y lenguaje, inicialmente al menos, apuntando al mercado hispano-parlante.&lt;/p&gt;&lt;p&gt;La idea es algo que venía rondándome hace tiempo, y que se impulsó por una serie de posibilidades y también gracias al soporte y perseverancia de mi amigo &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/jscopinaro"&gt;Julián Scopinaro&lt;/a&gt;, con quien compartimos tareas de comunicación en &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/"&gt;Southworks&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Hay una breve introducción en &lt;a rel="nofollow" target="_blank" href="http://www.codeandbeyond.org/2010/10/bienvenidos-code-beyond.html"&gt;el primer post&lt;/a&gt;, pero aprovecho este blog, más personal, para exponer porqué me parece importante cubrir el espectro "multi-plataforma":&lt;/p&gt;&lt;p&gt;Por un lado, buena parte de mi carrera la dediqué de una manera u otra a proyectos con problemática fuerte de interoperabilidad, y es una especialidad que me ha sido valiosa y me ha generado muchas oportunidades. Incluso a lo largo de 20 años de relación con Microsoft, ellos mismos me han elegido varias veces para ayudarlos en proyectos que involucraban piezas más allá de su plataforma, y a medida que pasa el tiempo, veo que es cada vez más raro que una solución se pueda diseñar para un entorno homogéneo.&lt;/p&gt;&lt;p&gt;Desde otro ángulo, creo que entender y apreciar otras plataformas nos hace más sólidos y aumenta nuestra capacidad de discernimiento sobre las que estamos usando principalmente en un momento u otro. Desde el punto de vista de la arquitectura de software, por definición no deberíamos permitirnos tomar decisiones con un sesgo específico. Por supuesto, esto no significa que al evaluar alternativas para una solución no consideremos el valor de una plataforma que está más afianzada en la organización, o el equipo domina más. El tema es evitar la decisión por temor o ignorancia (si es que no son al final la misma cosa).&lt;/p&gt;&lt;p&gt;Tal vez el ejercicio y la disciplina que me exige Code &amp;amp; Beyond me haga escribir más frecuentemente en éste y otros blogs. Éste en particular seguirá siendo un punto donde hablar desde una perspectiva más personal, o compartir material o contenido de actividades mías no relacionadas directamente con el otro.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-73722417307195651?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/WefNN8iPxKE" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ozgx8h5y_ag" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-73722417307195651</guid>
         <pubDate>Wed, 03 Nov 2010 11:09:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/_UL5xJ4XsSh8/TNFtT_VDKJI/AAAAAAAAAv0/WCpMFloUXRI/s72-c/cb-iso.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/WefNN8iPxKE/code-beyond-hablando-muchos-lenguajes.html</feedburner:origLink></item>
      <item>
         <title>ConfORMando NHibernate 3</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/U7fhBjx1Kcc/conformando-nhibernate-3.html</link>
         <description>El dia 2 de Noviembre estaré presenciando una charla en el auditorium del MUG (Microsoft Users Group) de Buenos Aires, Rivadavia 1479 1º A.

  
Ver mapa más grande   

La intencción es la de mostrar un uso “distinto” de NHibernate.

Para asistir no se necesita ninguna experiencia previa con NHibernate y si nunca lo han usado verán cuan simple es su uso. Si ya están usando NHibernate, aunque sea 
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rs0E23I9XlCjKwYHnxyj0s6Al-E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rs0E23I9XlCjKwYHnxyj0s6Al-E/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rs0E23I9XlCjKwYHnxyj0s6Al-E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rs0E23I9XlCjKwYHnxyj0s6Al-E/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/Hunabku?a=ozvkciFQpZ0:VsykBX3cjM0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hunabku?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hunabku/~4/ozvkciFQpZ0" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/U7fhBjx1Kcc" height="1" width="1"/&gt;</description>
         <author>Fabio Maulo</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3924739636407907202.post-5239143535056976139</guid>
         <pubDate>Fri, 15 Oct 2010 16:07:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/Hunabku/~3/ozvkciFQpZ0/conformando-nhibernate-3.html</feedburner:origLink></item>
      <item>
         <title>Ahora soy MVP de Microsoft, es una buena oportunidad para decir gracias</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ZQdyqZRrZLE/</link>
         <description>Quiero expresar mi satisfacción al haber recibido el pasado 1 de Octubre de 2010 el reconocimiento como Profesional Más Valioso (MVP) de Microsoft en el mundo, en el área de C#. En el correo de notificación que recibí de Microsoft se mencionaba lo siguiente: En Microsoft creemos que las comunidades técnicas mejoran la vida de [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=278</guid>
         <pubDate>Thu, 14 Oct 2010 13:44:25 +0000</pubDate>
         <content:encoded><![CDATA[<p><img src="http://www.jorgegamba.com/blog/wp-content/uploads/2010/10/premios_mvp.png" alt="image"/></p>
<p>Quiero expresar mi satisfacción al haber recibido el pasado 1 de Octubre de 2010 el reconocimiento como <em>Profesional Más Valioso (</em><a rel="nofollow" target="_blank" href="https://mvp.support.microsoft.com/gp/aboutmvp"><em>MVP</em></a><em>) de Microsoft en el mundo, en el área de C#. </em>En el correo de notificación que recibí de Microsoft se mencionaba lo siguiente:</p>
<blockquote><p>En Microsoft creemos que las comunidades técnicas mejoran la vida de las personas y el éxito del sector gracias a que expertos independientes, como usted, ayudan a otros a obtener un mayor valor de los productos y las tecnologías mediante el intercambio gratuito y objetivo de conocimientos. Como MVP de Microsoft forma parte de un grupo muy selecto de expertos que representan lo mejor y lo más brillante de la tecnología y que comparten un compromiso profundo con la comunidad y la voluntad de ayudar a los demás.</p>
<p>En nombre de Microsoft, le agradecemos su contribución a las comunidades técnicas.</p></blockquote>
<p>Yo contesto a eso “muchas gracias Microsoft, yo también creo firmemente en las comunidades técnicas y también valoro el apoyo que nos dan ustedes a quienes trabajamos por ellas”. Si bien esto exige que hagamos algunos sacrificios en tiempo, energías y hasta en dinero, no es una labor meramente altruista, más bien es el medio que algunos hemos escogido para crecer tanto profesional como personalmente, a través de la colaboración con nuestros pares, otros desarrolladores de software, sean estos principiantes o gurús.</p>
<p>Ha sido muy buena la experiencia con la participación en la comunidad <a rel="nofollow" target="_blank" href="http://altnethispano.org">ALT.NET Hispano</a>, para mi y se que para un montón de gente también, que hemos coincidido en el ánimo de hacer algo juntos por nosotros mismos, para mejorar nuestras habilidades técnicas en el desarrollo de software. Es bonito ver cómo si alguien dice “quien nos puede ayudar en [tal cosa]” luego alguien contesta “yo puedo colaborar”. Ha sido grato compartir con personas que cuentan no solo con un altísimo nivel técnico sino también con excelentes valores humanos.</p>
<p>Sería imperdonable no dar las gracias a mi esposa, Johana Cárdenas, no es que yo sacrifique mi familia por estar trabajando por las comunidades técnicas, la familia está primero, pero digamos que en algunas ocasiones ella ha tenido que ejercer cierta paciencia por los compromisos que exige mi ocupación. También debo expresar mi agradecimiento a quien yo y otros tantos consideramos nuestro mentor, <a rel="nofollow" target="_blank" href="http://fabiomaulo.blogspot.com/">Fabio Maulo</a>, siempre listo a ayudar a quienes necesitamos una guía; a quien ha sido un gran influyente en mi pensamiento, <a rel="nofollow" target="_blank" href="http://ajlopez.com/">Ángel “Java” López</a>, con su filosofía <a rel="nofollow" target="_blank" href="http://msmvps.com/blogs/lopez/archive/2008/01/15/don-t-be-a-canuto.aspx">Don’t be a canuto</a>; y no podría dejar por fuera de esa lista a mis dos amigos <a rel="nofollow" target="_blank" href="http://jfromaniello.blogspot.com/">José Romaniello</a> y <a rel="nofollow" target="_blank" href="http://www.cprieto.com/">Cristian Prieto</a>, quienes a parte de tener unas excelentes habilidades técnicas disfrutan dando la mano a otros para que también puedan obtenerlas.</p>
<p>Quienes me conocen saben que soy un firme creyente de lo que se promueve en el movimiento <a rel="nofollow" target="_blank" href="http://altnet-hispano.pbworks.com/Que-es-AltNet">ALT.NET</a> y que entonces valoro más las prácticas que las herramientas, que me esfuerzo por no caer ni en el fundamentalismo ni en tener una fe ciega en una tecnología específica o empresa, simplemente trato de usar y recomendar el mejor recurso disponible en el momento para mis necesidades y de acuerdo a las circunstancias; en otras palabras, trato de ser equilibrado y cuando se puede, neutral. Siendo coherente esta posición, en cuanto a Microsoft les puedo garantizar de que mantendré mi criterio independiente, para señalar sus aciertos y desaciertos cuando corresponda, siempre de una manera respetuosa.</p>
<p>Trataré de corresponder con el reconocimiento que me otorga Microsoft y la comunidad manteniendo y de ser posible mejorando mi contribución a la gente a quienes puedan interesar mis aportes, especialmente quiero relacionarme más con las comunidades presenciales (cara a cara) en donde no he tenido mucha participación hasta ahora, generar más contenido técnico y aportar más a proyectos <em>Open Source</em>.</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/uJDymyZS5Y8" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ZQdyqZRrZLE" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/uJDymyZS5Y8/</feedburner:origLink></item>
      <item>
         <title>Workshop: Desarrollo ágil de software en .NET, Segunda parte – Desacoplamiento</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/FO77smdpGFw/</link>
         <description>Hoy, martes 12 de octubre de 2010 presentaré la segunda sesión de una serie de 3 en un workshop sobre “Desarrollo ágil de software en .NET”. Esta sesión se podrá atender tanto presencial como virtualmente. Este evento se realizará en las instalaciones de Microsoft Colombia en la ciudad de Bogotá en la Carrera 7 # [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=276</guid>
         <pubDate>Tue, 12 Oct 2010 13:15:49 +0000</pubDate>
         <content:encoded><![CDATA[<p><img src="http://spaceyideas.com/images/shuttleboosters.jpg" alt=""/></p>
<p>Hoy, martes 12 de octubre de 2010 presentaré la segunda sesión de una serie de 3 en un workshop sobre “Desarrollo ágil de software en .NET”. Esta sesión se podrá atender tanto presencial como virtualmente. Este evento se realizará en las instalaciones de Microsoft Colombia en la ciudad de Bogotá en la Carrera 7 # 71-21 torre B piso 15, a las 6:30 p.m. hora local, lo que corresponde con la hora internacional 23:30 UTC/GMT (meridiano 0), con una duración aproximada de 2 horas.</p>
<p>Esta sesión se titula “Desarrollo ágil de software en .NET: Diseñando componentes desacoplados” y al igual que la anterior, se presentará en un modo introductorio, puesto que el objetivo es presentar las opciones que tenemos a la hora de definir la arquitectura lógica y diseñar las clases siguiendo prácticas recomendadas para desarrollar aplicaciones <em>mantenibles</em>. No es requisito haber atendido la sesión pasada, pues al inicio haremos un repaso muy rápido, pero suficiente, de la técnica ágil que emplearemos para el desarrollo (<a rel="nofollow" target="_blank" href="http://blog.dannorth.net/introducing-bdd/">BDD</a>). Los ejercicios se realizarán en Visual Studio 2010 empleando con lenguaje C#. La descripción es la siguiente:</p>
<blockquote><p>Para desarrollar aplicaciones de calidad se requiere la aplicación de principios, patrones y prácticas de diseño orientado a objetos, sin caer en la trampa de la sobre ingeniería. Pero en lugar de las aburridas explicaciones teóricas de programación orientada a objetos con los ejemplos típicos como Animal &#8211; Perro &#8211; Gato y similares, esta sesión será totalmente práctica, solucionando mediante código problemas y errores comunes a los que nos enfrentamos cuando construimos software. El resultado será conformar una arquitectura lógica sólida y elegante para nuestra aplicación de referencia y ejemplo, con objetos de alta cohesión y bajo acoplamiento.</p></blockquote>
<p>Quienes deseen asistir presencialmente deberán inscribirse mediante un formulario de <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032461766">registro para evento presencial</a> y los que deseen atender virtualmente (mediante Live Meeting) deberán usar este otro formulario de <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032462243">registro para Webcast</a>.</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/pG6anhgAax4" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/FO77smdpGFw" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/pG6anhgAax4/</feedburner:origLink></item>
      <item>
         <title>Como iniciarse en Ruby/Rails</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/oQ9be0QATtg/como-iniciarse-en-rubyrails.html</link>
         <description>&lt;p style="clear:both;"&gt;En varias ocasiones me han hecho esta pregunta y generalmente no tengo una respuesta sencilla, ya que no creo que exista una receta para lograr esto.&lt;/p&gt;&lt;p style="clear:both;"&gt;Creo que lo primero es obviamente tener interes por Ruby y/o Rails, un buen lugar para comenzar con Ruby es el sitio de &lt;a rel="nofollow" target="_blank" href="http://www.ruby-lang.org/es/"&gt;Ruby Lang&lt;/a&gt;. Un libro muy bueno es &lt;a rel="nofollow" target="_blank" href="http://bit.ly/ag0exh"&gt;Programming Ruby&lt;/a&gt;. Realmente no conozco muchos recursos en español sobre Ruby en particular. Otro libro interesante es &lt;a rel="nofollow" target="_blank" href="http://bit.ly/bBlUz1"&gt;Learn to Program&lt;/a&gt; donde enseña como programar desde el punto de vista de Ruby.&lt;/p&gt;&lt;p style="clear:both;"&gt;Una buena recomendación, antes de moverse a programar en Rails es aprender a programar con &lt;a rel="nofollow" target="_blank" href="http://www.sinatrarb.com/"&gt;Sinatrarb&lt;/a&gt;, ya que que Sinatrarb a diferencia de Rails, no agrega tanta "magia" y hay que conocer mejor el lenguaje para hacer una aplicación con este DSL.&lt;/p&gt;&lt;p style="clear:both;"&gt;Sobre Rails igualmente no conozco mucho contenido en español sin embargo puedo recomendar seguir y estar pendiente de las siguientes comunidades y eventos:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://rails.mx"&gt;Rails.mx&lt;/a&gt;, comunidad de Rails en México&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://onrails.com.ar/"&gt;OnRails&lt;/a&gt;, comunidad de Rails en Argentina&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://railshispano.es/"&gt;Rails Hispano&lt;/a&gt;, podcast en español sobre Rails&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://conferenciarails.org/"&gt;Conferencia Rails&lt;/a&gt;, conferencias de Rails en España, hay videos de conferencias pasadas.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tambien porque no seguir a @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/tijuanarb"&gt;tijuanarb&lt;/a&gt; en lo que esta el sitio listo en &lt;a rel="nofollow" target="_blank" href="http://tijuanarb.org"&gt;tijuanarb.org&lt;/a&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/mhcornejo"&gt;Mario Cornejo&lt;/a&gt; tiene algunos &lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/search/label/RubyOnRails"&gt;videos introductorios&lt;/a&gt; en español sobre Rails&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Una buena opción también es buscar si seguir a los tweeteros sobre temas de Ruby/Rails es español.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;En cuestión de libros el único que puedo recomendar es &lt;a rel="nofollow" target="_blank" href="http://bit.ly/c1vPWg"&gt;Agile Web Development with Rails&lt;/a&gt;, aunque hay muchos otros.&lt;/p&gt;&lt;p style="clear:both;"&gt;De los recursos de podcasts y video, gratuitos y de paga puedo recomendar:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://peepcode.com/"&gt;Peepcode&lt;/a&gt; $$, tiene por ahí varios vídeos básicos para aprender Rails&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://tekpub.com/"&gt;Tekpub&lt;/a&gt; $$, hay 2 series de videos una sobre Rails y otra sobre Sinatra y Rack&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://rubyonrails.org/screencasts/rails3"&gt;Rails3 de Gregg Pollack&lt;/a&gt;, videos con lo nuevo sobre Rails3&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://railscasts.com/"&gt;Railscasts&lt;/a&gt;, los videos por excelencia sobre Rails&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://sdruby.org/podcast"&gt;SDRuby&lt;/a&gt;, videos de las sesiones de la comunidad de Ruby en San Diego CA&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://ruby5.envylabs.com/"&gt;Ruby5&lt;/a&gt;, el mejor podcast sobre Ruby&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://confreaks.net/events"&gt;Confreaks&lt;/a&gt;, videos de diversas conferencias de Ruby y Rails&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Por ultimo y porque aun hay tiempo, bueno no mucho, &lt;a rel="nofollow" target="_blank" href="http://magmarails.com/"&gt;Magma Rails&lt;/a&gt; es la primera - creo - conferencia de Rails en México y al parecer van a tener varias sesiones interesantes.&lt;/p&gt;&lt;p style="clear:both;"&gt;Como dije al principio no hay una receta especifica, pero si hay muchos recursos en Internet sobre Ruby y Rails, aunque la mayoría en ingles.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;strong&gt;NOTA: En los comentarios me han pasado algunas referencias en español para comenzar en Rails.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Antonio me hace referencia &lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://railstutorial.org/book"&gt;&lt;strong&gt;RailsTutorial&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, el cual es un buen libro en linea&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Obelich recomienda "&lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://yottabi.com/mld.pdf"&gt;&lt;strong&gt;El maldito libro de los descarrilados&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;" ademas de recomendar la comunidad &lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://guateonrails.com/"&gt;&lt;strong&gt;GuateOnRails&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; de Guatemala y su curso de &lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://guateonrails.com/2010/02/screncast-curso-ruby-dia-1-cursorubygt/"&gt;&lt;strong&gt;Rails&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;. Tambien recomienda &lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://es.asciicasts.com/"&gt;&lt;strong&gt;ASCII Casts en Español&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; y un &lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://rubytutorial.wikidot.com/"&gt;&lt;strong&gt;tutorial de Ruby&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;Por otro lado desde algunas semanas me ha estado rondando la inquietud de hacer un taller de Ruby y Rails de unas 3 o 4 sesiones donde podamos aprender y construir aplicaciones, pero de momento no se que tanto interés habría aquí en la ciudad.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-2544928696668149873?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/oQ9be0QATtg" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-2544928696668149873</guid>
         <pubDate>Tue, 05 Oct 2010 17:38:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/10/como-iniciarse-en-rubyrails.html</feedburner:origLink></item>
      <item>
         <title>Workshop: Desarrollo ágil de software en .NET, Primera parte – BDD</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/rjJhAPduOi4/</link>
         <description>Mañana martes 5 de octubre de 2010 estaré presentando la primera sesión de una serie de 3 en un workshop sobre “Desarrollo ágil de software en .NET”. Esta sesión se podrá atender tanto presencial como virtualmente. Este evento se realizará en las instalaciones de Microsoft Colombia en la ciudad de Bogotá en la Carrera 7 [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=270</guid>
         <pubDate>Mon, 04 Oct 2010 19:36:50 +0000</pubDate>
         <content:encoded><![CDATA[<p><img src="http://specflow.org/getfile/47a9e6e0-33fd-4ed6-99a2-244855bdc7fd/step7.aspx" alt=""/></p>
<p>Mañana martes 5 de octubre de 2010 estaré presentando la primera sesión de una serie de 3 en un workshop sobre “Desarrollo ágil de software en .NET”. Esta sesión se podrá atender tanto presencial como virtualmente. Este evento se realizará en las instalaciones de Microsoft Colombia en la ciudad de Bogotá en la Carrera 7 # 71-21 torre B piso 15, a las 6:30 p.m. hora local, lo que corresponde con la hora internacional 23:30 UTC/GMT (meridiano 0), con una duración aproximada de 2 horas.</p>
<p>Esta primera sesión se titula “Desarrollo ágil de software en .NET: Behavior-Driven Development (BDD)” y se presentará en un modo introductorio, de tal manera que no es requisito tener bases de desarrollo ágil de software, es más bien para quienes desean iniciarse en él, conocen la plataforma .NET, Visual Studio y los principios básicos de desarrollo de software. la descripción es la siguiente:</p>
<blockquote><p>Desarrolle aplicaciones de calidad aplicando la metodología ágil BDD, que cubre todo el proceso básico de desarrollo de software, desde la captura efectiva de los requerimientos del cliente, que se traducen en pruebas de aceptación en el código y nos guían en la implementación del comportamiento de la aplicación que desarrollamos, de a pequeños incrementos, por medio de ejemplos de prueba. Crearemos una aplicación de negocios del mundo real, en C# usando los recursos que nos provee la plataforma .NET, que a su vez constituirá una pequeña aplicación de referencia y ejemplo que publicaremos como open source para la comunidad, en codeplex.com.</p></blockquote>
<p>Quienes deseen asistir presencialmente deberán inscribirse mediante un formulario de <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032461765">registro para evento presencial</a> y los que deseen atender virtualmente (mediante Live Meeting) deberán usar este otro formulario de <a rel="nofollow" target="_blank" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032462241&amp;EventCategory=4">registro para Webcast</a>.</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/LS0MBxgp7MM" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/rjJhAPduOi4" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/LS0MBxgp7MM/</feedburner:origLink></item>
      <item>
         <title>Podcast sobre Behavior-Driven Development (BDD) en 32MINUTOS.NET</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/f1EcE5B4Sdg/</link>
         <description>El pasado 20 de septiembre de 2010 fue publicada la grabación de una sesión de audio del podcast 32MINUTOS.NET en la que el tema discutido fue uno que en lo personal me apasiona bastante y sobre el cual cada día aprendo más, Behavior-Driven Development (BDD) , que tiene como objetivo diseñar e implementar buen código, [...]</description>
         <guid isPermaLink="false">http://www.jorgegamba.com/blog/?p=268</guid>
         <pubDate>Mon, 04 Oct 2010 18:59:55 +0000</pubDate>
         <content:encoded><![CDATA[<p><img src="http://www.masternewmedia.org/images/podcast_recording_editing_tools.jpg" alt=""/></p>
<p>El pasado 20 de septiembre de 2010 fue publicada la grabación de una sesión de audio del podcast <a rel="nofollow" target="_blank" href="http://32minutos.net/index.php">32MINUTOS.NET</a> en la que el tema discutido fue uno que en lo personal me apasiona bastante y sobre el cual cada día aprendo más, <a rel="nofollow" target="_blank" href="http://behaviour-driven.org/">Behavior-Driven Development</a> (BDD) , que tiene como objetivo diseñar e implementar buen código, mediante la creación, en el mismo código tal vez por medio de una herramienta de software, de especificaciones (pruebas o ejemplos) automatizadas, que resultan de la definición de historias de usuario descompuestas en criterios de aceptación, que también pueden constituir las pruebas de la aplicación desarrollada.</p>
<p>Esta sesión de charla o discusión surgió del intercambio de opiniones por correo electrónico con <a rel="nofollow" target="_blank" href="http://hadihariri.com/">Hadi Hariri</a>, quien también es especialista en la materia, y al tornarse interesantes y extensas estas opiniones, acordamos pasar a algo más fluido y que pudiera servir de utilidad para la comunidad de desarrolladores, así que decidimos grabar la discusión de voz, a lo que se sumó <a rel="nofollow" target="_blank" href="http://dvilchez.net">David Vílchez</a>, quien no solo hizo las veces de moderador y participó asumiendo el papel de recién iniciado en el tema; a ellos muchas gracias. La grabación quedó publicada en la página <a rel="nofollow" target="_blank" href="http://32minutos.net/component/content/article/34-general/59-bdd.html">01&#215;02 BDD con Jorge Gamba</a>.</p>
<img src="http://feeds.feedburner.com/~r/JorgeGamba/~4/TFQQYX7RoC8" height="1" width="1"/><img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/f1EcE5B4Sdg" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://feedproxy.google.com/~r/JorgeGamba/~3/TFQQYX7RoC8/</feedburner:origLink></item>
      <item>
         <title>Heroku y MongoHQ con Mongoid en Rails3</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/5FXuFczI5CI/heroku-y-mongohq-con-mongoid-en-rails3.html</link>
         <description>&lt;p style="clear:both;"&gt;He tenido la necesidad de mostrarle en linea a un cliente un prototipo de una aplicación Rails3 que usa MongoDB como base de datos, para mi la opción por excelencia para estos prototipos es usar &lt;a rel="nofollow" target="_blank" href="http://heroku.com/"&gt;Heroku&lt;/a&gt;, un hosting de aplicaciones en la nube para Rails muy fácil de usar. &lt;/p&gt;&lt;p style="clear:both;"&gt;Lo interesante de Heroku es que tiene cuentas gratuitas - aunque con ciertas limitaciones -, que son perfectas para mi propósito. (En la primera reunión de @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/tijuanarb"&gt;tijuanarb&lt;/a&gt;, @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/bitfon"&gt;bitfon&lt;/a&gt; platico sobre Heroku).&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh3.ggpht.com/_COcsfdYwI20/TKIqADNEeZI/AAAAAAAAFfo/vFbG9p4B0H4/s800/Heroku___Ruby_Cloud_Platform_as_a_Service-thumb.png" height="163" width="380" style="text-align:center;display:block;margin:0 auto 10px;"/&gt;Pero Heroku no tiene soporte directo para bases de datos MongoDB, aunque si ofrece un addon para integrarse con &lt;a rel="nofollow" target="_blank" href="https://mongohq.com/home"&gt;MongoHQ&lt;/a&gt;, servicio también en la nube para este tipo de base de datos, y al igual que Heroku, también tiene cuentas gratuitas, excelente también para prototipos. (También en la primera reunión de @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/tijuanarb"&gt;tijuanarb&lt;/a&gt;, @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/fcastellanos"&gt;fcastellanos&lt;/a&gt; hablo sobre MongoDB)&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh6.ggpht.com/_COcsfdYwI20/TKIqEpppZJI/AAAAAAAAFfw/8oXz1Yd10HA/s800/MongoHQ_-_The_cloud-based_hosted_database_solution_for_MongoDB-thumb..png" height="211" width="380" style="text-align:center;display:block;margin:0 auto 10px;"/&gt;Hasta aqui todo bien, mi detalle vino al revisar la documentación de Heroku de como configurar la conexión a MongoHQ, ya que se requiere de una variable ambiente MONGOHQ_URL donde se coloca una URL que MongoHQ proporciona para cada base de datos, la forma de agregar esta variable en nuestra aplicación de Heroku es la siguiente:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;$ heroku config:add MONGOHQ_URL="mongodb://mi-url-de-la-db-que-me-dio-mongohq"&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;&lt;strong&gt;Nota: a comentario de @&lt;/strong&gt;&lt;a rel="nofollow" target="_blank" href="http://twitter.com/fcastellanos"&gt;&lt;strong&gt;fcastellanos&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;, a la url de MongoHQ ha que agregarle el usuario y clave que tiene acceso a la base de datos, ejemplo:&lt;/strong&gt;&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ heroku config:add MONGOHQ_URL="&lt;a rel="nofollow"&gt;mongodb://[usuario]:[password]@[url_mongohq]&lt;/a&gt;"&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Mi detalle viene a partir de que la documentación de Heroku no indica ningún paso adicional para configurar MongoID, la libreria de Ruby que mi aplicación usa para comunicarse con una base de datos MongoDB, sin embargo si hay pasos adicionales para otras librerías similares.&lt;/p&gt;&lt;p style="clear:both;"&gt;Así que asumí que todo estaba bien, me conecto a la aplicación y me indica un error, al revisar el log veo que no encuentra la base de datos, por lo tanto al parecer MongoID no estaba haciendo uso de la variable de ambiente MONGOHQ_URL.&lt;/p&gt;&lt;p style="clear:both;"&gt;Revisando el archivo config/mongoid.yml donde se configura la base de datos veo que espera obtener los valores de varias variables de ambiente:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt; host: &lt;/p&gt;&lt;p style="clear:both;"&gt; port: &lt;/p&gt;&lt;p style="clear:both;"&gt; username: &lt;/p&gt;&lt;p style="clear:both;"&gt; password: &lt;/p&gt;&lt;p style="clear:both;"&gt; database: &lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Así que lo que procedí a hacer es cargar esas variables al momento de iniciar mi aplicación para esto modifique el archivo config/applicacion.rb y justo a partir de la segunda linea y antes de los "require" agregue el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;# MongoHQ Setup&lt;/p&gt;&lt;p style="clear:both;"&gt;require 'uri'&lt;/p&gt;&lt;p style="clear:both;"&gt;if ENV["MONGOHQ_URL"]&lt;/p&gt;&lt;p style="clear:both;"&gt; mongo_uri = URI.parse(ENV["MONGOHQ_URL"])&lt;/p&gt;&lt;p style="clear:both;"&gt; ENV["MONGOID_HOST"] = mongo_uri.host&lt;/p&gt;&lt;p style="clear:both;"&gt; ENV["MONGOID_PORT"] = mongo_uri.port.to_s&lt;/p&gt;&lt;p style="clear:both;"&gt; ENV["MONGOID_USERNAME"] = mongo_uri.user&lt;/p&gt;&lt;p style="clear:both;"&gt; ENV["MONGOID_PASSWORD"] = mongo_uri.password&lt;/p&gt;&lt;p style="clear:both;"&gt; ENV["MONGOID_DATABASE"] = mongo_uri.path.gsub("/", "")&lt;/p&gt;&lt;p style="clear:both;"&gt;end&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Después de esto, volví a lanzar mi aplicación y ahí estaba finalmente funcionando, por fin Heroku y MongoHQ estaban trabajando juntos.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-7724595050073731596?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/5FXuFczI5CI" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-7724595050073731596</guid>
         <pubDate>Tue, 28 Sep 2010 10:47:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh3.ggpht.com/_COcsfdYwI20/TKIqADNEeZI/AAAAAAAAFfo/vFbG9p4B0H4/s72-c/Heroku___Ruby_Cloud_Platform_as_a_Service-thumb.png" width="72" />
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/heroku-y-mongohq-con-mongoid-en-rails3.html</feedburner:origLink></item>
      <item>
         <title>Manos, un framework ligero para aplicaciones web en .NET/Mono</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ZgSxTBUQyXU/manos-un-framework-ligero-para.html</link>
         <description>&lt;p style="clear:both;"&gt;Hace unos días platicando con @&lt;a rel="nofollow" target="_blank" href="http://www.twitter.com/fcastellanos"&gt;fcastellanos&lt;/a&gt;, me hizo notar un nuevo framework para el desarrollo de aplicaciones web para .NET/Mono, el framework es &lt;a rel="nofollow" target="_blank" href="http://github.com/jacksonh/manos"&gt;Manos&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;Manos esta siendo desarrollado por el hacker de Mono &lt;a rel="nofollow" target="_blank" href="http://twitter.com/jacksonh"&gt;Jackson Harper&lt;/a&gt;, quien comenta en su &lt;a rel="nofollow" target="_blank" href="http://jacksonh.tumblr.com/post/1159500924/manos-de-mono-the-manifesto"&gt;manifesto&lt;/a&gt; que le gusta desarrollar aplicaciones web y le gusta el lenguaje C#, pero no le gusta ASP.NET, cree que ASP.NET en general hace que las cosas sencillas sean muy complicadas y por eso decidió crear Manos y dejar a ASP.NET fuera de la ecuación.&lt;/p&gt;&lt;p style="clear:both;"&gt;Los objetivos de Manos es ser un framework:&lt;br /&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;Escalable y de alto rendimiento&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Con un sistema "pipes" que permita conectarse y extender cualquier punto de la solicitud HTTP&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un sistema de rutas facil y simple, por medio de concordancia de texto y expresiones regulares&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Auto conversion de parámetros en la ruta o post&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Que funcione con HTML5 por omisión&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un sistema de plantillas basado en HTML&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Linea de comando simple para la creación de aplicaciones, construcción y "hosteo" de aplicaciones, sin necesidad de IDEs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Basado en la reutilizacion de componentes, modular y facil de probar.&lt;/li&gt;&lt;/ul&gt;Si estuviese leyendo estos puntos y no sabría que se esta hablando de C# y .NET, pensaría que me están describiendo &lt;a rel="nofollow" target="_blank" href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt; y muy probablemente la combinación con &lt;a rel="nofollow" target="_blank" href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/a&gt;, pero no es así.&lt;/p&gt;&lt;p style="clear:both;"&gt;Estuve viendo los ejemplos y no puedo evitar pensar en términos de Rack/Sinatra, por ejemplo:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ manos -init myapp # Crea un directorio con mi aplicación con jquery, algunos css y el modulo .cs&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;En nuestro modulo podremos escribir nuestra aplicación "Hola mundo" tan fácil como:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;Get ("/", ctx =&amp;gt; ctx.Response.Write("Hola mundo!"));&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Lo compilamos, por ejemplo con Mono:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ gmcs -target:library -out:myapp.dll myapp.cc StaticContectModule.cs&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Y finalmente dentro del directorio ejecutamos&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ manos -server&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Navegamos a localhost:8080 y nuestra aplicación debe de responder.&lt;/p&gt;&lt;p style="clear:both;"&gt;Increíblemente sencillo y facil, en el sitio de &lt;a rel="nofollow" target="_blank" href="http://github.com/jacksonh/manos"&gt;Github&lt;/a&gt; hay un ejemplo mas elaborado, junto con 2 tutoriales sobre Manos, &lt;a rel="nofollow" target="_blank" href="http://github.com/jacksonh/manos/blob/master/docs/tutorial/page-1.md"&gt;tutorial1&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://github.com/jacksonh/manos/blob/master/docs/tutorial/page-2.md"&gt;tutorial2&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;Por cierto Manos es Open Source con licencia MIT X11, bastante permisiva.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-2748884372818009535?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ZgSxTBUQyXU" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-2748884372818009535</guid>
         <pubDate>Sun, 26 Sep 2010 12:27:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/manos-un-framework-ligero-para.html</feedburner:origLink></item>
      <item>
         <title>Reunion del grupo tijuana.rb</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/PdfEueJZJr4/reunion-del-grupo-tijuanarb.html</link>
         <description>&lt;p style="clear:both;"&gt;El dia de ayer miércoles, se llevo a cabo la 1ra reunion de grupo de usuario de ruby/rails tijuana.rb, en la cual Sergio Lopez (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/bitfon"&gt;bitfon&lt;/a&gt;) habló sobre Heroku y el flujo de trabajo para publicar aplicaciones en ruby en la nube y Fernando Castellanos (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/fcastellanos"&gt;fcastellanos&lt;/a&gt;) sobre mongodb y como usarla en Rails.&lt;/p&gt;&lt;p style="clear:both;"&gt;El lugar fue la parte exterior del Starbucks Lucerna en zona rio, y tengo que admitirlo llego mucha mas gente de la esperada, en un punto éramos alrededor de 15 o poco mas, y aunque las condiciones del lugar no fueron las optimas - no nos alcanzo el espacio donde estábamos -, creo que estuvo bastante bien para la primera reunión. Así que para la siguiente reunión vamos a tratar de tener un lugar adecuado.&lt;/p&gt;&lt;p style="clear:both;"&gt;Ambas platicas interesantes y con muchas preguntas por parte de los asistentes.&lt;/p&gt;&lt;p style="clear:both;"&gt;En la reunion tambien nos acompañaron Jed Sundwall (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/jedsundwall"&gt;jedsundwall&lt;/a&gt;), Edward O'Connor (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/hober"&gt;hober&lt;/a&gt;) y Patrick Crowley (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/mokolabs"&gt;mokolabs&lt;/a&gt;) del grupo de @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/SDRuby"&gt;SDRuby&lt;/a&gt; y SANDPYT - San Diego Phyton -. Y aunque solo uno de ellos hablaba español participaron de manera activa; y trajeron algunos regalos para rifar con los asistentes.&lt;/p&gt;&lt;p style="clear:both;"&gt;De lo interesante de que ellos nos acompañaran, es que tuve la oportunidad de platicar con Patrick, y salió la posibilidad de realizar eventos en conjunto, ya sea aqui en Tijuana o San Diego, lo cual es de lo mas interesante. De entrada ya veremos la posibilidad de realizar un "carpool" para asistir a la próxima reunión de @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/SDRuby"&gt;SDRuby&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;Gracias a los que asistieron y esperamos verlos el siguiente mes, con mejores condiciones de espacio y gracias a @&lt;a rel="nofollow" target="_blank" href="http://www.twitter.com/bitfon"&gt;bitfon&lt;/a&gt; y @&lt;a rel="nofollow" target="_blank" href="http://www.twitter.com/fcastellanos"&gt;fcastellanos&lt;/a&gt; por su participación.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh5.ggpht.com/_COcsfdYwI20/TJtrQuoTpKI/AAAAAAAAFew/iBnilxUUo78/s800/6het-thumb.jpg" height="283" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh4.ggpht.com/_COcsfdYwI20/TJtrSogWTWI/AAAAAAAAFe4/jdpcWwU2tE8/s800/166346306-thumb.jpg" height="283" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh4.ggpht.com/_COcsfdYwI20/TJtrVK7UzEI/AAAAAAAAFfA/jfemp-x7CK4/s800/1-thumb.jpg" height="283" align="left" width="379" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh5.ggpht.com/_COcsfdYwI20/TJtrXSIw_SI/AAAAAAAAFfI/fCNWj-uRyJA/s800/166361369-thumb.jpg" height="285" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh6.ggpht.com/_COcsfdYwI20/TJtrYmN43TI/AAAAAAAAFfQ/dXcw23wkRoE/s800/166436362-thumb.jpg" height="285" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh4.ggpht.com/_COcsfdYwI20/TJtrahpKvHI/AAAAAAAAFfY/nuIxEhlS9Ug/s800/ikkl-thumb.jpg" height="283" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;img src="http://lh3.ggpht.com/_COcsfdYwI20/TJtrcD_fm-I/AAAAAAAAFfg/YjZ-vJPuYh4/s800/ip4h-thumb.jpg" height="285" align="left" width="380" style="display:inline;float:left;margin:0 10px 10px 0;"/&gt;&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-1219493947103806781?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/PdfEueJZJr4" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-1219493947103806781</guid>
         <pubDate>Thu, 23 Sep 2010 08:00:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/_COcsfdYwI20/TJtrQuoTpKI/AAAAAAAAFew/iBnilxUUo78/s72-c/6het-thumb.jpg" width="72" />
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/reunion-del-grupo-tijuanarb.html</feedburner:origLink></item>
      <item>
         <title>Calcular fechas laborables con Ruby</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ZW6IFGkEvFM/calcular-fechas-laborables-con-ruby.html</link>
         <description>&lt;p style="clear:both;"&gt;Hoy me encontré con este post llamado "&lt;a rel="nofollow" target="_blank" href="http://weblogs.asp.net/hajan/archive/2010/09/22/calculate-business-days-using-linq.aspx"&gt;Calculate Business Days using LINQ&lt;/a&gt;" donde explican como usar C# y LINQ para de un rango de fechas obtener solo las fechas que son laborables, es decir excluir las fechas que caigan en sábado y domingo.&lt;/p&gt;&lt;p style="clear:both;"&gt;El código se muestra a continuación donde se haca primero una llamada al método &lt;strong&gt;GetAllDates&lt;/strong&gt; y se le pasa una fecha inicial y otra final, después con &lt;strong&gt;Where&lt;/strong&gt; de LINQ se evalúa cada fecha un método que regresa falso o verdadero si la fecha cae en fin de semana o no, obteniendo al fina un arreglo con las fechas laborables.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;Después de revisarlo, me pregunte, que tan complicado es hacer lo mismo en Ruby. Después de unos minutos me di cuenta que es ridículamente simple hacer lo mismo que LINQ y C# en solo 1 linea de código.&lt;/p&gt;&lt;p style="clear:both;"&gt;A mi metodo &lt;strong&gt;wroking_days&lt;/strong&gt; se le pasa una fecha inicial y una fecha final y como resultado tenemos una arreglo de fechas excluyendo las que caen en fin de semana.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;&lt;br /&gt;&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-8225940498092709648?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ZW6IFGkEvFM" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-8225940498092709648</guid>
         <pubDate>Wed, 22 Sep 2010 16:00:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/calcular-fechas-laborables-con-ruby.html</feedburner:origLink></item>
      <item>
         <title>La complejidad de Ruby On Rails</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/vp9Rl5-EKC0/la-complejidad-de-ruby-on-rails.html</link>
         <description>&lt;p style="clear:both;"&gt;A raíz de mi &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2010/09/aplicacion-de-rails-3-con-mongodb.html"&gt;post anterior&lt;/a&gt; y algunos comentarios expresados en él acerca de la complejidad para tener una aplicación de Ruby On Rails funcionando con MongoDB, he decidido escribir este post, el cual lo voy a tratar desde la vista de un ex(o casi)-desarrollador de .NET y aunque quizás algunos de mis comentarios parezcan un ataque a un .NET, no es esa mi intención, así que por favor tomenlos relajados. Ni tampoco es mi intención decir cual es mejor o cual es peor, ese es un ejercicio que cada quien forma personal debe de realizar&lt;/p&gt;&lt;p style="clear:both;"&gt;Comencé a desarrollar en .NET desde las versiones beta del mismo, ya hace mas de 10 años, e inclusive desarrolle para Web desde antes, ya sea con código escrito en C a modo de cgi-bin o Perl, al igual me toco desarrollar para Web en Visual Basic 4 - 6. En esos tiempos era realmente algo complejo hacer paginas dinámicas y era muy sencillo tomar decisiones incorrectas y hacer que el desarrollo se complicara enormemente.&lt;/p&gt;&lt;p style="clear:both;"&gt;Con la llegada de .NET Microsoft proponía otro paradigma un tanto diferente de como desarrollar a Web, proponía hacerlo tal y como se escribían aplicaciones de escritorio, solo haciendo "drag and drop", "right click", configurar aqui y alla y listo, tener aplicaciones sin - o casi sin - escribir una linea de código, digo cuantas veces no hemos visto a empleados de Microsoft haciendo este tipo de demos en eventos de la empresa.&lt;/p&gt;&lt;p style="clear:both;"&gt;Desde mi punto de vista - si desde mi punto de vista y experiencia - esto funcionada super bien para aplicaciones muy simples y predecibles, mi problema siempre venia cuando se quería hacer "algo mas" con la aplicación, la complejidad de desarrollo iba en aumento y en ocasiones se convertía en algo nada trivial. Durante ese tiempo también me toco hacer desarrollo con Java, varios frameworks para Web y Tomcat, y la experiencia no fue mejor.&lt;/p&gt;&lt;p style="clear:both;"&gt;Llego un punto en el cual casi casi decidí dejar de escribir aplicaciones para Web y únicamente escribir aplicaciones para escritorio, pero los clientes seguían solicitando aplicaciones Web, así que busque alternativas en .NET - PHP realmente nunca me gusto ni me gusta, quizás no tengo argumentos técnicos para decir porque, simplemente no me gusta -.&lt;/p&gt;&lt;p style="clear:both;"&gt;La alternativa que encontre fue &lt;a rel="nofollow" target="_blank" href="http://www.castleproject.org/MonoRail/"&gt;MonoRail&lt;/a&gt;, comencé a ver los ejemplos y a entender sus dependencias, MonoRail es un framework para ASP.NET que trabaja con los patrones de &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2008/09/programacin-web-patrn-mvc.html"&gt;MVC y ActiveRecord&lt;/a&gt;, inspirado por Action Pack. Al investigar que es Action Pack, descubrí &lt;a rel="nofollow" target="_blank" href="http://rubyonrails.org/"&gt;Ruby On Rails&lt;/a&gt;, pero en ese momento le encontre un problema, tenia que aprender otro lenguaje de programación y tenia algunas semanas para entregar una aplicación Web para un cliente.&lt;/p&gt;&lt;p style="clear:both;"&gt;Así que me decidi por MonoRail, pero había algunos "detalles", tenia muchas dependencias, no tenia "Wizards" ni componentes o controles como se les llama en ASP.NET WebForms, en lo personal no lo vi como problema ya que en lo personal es raro que use los "Wizards" o que utilice controles de 3ros, así que para mi no había perdida ahí, aunque si me ha tocado conocer y dar cursos a desarrolladores de .NET que si no tiene un "Wizard" o no pueden poner su "Grid" súper "fancy" no son capaces de desarrollar una aplicación.&lt;/p&gt;&lt;p style="clear:both;"&gt;Por otro lado, si bien la configuración de un ambiente de trabajo con MonoRail requeria de un poco de trabajo y entendimiento por arriba de "Drag and Drop" y "Right click", no me pareció gran cosa y mas cuando es algo que solo haces una sola vez. MonoRail me permitió entregar varias aplicaciones de manera muy rápida, quede impresionado y eso me llevo a investigar sobre Ruby On Rails. Por cierto hace algunos días anunciaron, parte de "&lt;a rel="nofollow" target="_blank" href="http://hammett.castleproject.org/"&gt;Roadmap&lt;/a&gt;" de MonoRail.&lt;/p&gt;&lt;p style="clear:both;"&gt;El motivo por el cual MonoRail me permitió entregar aplicaciones muy rápido fue porque no tuve que tomar decisiones, MonoRail lo hizo por mi, por ejemplo no tuve que decidir como organizar mi aplicación, no tuve que decidir como conectarme a la base de datos, todo lo decidió MonoRail, así solo tuve que enfocarme en la funcionalidad que era importante para mis clientes y ya. MonoRail al igual que Ruby on Rails es &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/802050/what-is-opinionated-software"&gt;opinioted software&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;Al llegar a Ruby on Rails, obviamente la primera barrera fue el lenguaje Ruby, pero es muy facil acostumbrarse a el, aunque todavia escribo código a la C#, pero creo que voy mejorando.&lt;/p&gt;&lt;p style="clear:both;"&gt;Para la gente acostumbrada a los IDEs hay una gran variedad de &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2010/03/curso-de-ruby-on-rails-en-tijuana.html"&gt;opciones&lt;/a&gt; a elegir, en lo personal no soy fan de las IDEs, prefiero ambientes mas ligeros y que me hagan usar la consola de comandos, por lo tanto en Windows se puede seguir esta &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2008/11/instalando-ruby-on-rails-la-mac-en.html"&gt;guia&lt;/a&gt; y en Linux estas &lt;a rel="nofollow" target="_blank" href="http://www.pablasso.com/2009/01/12/&amp;#xbf;como-instalar-ruby-on-rails-en-ubuntu"&gt;dos&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://grigio.org/pimp_my_gedit_was_textmate_linux"&gt;guias&lt;/a&gt;, puede parecer complicado, pero es algo que solo se tiene que hacer una vez, si se usa un IDE en cuestión de minutos se tiene un ambiente complete y configurado.&lt;/p&gt;&lt;p style="clear:both;"&gt;Es muy sencillo crear una nueva aplicación con Ruby On Rails (RoR) haciendo uso de las decisiones que el framework hace por nosotros, por ejemplo:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ rails new mi_super_app&lt;/p&gt;&lt;p style="clear:both;"&gt;$ cd mi_super_app&lt;/p&gt;&lt;p style="clear:both;"&gt;$ rails generate scaffold client name:string, address:string&lt;/p&gt;&lt;p style="clear:both;"&gt;$ rails server&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Dirigimos nuestro navegador a http://localhost:3000/clients y listo ya podemos comenzar a dar de alta y modificar clientes, simple, fácil y rápido.&lt;/p&gt;&lt;p style="clear:both;"&gt;Si bien esto funcionara tal y como esta en un gran numero de casos, la gente en RoR pensamos en la regla 80/20, hay momentos en que se tiene que hacer algo un poco diferente para configurar nuestra aplicación, donde podemos cambiar las decisiones que RoR hace por nosotros y adaptarlas al 100% de nuestras necesidades, como las modificaciones propuestas en mi &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2010/09/aplicacion-de-rails-3-con-mongodb.html"&gt;post&lt;/a&gt; para usar MongoDB en lugar de una base de datos relacional.&lt;/p&gt;&lt;p style="clear:both;"&gt;Si bien la intención de mi post es servir como una guia o receta, paso a paso de como hacerlo, también podemos hacerlo sencillo con el uso de &lt;a rel="nofollow" target="_blank" href="http://m.onkey.org/2008/12/4/rails-templates"&gt;Templates&lt;/a&gt; - así como existen también templates en Visual Studio para crear aplicaciones con ciertas características y defaults -, en e siguiente &lt;a rel="nofollow" target="_blank" href="http://railscasts.com/episodes/148-app-templates-in-rails-2-3"&gt;video&lt;/a&gt; de &lt;a rel="nofollow" target="_blank" href="http://railscasts.com"&gt;Railscasts&lt;/a&gt; se explica el concepto. De hecho existe ya un &lt;a rel="nofollow" target="_blank" href="http://github.com/mariochavez/rails-templater"&gt;template&lt;/a&gt; para pre-configurar una aplicación de RoR para usar MongoDB y Rspec, con el cual se puede omitir mi post y solo ejecutar:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;$ rails new mi_super_app -JOT -m ~/path_a/mongodb_template/templater.rb&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Ya viendolo así, ¿ya no se ve que sean muchos pasos no?&lt;/p&gt;&lt;p style="clear:both;"&gt;Sobre el tema de las dependencias, al igual que en cualquier otro framework o lenguaje podemos tener dependencias a librerías de terceros o podemos elegir no hacerlo. En el caso de Ruby y sus diferentes frameworks, hay librerías para casi todo lo que nos podamos imaginar, &lt;a rel="nofollow" target="_blank" href="http://rubygems.org/"&gt;RubyGems&lt;/a&gt; es un buen lugar para descubrirlas y &lt;a rel="nofollow" target="_blank" href="http://gembundler.com/"&gt;Bundler&lt;/a&gt; nos permite manejar esas dependencias de forma sencilla y a nivel aplicaciones, es decir podemos tener la misma dependencia pero hacia diferentes versiones de la librería sin conflictos, no hay "&lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/DLL_hell"&gt;DLL Hell&lt;/a&gt;".&lt;/p&gt;&lt;p style="clear:both;"&gt;Para determinar como elegir que dependencias tener en nuestra aplicación, va en relación directa de nuestras necesidades, pero creo que puedo sumarizar algunos criterios:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;Librerías que fueron extraídas del framework de RoR&lt;/li&gt;&lt;li&gt;Librerías mantenidas por miembros del equipo de desarrollo de RoR&lt;/li&gt;&lt;li&gt;Librerías que son tan viejas como el mismo framework de RoR y que evolucionan paralelamente&lt;/li&gt;&lt;li&gt;Librerías mantenidas por empresas de desarrollo en RoR&lt;/li&gt;&lt;li&gt;Librerías populares y que tengan pruebas&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Con respecto al soporte de los librerías disponibles en Ruby, este varia, pero el común denominador es que son OSS y el código de casi todas esta disponible en &lt;a rel="nofollow" target="_blank" href="http://www.github.com"&gt;Github&lt;/a&gt;. En experiencia personal no he tenido problemas con esto, ya que a través de los grupos, IRC, reportando bugs o correo directo he tenido solución cuando se me ha presentado algún problema, inclusive, he enviado parches que han sido aceptados y generalmente la corrección a mi problema puede llevar algunas horas en lugar de tener que esperar días si fuese un bug en una librería comercial.&lt;/p&gt;&lt;p style="clear:both;"&gt;De las librerías que he utilizado realmente no me ha tocado alguna que pierda el soporte, cuando el desarrollador principal se retira generalmente sale alguien a continuar trabajando en ella, lo que si me ha tocado experimentar es el reemplazo de librerías por otras mejores, por ejemplo, cuando entre a RoR &lt;a rel="nofollow" target="_blank" href="http://github.com/technoweenie/restful-authentication/wiki"&gt;restful_authentication&lt;/a&gt; era "la librería" para el manejo y autentificacion de usuarios, posteriormente &lt;a rel="nofollow" target="_blank" href="http://github.com/binarylogic/authlogic"&gt;authlogic&lt;/a&gt; la reemplazo y actualmente &lt;a rel="nofollow" target="_blank" href="http://github.com/plataformatec/devise"&gt;devise&lt;/a&gt; es la librería popular, no es que las otras tengan algo malo o funcionen mejor o peor, es solo la manera en como evolucionan las cosas.&lt;/p&gt;&lt;p style="clear:both;"&gt;Creo que personalmente lo que encontre en RoR es que no me tengo que pelear contra el framework para poder entregarle aplicaciones a mis clientes, todo lo contrario, me puedo olvidar un poco del framework y dedicarme a implementar la funcionalidad que le da valor a mi trabajo.&lt;/p&gt;&lt;p style="clear:both;"&gt;Y afortunadamente puedo decir que aquí en Tijuana no he sido el único que ha encontrado este valor, ya que desde que comencé a platicar sobre RoR varios amigos implementaron soluciones para sus empresas y clientes de estas que están en linea y en tiempo record, y traen todavía mas proyectos nuevos que están siendo desarrollados en RoR, de mi parte igualmente tengo un par de proyectos en RoR que pronto verán "la luz", proyectos para mis clientes. Al mismo tiempo se de empresas que están tomando cursos y evaluando RoR para el desarrollo de nuevas versiones de sus productos, todo esto solo en Tijuana.&lt;/p&gt;&lt;p style="clear:both;"&gt;Creo que después de esta explicación algunos estarán de acuerdo conmigo y otros no, a final de cuentas debemos de ser apasionados con el lenguaje/framework que elijamos para trabajar, porque para bien o para mal a estos le vamos a dedicar nuestro tiempo laboral; pero el ser apasionados también implica el ser críticos de lo que usamos y si es posible conocer y probar otras herramientas, aunque si trabajamos para una empresa "casada" con una compañía/tecnología va a ser un poco difícil cambiar su visión, ya que generalmente se usan x tecnología por cuestión política o de mercadotecnia o gusto personal de la persona que toma las decisiones.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-684803955018052023?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/vp9Rl5-EKC0" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-684803955018052023</guid>
         <pubDate>Mon, 20 Sep 2010 11:25:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/la-complejidad-de-ruby-on-rails.html</feedburner:origLink></item>
      <item>
         <title>Aplicación de Rails 3 con MongoDB</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/IPdzTCULE34/aplicacion-de-rails-3-con-mongodb.html</link>
         <description>&lt;p style="clear:both;"&gt;En los últimos días he tenido que iniciar un par de proyectos en Ruby On Rails, donde la base de datos que se ha requerido es una base de datos no relacional, en este caso &lt;a rel="nofollow" target="_blank" href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt;.&lt;/p&gt;&lt;p style="clear:both;"&gt;La idea de este post es documentar la configuración de una nueva aplicación en Rails 3 para usar con MongoDB, donde vamos a desactivar ActiveRecord e instalar las siguientes herramientas:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;Generadores Rails para Mongo&lt;/li&gt;&lt;li&gt;Rspec para pruebas&lt;/li&gt;&lt;li&gt;Factory Girl para fixtures&lt;/li&gt;&lt;li&gt;Haml como plantilla de vistas y jQuery.&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Como paso inicial es necesario crear una nueva aplicación de Rails 3 - Se asume que ya se tiene instalado Rails 3 y MongoDB -, pero vamos a pasar las opciones -O para que no se creen archivos de ActiveRecord, -J para que no se instale la librería de javascript Prototype y -T para que no cree el fólder para Test::Unit&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;$ rails new mi_app -O -J -T&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;&lt;em&gt;&lt;strong&gt;Después de creada la aplicación, seria buena idea inicializar un repositorio de Git.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p style="clear:both;"&gt;Una vez creada nuestra aplicación hay que realizarle algunas adiciones nuestro archivo Gemfile para agregar las dependencias de nuestra aplicación:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;mongoid y bson_ext =&amp;gt; Mongoid es la librería que usaremos para conectarnos a la base de datos de MongoDB y bson_ext es una extensión en C para acelerar la serializacion de BSON&lt;/li&gt;&lt;li&gt;haml =&amp;gt; Lenguaje de plantilla alternativa para vistas en Rails, desde mi punto de vista menos verbal y mas "developer friendly" que html y erb.&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Dentro de un grupo llamado :development agregamos las siguientes gemas:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;rails3-generators =&amp;gt; varios generadores para Rails 3, lo que nos permite ejecutar rails generate &lt;/li&gt;&lt;li&gt;haml-rails =&amp;gt; generadores de haml para Rails 3&lt;/li&gt;&lt;li&gt;jquery-rails =&amp;gt; generadores de jquery para Rails 3&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;En el grupo :test agregamos:&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;rspec =&amp;gt; framework para pruebas en Ruby&lt;/li&gt;&lt;li&gt;rspec-rails =&amp;gt; utilerias para pruebas en RSpec para Rails&lt;/li&gt;&lt;li&gt;factory_girl_rails =&amp;gt; utileria para la creación de modelos para pruebas&lt;/li&gt;&lt;li&gt;remarkable_mongoid =&amp;gt; librería para pruebas de modelos de mongoid con RSpec&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;El archivo Gemfile debe de quedar como se muestra a continuación.&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;&lt;br /&gt;Para instalar las gemas solo ejecutamos&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;$ bundle install&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Para conocer mas de las gemas instaladas aquí les dejo los vínculos a sus referencias&lt;/p&gt;&lt;ul style="clear:both;"&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://mongoid.org/"&gt;mongoid&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://haml-lang.com/"&gt;haml&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/indirect/rails3-generators"&gt;rails3-generators&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/indirect/haml-rails"&gt;haml-rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/indirect/jquery-rails"&gt;jquery-rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://wiki.github.com/rspec/rspec/"&gt;rspec&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://wiki.github.com/rspec/rspec-rails/"&gt;rspec-rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/thoughtbot/factory_girl_rails"&gt;factory_girl_rails&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://github.com/bcardarella/remarkable_mongoid"&gt;remarkable_mongoid&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="clear:both;"&gt;Una vez instaladas las gemas hay que realizar algunas configuraciones, lo primero es configurar mongoid para trabajar con Rails y desactivar ActiveRecord, para eso ejecutamos el comando:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;$ rails generate mongoid:config&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Este comando va crear el archivo config/mongoid.yml donde vamos a configurar el acceso a la base de datos de MongoDB, también va a modificar el archivo config/application.rb y va a eliminar la dependencia de ActiveRecord, la parte superior de config/application.rb deberá quedar algo similar a:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;# require "active_record/railtie"&lt;/p&gt;&lt;p style="clear:both;"&gt;require "action_controller/railtie"&lt;/p&gt;&lt;p style="clear:both;"&gt;require "action_mailer/railtie"&lt;/p&gt;&lt;p style="clear:both;"&gt;require "active_resource/railtie"&lt;/p&gt;&lt;p style="clear:both;"&gt;#require "rails/test_unit/railtie"&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Ya que estamos en el archivo config/application.rb vamos indicandole a Rails que en nuestra aplicación deseamos usar haml, rspec y factory_girl por omisión, para esto dentro de la declaración de la clase Application &amp;lt; Rails::Application, pero al final agregamos el siguiente código&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;&lt;br /&gt;A partir de este punto instalamos el soporte para jQuery y Rspec en nuestra aplicación de la siguiente forma:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;$ rails generate jquery:install #--ui para activar jQuery UI&lt;/p&gt;&lt;p style="clear:both;"&gt;$ rails generate rspec:install &lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Como ultimo paso vamos configurar RSpec para que trabaje con factory_girl y remarkable, ademas de eliminar el soporte a ActiveRecord y hacer que RSpec elimine las colecciones creadas en MongoDB por nuestras pruebas antes de la ejecución de cada prueba, esto es necesario para asegurarnos que al correr cada prueba la base de datos este "limpia" y así no crear conflictos y/o dependencias en las pruebas.&lt;/p&gt;&lt;p style="clear:both;"&gt;Al inicio del archivo spec/spec_helper.rb hay que requerir:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;require 'factory_girl'&lt;/p&gt;&lt;p style="clear:both;"&gt;require 'remarkable/mongoid'&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Un poco mas abajo indicamos que cargue los archivos Factory de factory_girl&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p&gt;Dir[Rails.root.join("spec/factories/**/*.rb")].each {|f| require f}&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Después eliminamos el soporte a ActiveRecord comentando las siguientes lineas:&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt;config.fixture_path = "#{::Rails.root}/spec/fixtures"&lt;/p&gt;&lt;p style="clear:both;"&gt;config.use_transactional_fixtures = false&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;Y finalmente dentro y al final del bloque de configuración de RSpec indicamos que antes de cada prueba elimine las colecciones de MongoDB&lt;/p&gt;&lt;blockquote style="clear:both;"&gt;&lt;p style="clear:both;"&gt; config.before :each do&lt;/p&gt;&lt;p style="clear:both;"&gt; Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&amp;amp;:drop)&lt;/p&gt;&lt;p style="clear:both;"&gt; end&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="clear:both;"&gt;El archivo spec/spec_helper.rb deberá quedar muy parecido a&lt;/p&gt;&lt;p style="clear:both;"&gt;&lt;span style="display:inline;float:left;margin:0 10px 10px 0;"&gt;&lt;/span&gt;&lt;br style="clear:both;"/&gt;&lt;br /&gt;Una vez en este punto ya podemos proceder a crear nuestra súper aplicación usando MongoDB como base de datos, si ejecutamos el generador para model, o controller o scaffold, Rails 3 generara modelos para MongoDB o vistas en haml y creara los archivos necesarios en spec para realizar pruebas con RSpec.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-2860448152490868961?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/IPdzTCULE34" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-2860448152490868961</guid>
         <pubDate>Sat, 18 Sep 2010 00:06:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/aplicacion-de-rails-3-con-mongodb.html</feedburner:origLink></item>
      <item>
         <title>Primera Reunion de tijuana.rb</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/ohguztf4qAQ/primera-reunion-de-tijuanarb.html</link>
         <description>&lt;p style="clear:both;"&gt;&lt;img src="http://lh6.ggpht.com/_COcsfdYwI20/TI5FYhp1RjI/AAAAAAAAFeY/N3Un6cFhAG0/s800/tijuanarb-1-thumb.png" height="206" width="184" style="text-align:center;display:block;margin:0 auto 10px;"/&gt;Ven y asiste a la primera reunion del grupo de usuario Ruby/Rails de Tijuana, &lt;strong&gt;tijuana.rb&lt;/strong&gt;, este proximo miércoles 22 de Septiembre en el Starbucks Lucerna de la Zona Río, a partir de las 7pm. &lt;/p&gt;&lt;p style="clear:both;"&gt;En esta primera reunión, Sergio Lopez (@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/bitfon"&gt;bitfon&lt;/a&gt;) nos platicará sobre @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/heroku"&gt;heroku&lt;/a&gt;, un hosting para Ruby/Rails con cuentas gratuitas. &lt;s&gt;Estamos a la espera de la confirmación de una plática más&lt;/s&gt;. Fernando Castellanos(@&lt;a rel="nofollow" target="_blank" href="http://twitter.com/fcastellanos"&gt;fcastellanos&lt;/a&gt;) ya se apuntó con una platica sobre como usar MongoDB con Rails.&lt;/p&gt;&lt;p style="clear:both;"&gt;Para los que me han preguntado sobre como iniciar con Ruby, le dejo esta &lt;a rel="nofollow" target="_blank" href="http://bit.ly/bsIIBJ"&gt;liga&lt;/a&gt; a un post "larguísimo" que escribí con ejemplos y aunque es sobre IronRuby funciona igual con Ruby. Si alguien lo quiere ver en video &lt;a rel="nofollow" target="_blank" href="http://bit.ly/9S304S"&gt;aquí&lt;/a&gt; esta la sesión grabada en ALT.NET Hispano.&lt;br /&gt;&lt;br /&gt;Para estar al pendiente de lo que sucede con tijuana.rb únete al &lt;a rel="nofollow" target="_blank" href="http://bit.ly/ajuFZD"&gt;Google Group&lt;/a&gt; o sigue a @&lt;a rel="nofollow" target="_blank" href="http://twitter.com/tijuanarb"&gt;tijuanarb&lt;/a&gt; en twitter.&lt;/p&gt;&lt;br class='final-break' style='clear:both;'/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-2565564660292470088?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/ohguztf4qAQ" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-2565564660292470088</guid>
         <pubDate>Mon, 13 Sep 2010 08:38:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh6.ggpht.com/_COcsfdYwI20/TI5FYhp1RjI/AAAAAAAAFeY/N3Un6cFhAG0/s72-c/tijuanarb-1-thumb.png" width="72" />
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/09/primera-reunion-de-tijuanarb.html</feedburner:origLink></item>
      <item>
         <title>Recursos de ASP.NET MVC</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/OVhz6P5PXck/recursos-de-aspnet-mvc.html</link>
         <description>Debido a un posible próximo proyecto con un cliente, me solicito le pasara una lista de recursos para conocer ASP.NET MVC, ya que su idea original era realizar el proyecto con ASP.NET Webforms, pero después de hablarle un poco de MVC y realizarle algunos demos, su interés por el mismo crecio.&lt;br /&gt;&lt;br /&gt;De algunas de las platicas que tuve con él, al principio no estaba muy convencido, debido a que como él me lo comento "parece que en MVC tienes que hacer las cosas a mano", ya que no haríamos uso del "drag and drop" ni de la suite de controles web de Infragistics como él deseaba. Mis puntos para que se interesara en MVC fueron los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El patrón de MVC es una "receta" probada por varias décadas&lt;/li&gt;&lt;li&gt;El usar MVC generalmente implica el uso de otra serie de patrones adicionales para resolver otros problemas en la aplicación&lt;/li&gt;&lt;li&gt;Aplicando estas "recetas" ayuda a que el desarrollo de la aplicacion sea mas uniforme si se siguen ciertos lineamientos, los cuales creo que son mucho mas claros si los comparamos con una aplicacion de Webforms&lt;/li&gt;&lt;li&gt;El usar MVC crea una linea de complejidad de la aplicacion mas estable, la cual puede ser un poco alta para pequeños proyectos, mas no asi para medianos y grandes, donde esta complejidad es mas uniforme, en cambio con Webforms la complejidad si es muy baja en proyectos pequeños, pero esta se va incrementando casi exponencial con proyectos mas grandes.&lt;/li&gt;&lt;li&gt;Otro punto importante es que en MVC se puede desarrollar y probar funcionalidad de la aplicación de manera aislada, mediante el uso de tecnicas y herramientas como: mocks, stubs, TDD o BDD, lo que permite ir creando bloques estables de la aplicacion e irla creciendo organicamente.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;A final de cuentas, no se cual sea la decision del cliente con respecto al proyecto, espero me sea favorable, pero mientras tanto aqui les dejo el listado de recursos que le hice llegar sobre ASP.NET MVC esperando que les sirva de algo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Libros interesantes&lt;/div&gt;&lt;div&gt;- ASP.NET MVC in Action 1 y 2 &lt;a rel="nofollow" target="_blank" href="http://www.manning.com/palermo/"&gt;http://www.manning.com/palermo/&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://www.manning.com/palermo2/"&gt;http://www.manning.com/palermo2/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Brownfield Application Development in .NET &lt;a rel="nofollow" target="_blank" href="http://www.manning.com/baley/"&gt;http://www.manning.com/baley/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Herramientas y arquitectura&lt;/div&gt;&lt;div&gt;- SharpArchitecture, framework para MVC &lt;a rel="nofollow" target="_blank" href="http://sharparchitecture.net/"&gt;http://sharparchitecture.net/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- NHibernate, ORM para .NET &lt;a rel="nofollow" target="_blank" href="http://blogs.hibernatingrhinos.com/nhibernate/Default.aspx"&gt;http://blogs.hibernatingrhinos.com/nhibernate/Default.aspx&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Arquitectura de Cebolla, parte 1 y 2 &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2008/07/la-arquitectura-de-cebolla-parte-1.html"&gt;http://mario-chavez.blogspot.com/2008/07/la-arquitectura-de-cebolla-parte-1.html&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2008/08/la-arquitectura-de-cebolla-parte-2.html"&gt;http://mario-chavez.blogspot.com/2008/08/la-arquitectura-de-cebolla-parte-2.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- El patrón MVC &lt;a rel="nofollow" target="_blank" href="http://mario-chavez.blogspot.com/2008/09/programacin-web-patrn-mvc.html"&gt;http://mario-chavez.blogspot.com/2008/09/programacin-web-patrn-mvc.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Videos&lt;/div&gt;&lt;div&gt;- ASP.NET MVC &lt;a rel="nofollow" target="_blank" href="http://www.asp.net/mvc"&gt;http://www.asp.net/mvc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Comunidad ALT.NET Hispano &lt;a rel="nofollow" target="_blank" href="http://altnet-hispano.pbworks.com/Historial-de-reuniones"&gt;http://altnet-hispano.pbworks.com/Historial-de-reuniones&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Videos de MVCConf &lt;a rel="nofollow" target="_blank" href="http://www.viddler.com/explore/mvcconf/videos"&gt;http://www.viddler.com/explore/mvcconf/videos&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Comunidad C4MVC.NET &lt;a rel="nofollow" target="_blank" href="http://www.c4mvc.net/Home/Events"&gt;http://www.c4mvc.net/Home/Events&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Tekpub, videos de paga &lt;a rel="nofollow" target="_blank" href="http://tekpub.com/production/aspmvc"&gt;http://tekpub.com/production/aspmvc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recursos de sitios y páginas interesantes&lt;/div&gt;&lt;div&gt;- Blog de HeadSpring &lt;a rel="nofollow" target="_blank" href="http://www.headspringsystems.com/community/blogs/"&gt;http://www.headspringsystems.com/community/blogs/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Blog de Mario Cornejo &lt;a rel="nofollow" target="_blank" href="http://twitter.com/mhcornejo"&gt;@mhcornejo&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://www.developeando.com/search/label/ASP.NET%20MVC"&gt; http://www.developeando.com/search/label/ASP.NET%20MVC&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Links de Gabriel Flores &lt;a rel="nofollow" target="_blank" href="http://twitter.com/gabo"&gt;@gabo&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://delicious.com/gabofr/mvc"&gt;http://delicious.com/gabofr/mvc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Links de Mario Cornejo &lt;a rel="nofollow" target="_blank" href="http://twitter.com/mhcornejo"&gt;@mhcornejo&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://delicious.com/mhcornejo/mvc"&gt;http://delicious.com/mhcornejo/mvc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Links de Eber Irigoyen &lt;a rel="nofollow" target="_blank" href="http://twitter.com/ebersys"&gt;@ebersys&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://www.google.com/reader/shared/user/00321597721557820145/label/aspnetmvc"&gt; http://www.google.com/reader/shared/user/00321597721557820145/label/aspnetmvc&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- Anuncio de ASP.NET MVC 3 &lt;a rel="nofollow" target="_blank" href="http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx &lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9839491-7983265080052366574?l=mario-chavez.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/OVhz6P5PXck" height="1" width="1"/&gt;</description>
         <author>Mario Alberto Chavez</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-9839491.post-7983265080052366574</guid>
         <pubDate>Fri, 30 Jul 2010 16:59:00 +0000</pubDate>
      <feedburner:origLink>http://mario-chavez.blogspot.com/2010/07/recursos-de-aspnet-mvc.html</feedburner:origLink></item>
      <item>
         <title>Presentando Southworks Professional Improvement Program</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/y0F4LgKrejo/presentando-southworks-professional.html</link>
         <description>&lt;p&gt;Muchos de ustedes ya habrán leído sobre el proyecto Hogwarts en el &lt;a rel="nofollow" target="_blank" href="http://msmvps.com/blogs/lopez/archive/2010/03/26/hogwarts_2D00_project.aspx"&gt;blog del Maestro&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;La motivación de este proyecto es aportar a la comunidad las prácticas de desarrollo de software que creemos fundamentales en &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net"&gt;Southworks&lt;/a&gt;,  y que consistentemente vemos ignoradas o utilizadas parcialmente.&lt;/p&gt;&lt;p&gt;&lt;img style="float:right;" title="Screen shot 2010-05-14 at 4.15.39 PM.png" src="http://lh5.ggpht.com/_UL5xJ4XsSh8/S-2qesjtM1I/AAAAAAAAAnU/kgF0ML2-FUE/Screen%20shot%202010-05-14%20at%204.15.39%20PM.png?imgmax=800" border="0" alt="Pruebas Unitarias" width="194" height="191"/&gt;&lt;/p&gt;&lt;p&gt;Esto cubre un abanico de metodologías, técnicas y espacios conceptuales bastante amplio, dentro de los cuales arrancamos con un primer curso cubriendo estos temas:&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Test-Driven Development&lt;/li&gt;&lt;li&gt;Inversión de Control e Inyección de Dependencias&lt;/li&gt;&lt;li&gt;Mocking&lt;/li&gt;&lt;li&gt;Principios SOLID&lt;/li&gt;&lt;li&gt;Ejercicios generales utilizando todas la técnicas&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Para cada uno de estos temas tenemos un conjunto de presentaciones, material de soporte para el instructor, proyectos de ejemplo con complejidad creciente y ejercicios de distinta dificultad incluyendo algunas soluciones de referencia.&lt;/p&gt;&lt;p&gt;También tenemos prevista la evaluación posterior a cada curso sobre los resultados de los ejercicios y una serie de preguntas para verificar los conceptos teóricos.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Nuestro plan inicial se enfocaba principalmente en generar todo este contenido para ejecutar clases presenciales, pero siempre pensamos en compartir en línea una buena parte para llegar a personas interesadas que no podemos alcanzar físicamente.&lt;/p&gt;&lt;p&gt;Sin embargo, la recepción que ha tenido lo que publicó Angel hasta ahora (por ejemplo el &lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/user/ajlopez2000#p/a/u/1/VSbx88NJ4-4"&gt;primer&lt;/a&gt; y &lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/user/ajlopez2000#p/a/u/0/d6JrhC1u2Dw"&gt;segundo&lt;/a&gt; videos), nos impulsó a acelerar el avance de la faceta en línea del proyecto. El resultado es que estamos muy cerca de abrir a la comunidad el proyecto, basado en la plataforma de entrenamiento &lt;a rel="nofollow" target="_blank" href="http://moodle.org/"&gt;Moodle&lt;/a&gt;, funcionando por supuesto desde nuestra infraestructura en la nube.&lt;/p&gt;&lt;p&gt;Por supuesto, no descuidaremos la interacción cara a cara. La diferencia es que las sesiones presenciales serán complementarias al contenido en línea, para despejar dudas y realizar prácticas en conjunto. Y obviamente no sólo estarán a cargo y cerca nuestro. Esperamos que diversos grupos puedan replicarlas en forma local.&lt;/p&gt;&lt;p&gt;Interesados: permanecer atentos a este blog y el de &lt;a rel="nofollow" target="_blank" href="http://msmvps.com/blogs/lopez/"&gt;Angel&lt;/a&gt;. La semana próxima deberíamos estar publicando el sitio final del proyecto. Hogwarts es el nombre de código del proyecto (otra práctica recomendable), pero el nombre oficial, que estamos presentando en sociedad es el del título:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Southworks Professional Improvement Program&lt;/strong&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-1559965796515188645?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/No_m52QGUOM" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/y0F4LgKrejo" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-1559965796515188645</guid>
         <pubDate>Fri, 14 May 2010 16:54:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/_UL5xJ4XsSh8/S-2qesjtM1I/AAAAAAAAAnU/kgF0ML2-FUE/s72-c/Screen%20shot%202010-05-14%20at%204.15.39%20PM.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/No_m52QGUOM/presentando-southworks-professional.html</feedburner:origLink></item>
      <item>
         <title>CloudCamp Buenos Aires</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/-prXo3NZjJE/cloudcamp-buenos-aires.html</link>
         <description>&lt;p&gt;El 7 de mayo, la semana pasada, tuvimos la oportunidad de presentar en nuestras oficinas de &lt;a rel="nofollow" target="_blank" href="http://www.southworks.net/"&gt;Southworks&lt;/a&gt; el primer &lt;a rel="nofollow" target="_blank" href="http://cloudcamp.org"&gt;CloudCamp&lt;/a&gt; en Buenos Aires.&lt;/p&gt;&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;" title="IMG_9477.JPG" src="http://lh4.ggpht.com/_UL5xJ4XsSh8/S-sZvBAolGI/AAAAAAAAAnA/HeiPnZSjtOQ/IMG_9477.png?imgmax=800" border="0" alt="Asistentes a l CloudCamp" width="600" height="369"/&gt;&lt;/p&gt;&lt;p&gt;El evento salió muy bien, desde mi punto de vista y por el feedback de la gente, y esperamos compartir muy pronto algunos videos grabados durante el evento.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:11px;"&gt;&lt;img style="float:right;" title="IMG_9473.JPG" src="http://lh6.ggpht.com/_UL5xJ4XsSh8/S-sZtZyBZNI/AAAAAAAAAm8/A8sSova2gEc/IMG_9473.JPG?imgmax=800" border="0" alt="Dave Nielsen en la apertura" width="200" height="128"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Tuvimos la presencia de uno de los fundadores del CloudCamp, &lt;a rel="nofollow" target="_blank" href="http://twitter.com/davenielsen"&gt;Dave Nielsen&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Dave realizó la apertura del evento, explicando la estructura y la mecánica del evento, que contó con presentaciones relámpago (de 5 minutos) de cada uno de los sponsors: Microsoft, Southworks y Globant.&lt;/p&gt;&lt;p&gt;Luego de estas presentaciones pasamos al Unpanel (un anti-panel), con expertos que se propusieron como voluntarios en el momento mismo y contestaron a las preguntas de los asistentes.&lt;/p&gt;&lt;p&gt;&lt;img style="float:right;" title="IMG_9504.JPG" src="http://lh6.ggpht.com/_UL5xJ4XsSh8/S-sZxF4OzJI/AAAAAAAAAnI/JtWwFaoAMbg/IMG_9504.JPG?imgmax=800" border="0" alt="IMG_9504.JPG" width="200" height="229"/&gt;&lt;/p&gt;&lt;p&gt;El trío de expertos quedó conformado por:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://community.jrapid.com/profile/MatiasBagini"&gt;Matías Bagini&lt;/a&gt; de &lt;a rel="nofollow" target="_blank" href="http://www.jrapid.com/"&gt;JRapid&lt;/a&gt; (y organizador del Amazon User Group de Argentina)&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/scottdensmore/"&gt;Scott Densmore&lt;/a&gt; de &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/practices/"&gt;Microsoft patterns &amp;amp; practices&lt;/a&gt; (en la foto junto a él, &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/eugeniop/"&gt;Eugenio Pace&lt;/a&gt;, también de p&amp;amp;p, haciendo de intérprete).&lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/jhalife/"&gt;Johnny Halife&lt;/a&gt; de Southworks&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A ellos se sumó parcialmente Dave en algunas respuestas del público, y de muchas de las preguntas se perfilaron los temas para las sesiones de los Open Spaces posteriores, a las que se sumaron algunas propuestas que el público votó en el momento.&lt;/p&gt;&lt;p&gt;Los temas que quedaron fueron:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Private clouds&lt;/li&gt;&lt;li&gt;Migrando aplicaciones a Windows Azure&lt;/li&gt;&lt;li&gt;NoSQL (y otros patrones de acceso a datos)&lt;/li&gt;&lt;li&gt;Seguridad en la nube&lt;/li&gt;&lt;li&gt;Google App Engine&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;En la foto aparecemos quienes quedamos a cargo de los temas, aunque en general se trató de discusiones participativas. De izquierda a derecha, &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/aortega/"&gt;Beto Ortega&lt;/a&gt; (Southworks), Scott Densmore (Microsoft), &lt;a rel="nofollow" target="_blank" href="http://fabiomaulo.blogspot.com/"&gt;Fabio Maulo&lt;/a&gt; (NHibernate), yo (Southworks) y &lt;a rel="nofollow" target="_blank" href="http://twitter.com/pfrancav"&gt;Pablo Francavilla&lt;/a&gt; (GetSense).&lt;/p&gt;&lt;p&gt;&lt;img style="display:block;margin-left:auto;margin-right:auto;" title="IMG_9513.JPG" src="http://lh6.ggpht.com/_UL5xJ4XsSh8/S-sZx_d7qSI/AAAAAAAAAnM/fyRQ_wK4pA4/IMG_9513.JPG?imgmax=800" border="0" alt="IMG_9513.JPG" width="400" height="254"/&gt;&lt;/p&gt;&lt;p&gt;Quiero agradecer especialmente a &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/jscopinaro/"&gt;Julián Scopinaro&lt;/a&gt; por su trabajo impecable coordinando todas la actividades necesarias para que el evento haya salido perfecto, a &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/mszklanny/"&gt;Mariano "Pocho" Szklanny&lt;/a&gt; por sus fotos (las de este post son apenas una muestra), y a nuestro cameraman exclusivo, &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/gmaliandi/"&gt;Guido Maliandi&lt;/a&gt;, quien capturó en video la mayor parte del evento, para que pronto podamos compartirlo con el resto del mundo.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-3535059314631443622?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/JSAzOOfBmwk" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/-prXo3NZjJE" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-3535059314631443622</guid>
         <pubDate>Wed, 12 May 2010 18:12:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/_UL5xJ4XsSh8/S-sZvBAolGI/AAAAAAAAAnA/HeiPnZSjtOQ/s72-c/IMG_9477.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/JSAzOOfBmwk/cloudcamp-buenos-aires.html</feedburner:origLink></item>
      <item>
         <title>Video de mi VAN sobre Automatización</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/rCjmvpDW6fY/video-de-mi-van-sobre-automatizacion.html</link>
         <description>&lt;p&gt;Gracias nuevamente a los amigos de &lt;a rel="nofollow" target="_blank" href="http://altnethispano.org/"&gt;Alt.NET Hispano&lt;/a&gt;, y sobre todo a &lt;a rel="nofollow" target="_blank" href="http://blog.kudewe.com/"&gt;Fernando Claverino&lt;/a&gt;, quien se tomó el trabajo de redactar el &lt;a rel="nofollow" target="_blank" href="http://altnet-hispano.pbworks.com/van-2009-12-18-automatizacion"&gt;resumen disponible en la Wiki del grupo&lt;/a&gt;, si quieren ahorrar una hora y media, que es lo que dura el video.&lt;/p&gt; &lt;embed src="http://www.viddler.com/player/3697ccb4/" width="545" height="451" type="application/x-shockwave-flash" name="viddler_3697ccb4"&gt;&lt;/iframe&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-840962574478281273?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/sJDEeKqlHkk" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/rCjmvpDW6fY" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-840962574478281273</guid>
         <pubDate>Tue, 02 Feb 2010 13:44:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/sJDEeKqlHkk/video-de-mi-van-sobre-automatizacion.html</feedburner:origLink></item>
      <item>
         <title>MVP otra vez</title>
         <link>http://feedproxy.google.com/~r/AltNetHispano-Blogs/~3/uvJbE501TTY/mvp-otra-vez.html</link>
         <description>&lt;img style="border-bottom:0px;border-left:0px;margin:0px 0px 10px 10px;display:inline;border-top:0px;border-right:0px;" title="Microsoft Most Valuable Professional" border="0" alt="Microsoft Most Valuable Professional" align="right" src="http://lh6.ggpht.com/_UL5xJ4XsSh8/S2hUZhMnlZI/AAAAAAAAAlo/OUgCWVFqFBU/MVP_horizontal%5B4%5D.png?imgmax=800" width="244" height="101"/&gt;&lt;p&gt;Ya se me hizo costumbre, como sucede desde 2002, empezar el año con el mensaje de felicitación anunciando el premio &lt;a rel="nofollow" target="_blank" href="http://mvp.support.microsoft.com/"&gt;MVP&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Como siempre, la sensación es de cierto orgullo y un poco de perplejidad porque no me parece que mi contribución sea tan grande, sobre todo comparándola con la de otros MVP alrededor del mundo a los que admiro.&lt;/p&gt;  &lt;p&gt;Pero en fin, sigo en la musical categoría de C#, supongo que porque es el paraguas en el que agrupan a quienes estamos alrededor de otros lenguajes que no tienen aún su propia categoría (tal vez por ser aún más proyectos que productos completos).&lt;/p&gt;  &lt;p&gt;Como todos los años, espero dedicarme principalmente a aprender más sobre otro lenguaje. La década pasada la dediqué con mayor o menor profundidad a Eiffel, C# mismo, ML, Boo (poco), Python (después de años de mis primeros contactos), el 2009 me concentré en F#, y este pienso dedicarlo seriamente a &lt;strong&gt;&lt;a rel="nofollow" target="_blank" href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;La decisión tiene que ver con dos hechos principales: uno es tener cerca un fanático de Ruby como &lt;a rel="nofollow" target="_blank" href="http://blogs.southworks.net/jhalife/"&gt;Johnny Halife&lt;/a&gt;, y por otro lado el hecho de que la implementación de Ruby en .NET, &lt;a rel="nofollow" target="_blank" href="http://ironruby.codeplex.com/"&gt;IronRuby&lt;/a&gt;, haya llegado al RC1 (primer Release Candidate, lo que significa que está muy cerca de la versión final).&lt;/p&gt;  &lt;p&gt;Por esto, sería de esperar (y aquí tomo un compromiso personal que espero poder cumplir) que este año publique unos cuantos post y de algunas charlas sobre Ruby (la versión multiplataforma, basada en C) y sobre IronRuby (la versión basada en el &lt;a rel="nofollow" target="_blank" href="http://dlr.codeplex.com/"&gt;DLR&lt;/a&gt;), y la interoperabilidad entre ambas.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7509451738776858118-3619206978738225540?l=blog.salias.com.ar' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Arquitexturas/~4/bIb8jWWuBJw" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/AltNetHispano-Blogs/~4/uvJbE501TTY" height="1" width="1"/&gt;</description>
         <author>Martin Salias</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7509451738776858118.post-3619206978738225540</guid>
         <pubDate>Thu, 07 Jan 2010 13:34:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh6.ggpht.com/_UL5xJ4XsSh8/S2hUZhMnlZI/AAAAAAAAAlo/OUgCWVFqFBU/s72-c/MVP_horizontal%5B4%5D.png?imgmax=800" width="72" />
      <feedburner:origLink>http://feedproxy.google.com/~r/Arquitexturas/~3/bIb8jWWuBJw/mvp-otra-vez.html</feedburner:origLink></item>
   </channel>
</rss><!-- fe4.yql.bf1.yahoo.com compressed/chunked Fri May 25 15:39:37 UTC 2012 -->

