<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;CE4GRHY8eyp7ImA9WxFaGE8.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054</id><updated>2010-07-22T20:22:05.873+02:00</updated><title>Softenido.</title><subtitle type="html">&lt;p&gt;Diatribas de un programador y todo lo que se me antoje porque sí.&lt;/p&gt;&lt;p&gt;Diatribes of a programmer and anything I want just because I want to.&lt;/p&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.softenido.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.softenido.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>258</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Softenido" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="softenido" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CE8FSHs7eip7ImA9WxFaGE8.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-8205682964815848412</id><published>2010-07-22T20:07:00.003+02:00</published><updated>2010-07-22T20:20:19.502+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-22T20:20:19.502+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><category scheme="http://www.blogger.com/atom/ns#" term="findrepe" /><title>FindRepe 0.9.0 - ES</title><content type="html">&lt;div style="text-align: justify;"&gt;Ahora en la versión 0.9.0, FindRepe puede buscar dentro de zips y jars usando las opciones --zip y --zip-only. La opción --verbose ha sido implementada finalmente, en las versiones previas esta opción era meramente decorativa.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;La opción --zip tiene un bug, causado por un bug en la última release estable de "Apache Commons Compress", que puede provocar un bucle infinito en algunos zips incorrectos. Este bug ya ha sido corregido pero aún estoy a la espera de que sea liberado. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-Download &lt;a href="http://softenido.googlecode.com/files/findrepe-0.9.0.zip"&gt;findrepe-0.9.0.zip&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://softenido.googlecode.com/files/findrepe-0.9.0.zip"&gt;&lt;/a&gt;&lt;br /&gt;-Descomprimirlo usando el comando&lt;br /&gt;&lt;blockquote&gt;unzip findrepe-0.9.0.zip&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;-Instalar el lanzador con uno de los siguientes comandos&lt;br /&gt;&lt;blockquote&gt;java -jar findrepe-0.9.0/FindRepe.jar --install&lt;/blockquote&gt;&lt;blockquote&gt;java -jar findrepe-0.9.0/FindRepe.jar --install-home&lt;/blockquote&gt;&lt;blockquote&gt;sudo java -jar findrepe-0.9.0/FindRepe.jar --install-home=/opt/jdk1.6&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;-Trastealo y disfrutalo con&lt;br /&gt;&lt;br /&gt;Usuarios de windows:&lt;br /&gt;&lt;blockquote&gt;findrepe c:\ e:\&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;Usuarios de GNU/Linux, OpenSolaris y cualquier otro sabor unix:&lt;br /&gt;&lt;blockquote&gt;findrepe /backup/mp3 /backup/src&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.softenido.com/2010/07/findrepe-090-en.html"&gt;(English version)&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-8205682964815848412?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EIlcq8-m6uBKTWL5HUKcNlkkjIQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIlcq8-m6uBKTWL5HUKcNlkkjIQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EIlcq8-m6uBKTWL5HUKcNlkkjIQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EIlcq8-m6uBKTWL5HUKcNlkkjIQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/8205682964815848412/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=8205682964815848412" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/8205682964815848412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/8205682964815848412?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/findrepe-090-es.html" title="FindRepe 0.9.0 - ES" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE4GRHYzeip7ImA9WxFaGE8.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-5573666578514374666</id><published>2010-07-22T19:52:00.003+02:00</published><updated>2010-07-22T20:22:05.882+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-22T20:22:05.882+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="release" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><category scheme="http://www.blogger.com/atom/ns#" term="findrepe" /><title>FindRepe 0.9.0 - EN</title><content type="html">&lt;div style="text-align: justify;"&gt;Now in version 0.9.0, FindRepe can search within zips and jars using options --zip and --zip-only. Option --verbose finally has been implemented, in previous versions this option was a dummy option.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Option --zip has a bug, due a bug in the last "Apache Commons Compress" stable release, it can cause an infinite loop in some buggy zips. This bug has been fixed but hasn't been released yet. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-Download &lt;a href="http://softenido.googlecode.com/files/findrepe-0.9.0.zip"&gt;findrepe-0.9.0.zip&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://softenido.googlecode.com/files/findrepe-0.9.0.zip"&gt;&lt;/a&gt;&lt;br /&gt;-Decompress it using the command&lt;br /&gt;&lt;blockquote&gt;unzip findrepe-0.9.0.zip&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;-Install the launcher with one of the following commands&lt;br /&gt;&lt;blockquote&gt;java -jar findrepe-0.9.0/FindRepe.jar --install&lt;/blockquote&gt;&lt;blockquote&gt;java -jar findrepe-0.9.0/FindRepe.jar --install-home&lt;/blockquote&gt;&lt;blockquote&gt;sudo java -jar findrepe-0.9.0/FindRepe.jar --install-home=/opt/jdk1.6&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;-Play and enjoy it with&lt;br /&gt;&lt;br /&gt;Windows users:&lt;br /&gt;&lt;blockquote&gt;findrepe c:\ e:\&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;GNU/Linux, OpenSolaris and any other unix flavor users:&lt;br /&gt;&lt;blockquote&gt;findrepe /backup/mp3 /backup/src&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.softenido.com/2010/07/findrepe-090-es.html"&gt;(Versión en Español)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-5573666578514374666?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DzNXWy-Sip5H8ATaB5tmAVmNqpI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DzNXWy-Sip5H8ATaB5tmAVmNqpI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DzNXWy-Sip5H8ATaB5tmAVmNqpI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DzNXWy-Sip5H8ATaB5tmAVmNqpI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/5573666578514374666/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=5573666578514374666" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5573666578514374666?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5573666578514374666?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/findrepe-090-en.html" title="FindRepe 0.9.0 - EN" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08ER3w9eip7ImA9WxFaF08.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-6526135725751656034</id><published>2010-07-21T18:18:00.004+02:00</published><updated>2010-07-21T18:30:06.262+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-21T18:30:06.262+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="antitabaco" /><category scheme="http://www.blogger.com/atom/ns#" term="ciencia" /><category scheme="http://www.blogger.com/atom/ns#" term="salud" /><title>La escandalosa mentira del tabaco asesino</title><content type="html">&lt;div style="text-align: justify;"&gt;Como es sabido por mis conocidos, detesto el tabaco de forma vehemente. No siempre ha sido así, en tiempos pasados fue algo simplemente molesto. La vehemencia fue en aumento con la información, y tras ver varias muertes causadas por el tabaco.&lt;br /&gt;&lt;br /&gt;Por eso hoy toca información, ya sea para que lo dejes si eres fumador o para tener argumentos contra los que se empeñan en hacerte fumador pasivo. Y que mejor que estas dos entradas en &lt;a href="http://www.genciencia.com/"&gt;genciencia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.genciencia.com/salud/la-escandalosa-mentira-del-tabaco-asesino-i"&gt;La escandalosa mentira del tabaco asesino (I)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.genciencia.com/salud/la-escandalosa-mentira-del-tabaco-asesino-y-ii"&gt;La escandalosa mentira del tabaco asesino (y II)&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-6526135725751656034?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XvNmODHJ2CP6Wvki9r6uaQiRvVA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XvNmODHJ2CP6Wvki9r6uaQiRvVA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XvNmODHJ2CP6Wvki9r6uaQiRvVA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XvNmODHJ2CP6Wvki9r6uaQiRvVA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/6526135725751656034/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=6526135725751656034" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6526135725751656034?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6526135725751656034?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/la-escandalosa-mentira-del-tabaco.html" title="La escandalosa mentira del tabaco asesino" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkcEQXw4fSp7ImA9WxFaE0g.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-6002473172168961806</id><published>2010-07-17T09:00:00.000+02:00</published><updated>2010-07-17T09:00:00.235+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-17T09:00:00.235+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><title>Asnos Estupidos - 2.053</title><content type="html">&lt;div style="text-align: justify;"&gt;Uno de los relatos de Isaac Asimov, titulado &lt;a href="http://www.bauleros.org/asnos_asimov.html"&gt;Asnos estupidos&lt;/a&gt; e incluidos en el libro "Compre Júpiter" relata como la Tierra es anotada en un pequeño libro para ser tachada a continuación. Para los que crean que no hay motivo suficiente, puede que la siguiente animación que reproduce a un mes por segundo las 2.053 explosiones nucleares sucedidas en el periodo 1945-1998, les abra los ojos ante la estupidez humana.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AeaDFAI" type="application/x-shockwave-flash" width="480" height="350" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Visto en &lt;a href="http://www.microsiervos.com/archivo/mundoreal/2053.html"&gt;microsiervos&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-6002473172168961806?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nLMqGCiV2F4eA007DhXGm5ALQHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nLMqGCiV2F4eA007DhXGm5ALQHI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nLMqGCiV2F4eA007DhXGm5ALQHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nLMqGCiV2F4eA007DhXGm5ALQHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/6002473172168961806/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=6002473172168961806" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6002473172168961806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6002473172168961806?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/asnos-estupidos-2053.html" title="Asnos Estupidos - 2.053" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUEDQn07eSp7ImA9WxFaEk4.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-3635435512868762464</id><published>2010-07-16T00:19:00.002+02:00</published><updated>2010-07-16T00:41:13.301+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-16T00:41:13.301+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lambda" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>State of the Lambda by Brian Goetz</title><content type="html">Borrowed from &lt;a href="http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-2.html"&gt;State of the Lambda&lt;/a&gt; by Brian Goetz, 6 July 2010&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is an updated proposal to add lambda expressions (informally,&lt;br /&gt;"closures") to the Java programming language.  This sketch is built on&lt;br /&gt;the &lt;a href="http://cr.openjdk.java.net/~mr/lambda/straw-man/"&gt;straw-man proposal&lt;/a&gt; made by Mark Reinhold in December&lt;br /&gt;2009.&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Background; SAM classes&lt;/em&gt;&lt;br /&gt;&lt;p&gt;The Java programming language already has a form of closures:&lt;br /&gt;anonymous inner classes.  There are a number of reasons these are&lt;br /&gt;considered &lt;a href="http://blogs.sun.com/jrose/entry/better_closures"&gt;imperfect closures&lt;/a&gt;, primarily:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Bulky syntax&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Inability to capture non-final local variables&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Transparency issues surrounding the meaning of return, break,&lt;br /&gt;continue, and 'this'&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No nonlocal control flow operators&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;It is &lt;em&gt;not&lt;/em&gt; a goal of Project Lambda to address &lt;em&gt;all&lt;/em&gt; of these issues.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The standard way for Java APIs to define callbacks is to use an&lt;br /&gt;interface representing the callback method, such as:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;public interface CallbackHandler &lt;br /&gt;{ &lt;br /&gt;    public void callback(Context c);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The CallbackHandler interface has a useful property: it has a &lt;em&gt;single&lt;br /&gt;abstract method&lt;/em&gt;.  Many common interfaces and abstract classes have&lt;br /&gt;this property, such as Runnable, Callable, EventHandler, or&lt;br /&gt;Comparator.  We call these classes &lt;em&gt;SAM classes&lt;/em&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The biggest pain point for anonymous inner classes is bulkiness.  To&lt;br /&gt;call a method taking a CallbackHandler, one typically creates an&lt;br /&gt;anonymous inner class:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;foo.doSomething(new CallbackHandler() &lt;br /&gt;{ &lt;br /&gt;  public void callback(Context c) &lt;br /&gt;  { &lt;br /&gt;    System.out.println("pippo");&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The anonymous inner class here is what some might call a "vertical&lt;br /&gt;problem": five lines of source code to encapsulate a single statement.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;Astute readers will notice that the syntax used for examples in this&lt;br /&gt;  document differ from that expressed in the straw-man proposal.  This&lt;br /&gt;  does &lt;em&gt;not&lt;/em&gt; reflect a final decision on syntax; we are still&lt;br /&gt;  experimenting with various candidate syntax options.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Lambda expressions&lt;/em&gt;&lt;br /&gt;&lt;p&gt;Lambda expressions are anonymous functions, aimed at addressing the&lt;br /&gt;"vertical problem" by replacing the machinery of anonymous inner&lt;br /&gt;classes with a simpler mechanism.  One way to do that would be to add&lt;br /&gt;function types to the language, but this has several disadvantages:&lt;br /&gt; - Mixing of structural and nominal types;&lt;br /&gt; - Divergence of library styles (some libraries would continue to use&lt;br /&gt;   callback objects, while others would use function types).&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So, we have instead chosen to take the path of making it easier to&lt;br /&gt;create instances of callback objects.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here are some examples of lambda expressions:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;{ -&amp;gt; 42 }&lt;br /&gt;&lt;br /&gt;{ int x -&amp;gt; x + 1 }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The first expression takes no arguments, and returns the integer 42;&lt;br /&gt;the second takes a single integer argument, named x, and returns x+1.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Lambda expressions are distinguished from ordinary statement blocks by&lt;br /&gt;the presence of a (possibly empty) formal parameter list and the -&amp;gt;&lt;br /&gt;token.  The lambda expressions shown so far are a simplified form&lt;br /&gt;containing a single expression; there is also a multi-statement form&lt;br /&gt;that can contain one or more statements.  &lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;SAM conversion&lt;/em&gt;&lt;br /&gt;&lt;p&gt;One can describe a SAM type by its return type, parameter types, and&lt;br /&gt;checked exception types.  Similarly, one can describe the type of a&lt;br /&gt;lambda expression by its return type, parameter types, and exception&lt;br /&gt;types.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Informally, a lambda expression e is &lt;em&gt;convertible-to&lt;/em&gt; a SAM type S if&lt;br /&gt;an anonymous inner class that is a subtype of S and that declares a&lt;br /&gt;method with the same name as S's abstract method and a signature and&lt;br /&gt;return type corresponding to the lambda expressions signature and&lt;br /&gt;return type would be considered assignment-compatible with S.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The return type and exception types of a lambda expression are&lt;br /&gt;inferred by the compiler; the parameter types may be explicitly&lt;br /&gt;specified or they may be inferred from the assignment context (see&lt;br /&gt;&lt;em&gt;Target Typing&lt;/em&gt;, below.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When a lambda expression is converted to a SAM type, invoking the&lt;br /&gt;single abstract method of the SAM instance causes the body of the&lt;br /&gt;lambda expression to be invoked.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For example, SAM conversion will happen in the context of assignment:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;CallbackHandler cb = { Context c -&amp;gt; System.out.println("pippo") };&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In this case, the lambda expression has a single Context parameter,&lt;br /&gt;has void return type, and throws no checked exceptions, and is&lt;br /&gt;therefore compatible with the SAM type CallbackHandler.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Target Typing&lt;/em&gt;&lt;br /&gt;&lt;p&gt;Lambda expressions can &lt;em&gt;only&lt;/em&gt; appear in context where it will be&lt;br /&gt;converted to a variable of SAM type; the type of 'this' inside the&lt;br /&gt;lambda expression is (a subtype of) the SAM type to which the lambda&lt;br /&gt;expression is being converted.  So the following code will print&lt;br /&gt;"Yes":&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Runnable r = { -&amp;gt; &lt;br /&gt;                 if (this instanceof Runnable) &lt;br /&gt;                     System.out.println("Yes");&lt;br /&gt;             };&lt;br /&gt;r.run();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The following use of lambda expressions is forbidden because it does&lt;br /&gt;not appear in a SAM-convertible context:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Object o = { -&amp;gt; 42 };&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In a method invocation context, the target type for a lambda&lt;br /&gt;expression used as a method parameter is inferred by examining the set&lt;br /&gt;of possible compatible method signatures for the method being invoked.&lt;br /&gt;This entails some additional complexity in method selection;&lt;br /&gt;ordinarily the types of all parameters are computed, and then the set&lt;br /&gt;of compatible methods is computed, and a most specific method is&lt;br /&gt;selected if possible.  Inference of the target type for lambda-valued&lt;br /&gt;actual parameters happens after the types of the other parameters is&lt;br /&gt;computed but before method selection; method selection then happens&lt;br /&gt;using the inferred target types for the lambda-valued parameters.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The type of the formal parameters to the lambda expression can also be &lt;br /&gt;inferred from the target type of the lambda expression.  So we can &lt;br /&gt;abbreviate our callback handler as:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;CallbackHandler cb = { c -&amp;gt; System.out.println("pippo") };&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;as the type of the parameter c can be inferred from the target type&lt;br /&gt;of the lambda expression.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Allowing the formal parameter types to be inferred in this way&lt;br /&gt;furthers a desirable design goal: "Don't turn a vertical problem into&lt;br /&gt;a horizontal problem."  We wish that the reader of the code have to&lt;br /&gt;wade through as little code as possible before arriving at the "meat"&lt;br /&gt;of the lambda expression.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The user can explicitly choose a target type by specifying a type&lt;br /&gt;name.  This might be for clarity, or might be because there are&lt;br /&gt;multiple overloaded methods and the compiler cannot correctly chose&lt;br /&gt;the target type.  For example:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;executor.submit(Callable&amp;lt;String&amp;gt; { -&amp;gt; "foo" });&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;If the target type is an abstract class, it is an open question as to&lt;br /&gt;whether we want to permit an argument list so a constructor other than&lt;br /&gt;the no-arg constructor can be used.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Lambda bodies&lt;/em&gt;&lt;br /&gt;&lt;p&gt;In addition to the simplified expression form of a lambda body, a&lt;br /&gt;lambda body can also contain a list of statements, similar to a method&lt;br /&gt;body, with several differences: the break, return, and continue&lt;br /&gt;statements are not permitted, and a "yield" statement, whose form is&lt;br /&gt;similar to to the return statement, is permitted instead of a return&lt;br /&gt;statement.  The type of a multi-statement lambda expression is&lt;br /&gt;inferred by unifying the type of the values yielded by the set of&lt;br /&gt;yield statements.  As with method bodies, every control path through a&lt;br /&gt;multi-statement lambda expression must either yield a value, yield no&lt;br /&gt;value, or throw an exception.  Expressions after a yield statement are&lt;br /&gt;unreachable.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The complete syntax is given by:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;lambda-exp := "{" arg-list "-&amp;gt;" lambda-body "}"&lt;br /&gt;arg-list := "(" args ")" | args&lt;br /&gt;args := arg | arg "," args&lt;br /&gt;arg := [ type ] identifier&lt;br /&gt;lambda-body := expression | statement-list [ ";" ]&lt;br /&gt;statement-list := statement | statement ";" statement-list&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Instance capture&lt;/em&gt;&lt;br /&gt;&lt;p&gt;Once the target type of a lambda expression is determined, the body of&lt;br /&gt;a lambda expression is treated largely the same way as an anonymous&lt;br /&gt;inner class whose parent is the target type.  The 'this' variable&lt;br /&gt;refers to the SAM-converted lambda (whose type is a subtype of the&lt;br /&gt;target type).  Variables of the form OuterClassName.this refer to the&lt;br /&gt;instances of lexically enclosing classes, just as with inner classes.&lt;br /&gt;Unqualified names may refer to members of the SAM class (if it is a&lt;br /&gt;class and not an interface), or to members of lexically enclosing&lt;br /&gt;classes, using the same rules as for inner classes.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;For members of lexically enclosing instanaces, member capture is&lt;br /&gt;treated as if the references were desugared to use the appropriate&lt;br /&gt;"Outer.this" qualifier and Outer.this is captured as if it were a&lt;br /&gt;local final variable.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Local variable capture&lt;/em&gt;&lt;br /&gt;&lt;p&gt;The current rules for capturing local variables of enclosing contexts&lt;br /&gt;in inner classes are quite restrictive; only final variables may be&lt;br /&gt;captured.  For lambda expressions (and for consistency, probably inner&lt;br /&gt;class instances as well), we relax these rules to also allow for&lt;br /&gt;capture of &lt;em&gt;effectively final&lt;/em&gt; local variables.  (Informally, a local&lt;br /&gt;variable is effectively final if making it final would not cause a&lt;br /&gt;compilation failure.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It is likely that we will &lt;em&gt;not&lt;/em&gt; permit capture of mutable local&lt;br /&gt;variables.  The reason is that idioms like this:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;int sum = 0;&lt;br /&gt;list.forEach({ Element e -&amp;gt; sum += e.size(); });&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;are fundamentally serial; it is quite difficult to write lambda bodies&lt;br /&gt;like this that do not have race conditions.  Unless we are willing to&lt;br /&gt;enforce (preferably statically) that such lambdas not escape their&lt;br /&gt;capturing thread, such a feature may likely cause more trouble than it&lt;br /&gt;solves.  &lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Exception transparency&lt;/em&gt;&lt;br /&gt;&lt;p&gt;A separate document on &lt;a href="http://blogs.sun.com/briangoetz/entry/exception_transparency_in_java"&gt;exception transparency&lt;/a&gt; proposes our strategy&lt;br /&gt;for amending generics to allow abstraction over thrown checked&lt;br /&gt;exception types.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Method references&lt;/em&gt;&lt;br /&gt;&lt;p&gt;SAM conversion allows us to take an anonymous method body and treat it&lt;br /&gt;as if it were a SAM type.  It is often desirable to do the same with &lt;br /&gt;an existing method (such as when a class has multiple methods that are&lt;br /&gt;signature-compatible with Comparable.compareTo().)  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Method references are expressions which have the same treatment as&lt;br /&gt;lambda expressions (i.e., they can only be SAM-converted), but instead&lt;br /&gt;of providing a method body they refer to a method of an existing class&lt;br /&gt;or object instance.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;For example, consider a Person class that can be sorted by name or by&lt;br /&gt;age:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;class Person &lt;br /&gt;{ &lt;br /&gt;    private final String name;&lt;br /&gt;    private final int age;&lt;br /&gt;&lt;br /&gt;    public static int compareByAge(Person a, Person b) { ... }&lt;br /&gt;&lt;br /&gt;    public static int compareByName(Person a, Person b) { ... }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Person[] people = ...&lt;br /&gt;Arrays.sort(people, #Person.compareByAge);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Here, the expression #Person.compareByAge is sugar for a lambda&lt;br /&gt;expression whose formal argument list is copied from the method&lt;br /&gt;Person.compareByAge, and whose body calls Person.compareByAge.  This&lt;br /&gt;lambda expression will then get SAM-converted to a Comparator.  &lt;/p&gt;&lt;br /&gt;&lt;p&gt;If the method being referenced is overloaded, it can be disambiguated&lt;br /&gt;by providing a list of argument types:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Arrays.sort(people, #Person.compareByAge(Person, Person));&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Instance methods can be referenced as well, by providing a receiver&lt;br /&gt;variable:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;Arrays.sort(people, #comparatorHolder.comparePersonByAge);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;In this case, the implicit lambda expression would capture a final&lt;br /&gt;copy of the "comparatorHolder" reference and the body would invoke&lt;br /&gt;the comparePersonByAge using that as the receiver.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We may choose to restrict the forms that the receiver can take, rather&lt;br /&gt;than allowing arbitrary object-valued expressions like&lt;br /&gt;"#foo(bar).moo", when capturing instance method references.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Extension methods&lt;/em&gt;&lt;br /&gt;&lt;p&gt;A separate document on &lt;a href="http://cr.openjdk.java.net/~darcy/DefenderMethods.pdf"&gt;&lt;em&gt;defender methods&lt;/em&gt;&lt;/a&gt; proposes our&lt;br /&gt;strategy for extending existing interfaces with virtual extension&lt;br /&gt;methods.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-3635435512868762464?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7mx7-A88OAvrPNVIEHPi6Xr95x4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7mx7-A88OAvrPNVIEHPi6Xr95x4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7mx7-A88OAvrPNVIEHPi6Xr95x4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7mx7-A88OAvrPNVIEHPi6Xr95x4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/3635435512868762464/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=3635435512868762464" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3635435512868762464?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3635435512868762464?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/state-of-lambda-by-brian-goetz.html" title="State of the Lambda by Brian Goetz" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk8HSXw6eyp7ImA9WxFbFU8.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-3255302445558582093</id><published>2010-07-07T19:36:00.003+02:00</published><updated>2010-07-07T19:47:18.213+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-07T19:47:18.213+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;This&lt;/a&gt; entry of &lt;a href="http://www.joelonsoftware.com/"&gt;Joel on Software&lt;/a&gt; titled "&lt;span style="font-weight:bold;"&gt;The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)&lt;/span&gt;" is as it says, so if you are a programmer, read it, (No Excuses!).&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;http://www.joelonsoftware.com/articles/Unicode.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some phrases from the article:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It does not make sense to have a string without knowing what encoding it uses&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;How do we preserve this information about what encoding a string uses? Well, there are standard ways to do this. For an email message, you are expected to have a string in the header of the form&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Content-Type: text/plain; charset="UTF-8"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For a web page, the original idea was that the web server would return a similar Content-Type http header along with the web page itself -- not in the HTML itself, but as one of the response headers that are sent before the HTML page. &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-3255302445558582093?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hFx4fVrEIUzjZjegMScg40QV1ZY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hFx4fVrEIUzjZjegMScg40QV1ZY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hFx4fVrEIUzjZjegMScg40QV1ZY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hFx4fVrEIUzjZjegMScg40QV1ZY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/3255302445558582093/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=3255302445558582093" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3255302445558582093?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3255302445558582093?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/07/absolute-minimum-every-software.html" title="The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkYBRHw7eyp7ImA9WxFUF0g.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-5063615690228853342</id><published>2010-06-28T20:22:00.003+02:00</published><updated>2010-06-28T20:35:55.203+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-28T20:35:55.203+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Java 4 Ever - Java por Siempre</title><content type="html">&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9g1y7f1xjJ0&amp;hl=es_ES&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9g1y7f1xjJ0&amp;hl=es_ES&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-5063615690228853342?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZVWw_FAYPaV70cESFDXMmp6Fvzk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZVWw_FAYPaV70cESFDXMmp6Fvzk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZVWw_FAYPaV70cESFDXMmp6Fvzk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZVWw_FAYPaV70cESFDXMmp6Fvzk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/5063615690228853342/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=5063615690228853342" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5063615690228853342?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5063615690228853342?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/06/java-4-ever-java-por-siempre.html" title="Java 4 Ever - Java por Siempre" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEFSXw7eip7ImA9WxFWGUk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-1193332599535330187</id><published>2010-06-07T21:01:00.004+02:00</published><updated>2010-06-07T23:03:38.202+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-07T23:03:38.202+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><title>Los Riesgos de las Universidades-Java</title><content type="html">&lt;div style="text-align: justify;"&gt;Me he permitido copiar &lt;a href="http://blog.smaldone.com.ar/2010/06/01/los-riesgos-de-las-universidades-java/"&gt;esta&lt;/a&gt; traducción de &lt;a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html"&gt;este&lt;/a&gt; artículo de Joel Spolsky. &lt;br /&gt;&lt;br /&gt;Antes de que empieces déjame presumir, después de que con 14 años mi cerebro quedase dañado por un curso de verano de MSX BASIC, conseguí recuperarme a causa de no tener ordenador con el que practicar. Hasta que a los 18 años me compré mi primer ordenador (un 486 2MB de RAM y 120MB de disco duro lo mejorcito de la epoca) con mis ahorros obtenidos como camarero. Lo usé para practicar C que aprendí practicando en papel con un libro "&lt;span style="font-weight:bold;"&gt;C Manual de referencia de Herbert Schildt&lt;/span&gt;". La única dificultad de C es la compresión de los punteros, conseguido esto, lo demás es trivial. Como dice el artículo, el desconocimiento de los punteros es generalizado en las nuevas generaciones de programadores. Aunque los filtros siguen ahí, pero ahora las "purgas" las hacen las "crisis" y los "ascensos".&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Los Riesgos de las Universidades-Java&lt;/h3&gt; &lt;br /&gt;&lt;strong&gt;por Joel Spolsky&lt;/strong&gt; Jueves 29 de diciembre de 2005&lt;br&gt; &lt;br /&gt;Chicos perezosos.&lt;br&gt; &lt;br /&gt;¿Qué pasó con el trabajo duro?&lt;br&gt; &lt;br /&gt;Un seguro indicio de mi decadencia hacia la senilidad son mis continuas quejas y lamentos sobre &amp;#8220;los chicos de hoy&amp;#8221;, y cómo ya no quieren o no pueden hacer cosas difíciles.&lt;br&gt;&lt;br /&gt;Cuando yo era un muchacho, aprendí a programar con tarjetas perforadas. En esos tiempos si cometías un error, no tenías ninguna de esas modernas funciones como la tecla &amp;#8220;&lt;em&gt;backspace&lt;/em&gt;&amp;#8221; para corregirlo. Tenias que tirar la tarjeta y empezar todo de nuevo.&lt;br&gt; &lt;br /&gt;Cuando empecé a entrevistar programadores en 1991, les dejaba usar generalmente cualquier lenguaje que quisieran para resolver los problemas de programación que les planteaba. El 99% de las veces, ellos elegían C.&lt;br&gt; &lt;br /&gt;Ahora ellos tienden a elegir Java.&lt;br&gt; &lt;br /&gt;No me malinterpreten: no hay nada malo con Java como lenguaje de implementación.&lt;br&gt; &lt;br /&gt;Un momento, quiero rectificar eso último. No digo, &lt;em&gt;en este artículo en particular&lt;/em&gt;, que haya algo de malo con Java como lenguaje de implementación. Hay un montón de cosas mal con Java, pero tendrán que esperar hasta otro artículo.&lt;br&gt; &lt;br /&gt;En cambio, lo que quiero decir es que Java no es, generalmente, un lenguaje de programación lo suficientemente difícil para que pueda ser usado para distinguir entre excelentes programadores y programadores mediocres. Puede ser un buen lenguaje para trabajar, pero ese no es el tema de hoy. Puedo ir incluso mas allá y decir que el hecho de que Java no sea lo suficientemente difícil es una característica, no un bug, pero que tiene ese problema.&lt;br&gt; &lt;br /&gt;Si puedo ser atrevido, diría que en mi humilde experiencia han sido dos las cosas tradicionalmente enseñadas en las universidades como parte de la carrera de Ciencias de la Computación (CS) las que mucha gente nunca llega realmente a comprender: punteros y recursión.&lt;br&gt; &lt;br /&gt;En aquellos tiempos lo normal era empezar la universidad con un curso de estructuras de datos, con listas enlazadas, tablas hash y, por qué no, con un uso intensivo de punteros. Esos cursos eran frecuentemente usados como filtros: eran tan difíciles que cualquiera que no pudiera soportar el desafío mental de un grado en CS se daría por vencido, lo que era bueno, porque si piensas que los punteros son difíciles, espera hasta intentar probar cosas en teoría de punto fijo.&lt;br&gt; &lt;br /&gt;Todos esos chicos que lo habían hecho muy bien en la secundaria escribiendo juegos de &amp;#8220;pong&amp;#8221; en BASIC para su Apple II, iban a la universidad, tomaban el curso CompSci 101, sobre estructuras de datos, y cuando llegaban al asunto de los punteros, sus cerebros estallaban completamente; y lo próximo de lo que tenías noticias es que estaban especializándose en Ciencias Políticas, porque la escuela de leyes parecía ser una mejor idea. He visto todo tipo de de índices de deserción en CS y usualmente están entre el 40% y  el 70%. Las universidades tienden a ver esto como un derroche; yo creo que es sólo la poda necesaria de gente que no va a ser feliz o exitosa en una carrera de programación.&lt;br&gt; &lt;br /&gt;El otro curso difícil para muchos jóvenes estudiantes de CS era el curso donde aprendías programación funcional, incluyendo programación recursiva. MIT puso una barrera muy alta en esos cursos, creando un &lt;a href="http://sicp.csail.mit.edu/Fall-2005/"&gt;curso&lt;/a&gt; obligatorio (6.001) y un libro de texto (&lt;a href="http://mitpress.mit.edu/sicp/full-text/book/book.html"&gt;Estructura e Interpretación de Programas de Computadora&lt;/a&gt; de Abelson y Sussman, el cual era usado en docenas o quizás cientos de carreras de CS prestigiosas como el estándar de facto para la introducción a las Ciencias de la Computación. (Puedes, y deberías echarle una ojeada a la antigua versión de las clases &lt;a href="http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/"&gt;en línea&lt;/a&gt;).&lt;br&gt; &lt;br /&gt;La dificultad de esos cursos es asombrosa. En la primera clase has aprendido casi todo Scheme, y ya has sido introducido a la función de punto fijo que toma otra función como parámetro. Cuando me esforzaba en pasar un curso similar, CSE121 en Penn, observaba cómo muchos sino la mayoría de los estudiantes simplemente no lo lograba. La materia era muy difícil. Inclusive escribí un largo email de lloriqueando a mi profesor diciendo que “simplemente no era justo”. Alguien en Penn debe haberme escuchado (o a alguno de los otros llorones), porque ese curso se dicta ahora con Java.&lt;br&gt; &lt;br /&gt;Desearía que no hubiesen escuchado.&lt;br&gt; &lt;br /&gt;Aquí radica el quid del debate. Años de lloriqueo de estudiantes perezosos como yo, combinados con quejas de la industria acerca de cuan pocos graduados en CS salen de las universidades americanas, han pagado su precio, y en la ultima década un gran numero de otrora perfectamente buenas universidades se han vuelto 100% Java. Esta de moda, a los reclutadores que usan “grep&amp;#8221; parece gustarles, y, lo mejor de todo, no hay nada lo suficientemente difícil en Java como para filtrar aquellos programadores sin la parte del cerebro que entiende punteros y recursión. Así es que la deserción es menor, y los departamentos de ciencias de la computación tienen mas alumnos y mayores presupuestos y todo está bien.&lt;br&gt; &lt;br /&gt;Los afortunados chicos de esas Universidades-Java nunca van a toparse con raros fallos de segmentación tratando de implementar tablas hash basadas en punteros. Nunca se van a volver locos tratando de empaquetar cosas en bits. Nunca tendrán que ocupar sus cabezas en cómo en un lenguaje puramente funcional, el valor de una variable nunca cambia, y aun así, ¡cambia todo el tiempo! ¡Una paradoja!&lt;br&gt; &lt;br /&gt;Ellos no necesitan esa parte del cerebro para obtener un 4 en la materia.&lt;br&gt; &lt;br /&gt;¿Soy sólo uno de esos viejos cascarrabias anticuados, vanagloriándose acerca de cuán duro era sobrevivir a todas esas dificultades?&lt;br&gt; &lt;br /&gt;Rayos, en 1900, el Latín y el Griego eran asignaturas requeridas en la universidad, no porque sirvieran de algún propósito, sino porque de alguna manera eran considerados un requisito obvio de la gente educada. De cierta manera mi argumento no es diferente del argumento expuesto por la gente pro-Latín: “[El Latín] entrena tu mente. Entrena tu memoria. Desembrollar una sentencia en Latín es un excelente ejercicio del pensamiento, un verdadero acertijo intelectual y una buena introducción al pensamiento lógico”, &lt;a href-"http://www.promotelatin.org/whylatin.htm"&gt;escribe&lt;/a&gt; Scout Barrer. Pero ya no puedo encontrar una sola universidad que requiera Latín. ¿Son los punteros y la recursión el Latín y el Griego de las ciencias de la computación?&lt;br&gt; &lt;br /&gt;Ahora, admito que programar con punteros no es necesario en el 90% del código escrito en la actualidad, y de hecho es totalmente peligroso en el código de producción. OK. Está bien. Y que la programación funcional no es muy empleada en la práctica. De acuerdo.&lt;br&gt; &lt;br /&gt;Pero todavía sigue siendo importante para algunos de las tareas más excitantes en programación. Sin punteros, por ejemplo, nunca serías capaz de trabajar en el Kernel de Linux. No puedes entender una sola línea del código de Linux, o de hecho, de cualquier sistema operativo, sin realmente entender punteros.&lt;br&gt; &lt;br /&gt;Sin entender programación funcional, no podrás inventar &lt;a href="http://labs.google.com/papers/mapreduce.html"&gt;MapReduce&lt;/a&gt;, el algoritmo que hace Google tan masivamente escalable. Los términos Map y Reduce vienen de Lisp y la programación funcional. MapReduce es, en retrospectiva, obvio para cualquiera que recuerde de su clase equivalente a 6.001 que los programas puramente funcionales no tienen efectos colaterales y por ende son trivialmente paralelizables. El simple hecho que Google inventara MapReduce, y no Microsoft, dice algo del por qué Microsoft está aun jugando a lograr que funcionen algunas características básicas de búsqueda, mientras Google se ha movido ya al siguiente problema: construir &lt;a href="http://en.wikipedia.org/wiki/Skynet"&gt;Skynet&lt;/a&gt;^H^H^H^H^H^H, la mayor &lt;a href="http://www.pbs.org/cringely/pulpit/pulpit20051117.html"&gt;supercomputadora&lt;/a&gt; masivamente paralela del mundo. Simplemente no creo que Microsoft entienda completamente cuan retrasados están en ese campo.&lt;br&gt; &lt;br /&gt;Pero mas allá de la importancia a simple vista de los punteros y la recursión, su valor real radica en que construir grandes sistemas requiere del tipo de flexibilidad mental que adquieres aprendiéndolos, y de la actitud mental que necesitas para no huir de los cursos en donde son enseñados. Punteros y recursión requieren cierta habilidad para razonar, para pensar en abstracciones, y más importante, para ver un problema en diversos niveles de abstracción simultáneamente. Por lo tanto, la habilidad para entender punteros y recursión esta directamente correlacionada con la habilidad de ser un gran programador.&lt;br&gt; &lt;br /&gt;No hay nada en grado académico 100% Java que realmente descarte a los estudiantes que carecen de la agilidad mental para tratar con esos conceptos. Como empleador, he visto que las Universidades 100% Java han empezado a producir en serie una buena cantidad de graduados quienes simplemente no son lo suficientemente listos para trabajar como programadores en nada mas sofisticado que &amp;#8220;Sólo Otra Aplicación Contable en Java&amp;#8221;, aunque se las han arreglado para colarse a través de la (ahora simplificada) carrera. Esos estudiantes nunca sobrevivirían al 6.001 del MIT o al CS 323 en Yale y, francamente, esa es una razón por la cual, como empleador, un título en CS del MIT o Yale tiene más peso que uno de Duke, que recientemente se hizo 100%-Java, o de Penn, donde remplazaron Scheme y ML por Java tratando de enseñar la materia que casi nos mata a mis compañeros y a mi, CSE121. No es que no quiera contratar chicos listos de Duke o Penn, lo hago, es sólo que es mucho más difícil para mí darme cuenta de cuáles son. Yo estaba acostumbrado a decir que los chicos listos eran aquellos que podían desmenuzar un algoritmo recursivo en segundos, o implementar funciones de manipulación de listas enlazadas usando punteros tan rápido como podían escribir en la pizarra. Pero con graduado sde Universidades-Java, no puedo saber si padecen esos problemas a causa de haber sido mal educados o si los padecen porque realmente carecen de esa parte del cerebro que van a necesitar para ser buenos programadores en el trabajo. Paul Graham los llama &amp;#8220;&lt;a href="http://www.paulgraham.com/avg.html"&gt;&lt;em&gt;Blub Programmers&lt;/em&gt;&lt;/a&gt;&amp;#8220;.&lt;br&gt; &lt;br /&gt;Ya es bastante malo que las Universidades-Java fallen en filtrar los chicos que nunca van a ser buenos programadores, algo que las universidades podrían justificablemente decir que no es su problema. Después de todo es la industria, o al menos los reclutadores-que-usan-grep, quien está pidiendo a gritos que se enseñe Java.&lt;br&gt; &lt;br /&gt;Pero las Universidades-Java fallan también en entrenar las mente de los chicos para ser hábiles, ágiles y lo suficientemente flexibles para lograr buen diseño de software (y no me refiero al “diseño” OO, donde gastas incontables horas acomodando tu jerarquía de objetos, o preocupándote de &amp;#8220;problemas&amp;#8221; superfluos como “tiene-un” vs. “es-un”). Necesitas entrenamiento para pensar en las cosas a varios niveles de abstracción simultáneamente, y ese tipo de pensamiento es exactamente lo que necesitas para diseñar excelentes arquitecturas de software.&lt;br&gt; &lt;br /&gt;Puedes estar preguntándote si la enseñanza de programación orientada a objetos (OOP) es un buen sustituto de los punteros y la recursión para el filtrado. La respuesta rápida: no. Sin debatir acerca de los meritos de la OOP, simplemente no es lo suficientemente difícil para filtrar a los programadores mediocres. OOP en las universidades consiste básicamente en memorizar un puñado de términos de vocabulario como “encapsulacion” y “herencia” y tomar exámenes del tipo &amp;#8220;multiple-choice&amp;#8221; acerca de las diferencias entre polimorfismo y sobrecarga. No más difícil que memorizar fechas destacadas y nombres en una clase de historia, la OOP tiene desafíos mentales inadecuados para espantar a los estudiantes de primer año. Cuando te enfrentas con un problema de OOP, &lt;em&gt;tu programa aun funciona&lt;/em&gt;, sólo que es algo difícil de mantener. Supuestamente. Pero cuando te enfrentas a un problema con punteros, tu programa produce línea &lt;strong&gt;Fallo de segmentación&lt;/strong&gt; y no tienes ni la menor idea de lo que está pasando, hasta que te paras, tomas una fuerte bocanada de aire y tratas de forzar tu mente a trabajar en dos diferentes niveles de abstracción simultáneamente.&lt;br&gt; &lt;br /&gt;Los reclutadores-que-usan-grep, de hecho, son ridiculizados aquí, y por un buen motivo. Nunca he conocido alguien que pueda usar Scheme, Haskell y punteros en C, que no pueda entender Java en dos días, y crear mejor código en Java que gente con cinco años de experiencia en Java. Pero trata de explicar eso al zombie de Recursos Humanos.&lt;br&gt; &lt;br /&gt;¿Pero que hay de la misión del compromiso con las CS de las facultades de CS? ¡Ellas no son escuelas vocacionales! No debería ser su trabajo entrenar gente para trabajar en la industria. Eso queda para los terciarios y los programas de capacitación del gobierno para trabajadores desplazados, dirán. Ellas se suponen que están para dar a los estudiantes las herramientas fundamentales para vivir sus vidas, no para prepararlos para sus primeras semanas de trabajo. ¿No es cierto?&lt;br&gt; &lt;br /&gt;Aun así, las CS son demostraciones (recursión), algoritmos (recursión), lenguajes (cálculo lambda), sistemas operativos (punteros), compiladores (cálculo lambda), y entonces la conclusión es que la Universidad-Java que no enseña C y no enseña Scheme, tampoco está enseñando realmente ciencias de la computación. Tan inútil como el concepto de &lt;a href="http://en.wikipedia.org/wiki/Currying"&gt; currificación de funciones&lt;/a&gt; puede serle al mundo real, es un obvio prerrequisito para un graduado en CS. No puedo entender por qué los profesores en las comisiones curriculares de las facultades de CS han permitido que sus programas sean embrutecidos a tal punto que  no sólo no pueden producir &lt;em&gt;programadores operativos&lt;/em&gt;, sino que ya ni siquiera pueden producir graduados en CS que puedan obtener PhDs y puedan competir por sus puestos de trabajo. Oh, esperen. No importa. Quizás entienda.&lt;br&gt; &lt;br /&gt;Si volvemos en el tiempo y analizamos las discusiones que tomaron lugar en el mundo académico durante el “Gran Levantamiento Java”, encontraremos que la mayor preocupación fue que Java no era lo suficientemente &lt;em&gt;simple&lt;/em&gt; para ser usado como un lenguaje de enseñanza.&lt;br&gt; &lt;br /&gt;&lt;em&gt;Mi Dios&lt;/em&gt;, pensé, &lt;em&gt;¡están tratando de embrutecer la curricula aun mas!&lt;/em&gt; ¿Por que mejor no le llevamos la comida a la boca a los estudiantes? Dejemos que los ayudantes de cátedra den los exámenes por ellos también, entonces nadie se cambiara a Estudios Americanos. ¿Cómo se supone que alguien aprenderá algo si la curricula ha sido cuidadosamente diseñada para hacer todo más fácil de lo que ya es? Parece haber una comisión de trabajo (&lt;a href="http://www.sigcse.org/topics/javataskforce/java-task-force.pdf"&gt;PDF&lt;/a&gt;) intentando idear un subconjunto simple de Java que pueda ser enseñado a estudiantes, produciendo documentación simplificada que esconde cuidadosamente toda esa basura EJB/J2EE de sus tiernas mentes, de manera tal que no tengan que preocupar sus cabecitas con otras clases que no necesiten para resolver sus aun más fáciles problemas de CS.&lt;br&gt; &lt;br /&gt;La interpretación mas compasiva de por qué las facultades CS son tan entusiastas en embrutecer sus clases es porque ello les dará más tiempo para enseñar verdaderos conceptos de CS, así no necesitaran dos clases enteras para esclarecer a los alumnos las diferencias entre, digamos, un &lt;strong&gt;int&lt;/strong&gt; y un &lt;strong&gt;Integer&lt;/strong&gt; en Java. Bueno pero si ese fuera el caso, 6.001 tiene la respuesta perfecta: Scheme, un lenguaje de enseñanza tan simple que el lenguaje entero puede enseñarse a estudiantes brillantes en unos 10 minutos; entonces puedes gastar el resto del semestre enseñando puntos fijos.&lt;br&gt; &lt;br /&gt;Fiu&amp;#8230;&lt;br&gt; &lt;br /&gt;Voy a regresar a los unos y ceros.&lt;br&gt; &lt;br /&gt;(¿Te tocaron unos? ¡Bastardo suertudo! A nosotros nos tocaron todos ceros.)&lt;br&gt; &lt;br /&gt;&amp;nbsp;&lt;br&gt; &lt;br /&gt;&lt;em&gt;Esta traducción está basada en la versión disponible en &lt;a href="http://local.joelonsoftware.com/wiki/Riesgos_de_las_escuelas_Java"&gt;el Wiki de Joel Spolsky&lt;/a&gt;, corregida y adaptada por Javier Smaldone.&lt;/em&gt;&lt;br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-1193332599535330187?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iZUuZL9qb7v_IVEmW8mwB6khVss/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iZUuZL9qb7v_IVEmW8mwB6khVss/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iZUuZL9qb7v_IVEmW8mwB6khVss/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iZUuZL9qb7v_IVEmW8mwB6khVss/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/1193332599535330187/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=1193332599535330187" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/1193332599535330187?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/1193332599535330187?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/06/los-riesgos-de-las-universidades-java.html" title="Los Riesgos de las Universidades-Java" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0MEQX85eSp7ImA9WxFWGE0.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-3996270380615383421</id><published>2010-06-06T09:30:00.000+02:00</published><updated>2010-06-06T09:30:00.121+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-06T09:30:00.121+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Towards a Universal VM by Alex Buckley</title><content type="html">This is a very good presentation by Alex Buckley about the JVM.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/Towards-a-Universal-VM"&gt;http://www.infoq.com/presentations/Towards-a-Universal-VM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-3996270380615383421?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rze3Mm6rOmYuWJ-9D5T1cjirBFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rze3Mm6rOmYuWJ-9D5T1cjirBFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rze3Mm6rOmYuWJ-9D5T1cjirBFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rze3Mm6rOmYuWJ-9D5T1cjirBFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/3996270380615383421/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=3996270380615383421" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3996270380615383421?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3996270380615383421?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/06/towards-universal-vm-by-alex-buckley.html" title="Towards a Universal VM by Alex Buckley" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEADRXgyfCp7ImA9WxFaEk0.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-7842649902448541071</id><published>2010-06-04T21:35:00.005+02:00</published><updated>2010-07-15T17:12:54.694+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-15T17:12:54.694+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><title>Carl Sagan vs Iker Jimenez - El dragón en el garaje</title><content type="html">&lt;div style="text-align: justify;"&gt;Cuarto milenio tiene algunas cosas interesantes, pero el "ansia viva" por rellenar e infundir de un halo de importancia a verdaderas &lt;del&gt;vanalidades&lt;/del&gt; banalidades, hace que yo particularmente lo considere un programa "chorra", porque admitámoslo, ofrecen como ciertas y veraces, autenticas "chorradas".&lt;br /&gt;&lt;br /&gt;Todo esto viene a colación de este vídeo (encontrado &lt;a href="http://blogs.elcorreo.com/magonia/2010/6/4/carl-sagan-deja-ridiculo-iker-jimenez"&gt;aquí&lt;/a&gt;) sobre la historia del dragón en el garaje que obtuve &lt;a href="http://lahabitacioncerrada.blogspot.com/2005/07/un-dragn-en-mi-garaje.html"&gt;aquí&lt;/a&gt; y que puedes leer debajo del vídeo.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EBVqagLrIH0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hl=es_ES&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/EBVqagLrIH0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;hl=es_ES&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"En mi garaje vive un dragón que escupe fuego por la boca."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supongamos (sigo el método de terapia de grupo del psicólogo Richard Franklin) que yo le hago a usted una aseveración como ésa. A lo mejor le gustaría comprobarlo, verlo usted mismo. A lo largo de los siglos ha habido innumerables historias de dragones, pero ninguna prueba real. ¡Qué oportunidad!&lt;br /&gt;&lt;br /&gt;- Enséñemelo – me dice usted.&lt;br /&gt;&lt;br /&gt;Yo le llevo a mi garaje. Usted mira y ve una escalera, latas de pintura vacías y un triciclo viejo, pero el dragón no está.&lt;br /&gt;&lt;br /&gt;- ¿Dónde está el dragón? – me pregunta.&lt;br /&gt;&lt;br /&gt;- Oh, está aquí – contesto yo moviendo la mano vagamente -. Me olvidé decir que es un dragón invisible.&lt;br /&gt;&lt;br /&gt;Me propone que cubra de harina el suelo del garaje para que queden marcadas las huellas del dragón.&lt;br /&gt;&lt;br /&gt;- Buena idea – replico – , pero este dragón flota en el aire.&lt;br /&gt;&lt;br /&gt;Entonces propone usar un sensor infrarrojo para detectar el fuego invisible.&lt;br /&gt;&lt;br /&gt;- Buena idea, pero el fuego invisible tampoco da calor.&lt;br /&gt;&lt;br /&gt;Se puede pintar con spray el dragón para hacerlo visible.&lt;br /&gt;&lt;br /&gt;- Buena idea, sólo que es un dragón incorpóreo y la pintura no se le pegaría.&lt;br /&gt;&lt;br /&gt;Y así sucesivamente. Yo contrarrestro cualquier prueba física que usted me propone con una explicación especial de por qué no funcionará.&lt;br /&gt;&lt;br /&gt;Ahora bien, ¿cuál es la diferencia entre un dragón invisible, incorpóreo y flotante que escupe un fuego que no quema y un dragón inexistente? Si no hay manera de refutar mi opinión, si no hay ningún experimento válido contra ella, ¿qué significa decir que mi dragón existe? Su incapacidad de invalidar mi hipótesis no equivale en absoluta a demostrar que es cierta. Las afirmaciones que no pueden probarse, las aseveraciones inmunes a la refutación son verdaderamente inútiles, por mucho valor que puedan tener para inspirarnos o excitar nuestro sentido de maravilla. Lo que yo he pedido que haga es acabar aceptando, en ausencia de pruebas, lo que yo digo.&lt;br /&gt;&lt;br /&gt;Lo único que ha aprendido usted de mi insistencia en que hay un dragón en mi garaje es que estoy mal de la cabeza. Se preguntará, si no se puede aplicar ninguna prueba física, qué fue lo que me convenció. La posibilidad de que fuera un sueño o alucinación entraría ciertamente en su pensamiento. Pero entonces ¿por qué hablo tan en serio? A lo mejor necesito ayuda. Como mínimo, puede ser que haya infravalorado la falibilidad humana.&lt;br /&gt;&lt;br /&gt;Imaginemos que, a pesar de que ninguna de las pruebas ha tenido éxito, usted desea mostrarse escrupulosamente abierto. En consecuencia, no rechaza de inmediato la idea de que haya un dragón que escupe fuego por la boca en mi garaje. Simplemente, la deja en suspenso. La prueba actual está francamente en contra pero, si surge algún nuevo dato, está dispuesto a examinarlo a ver si le convence. Seguramente es poco razonable por mi parte ofenderme porque no me cree; o criticarle por ser un pesado poco imaginativo... simplemente porque usted pronunció el veredicto escocés de "no demostrado".&lt;br /&gt;&lt;br /&gt;Imaginemos que las cosas hubiesen sido de otro modo. El dragón es invisible, de acuerdo, pero aparecen huellas en la harina cuando usted mira. Su detector de infrarrojos registra algo. La pintura de spray revela una cresta dentada en el aire delante de usted. Por muy escéptico que se pueda ser en cuanto a la existencia de dragones – por no hablar de seres invisibles – ahora debe reconocer que aquí hay algo y que, en principio, es coherente con la idea de un dragón invisible que escupe fuego por la boca.&lt;br /&gt;&lt;br /&gt;Ahora otro guión: imaginemos que no se trata sólo de mí. Imaginemos que varias personas que usted conoce, incluyendo algunos que está seguro que no se conocen entre ellas, le dicen que tienen dragones en sus garajes... pero en todos los casos la prueba es enloquecedoramente elusiva. Todos admitimos que nos perturba ser presas de una convicción tan extraña y tan poco sustentada por una prueba física. Ninguno de nosotros es un lunático. Especulamos con lo que significaría que hubiera realmente dragones escondidos en los garajes de todo el mundo y que los humanos acabáramos de enterarnos. Yo preferiría que no fuera verdad, francamente. Pero quizás todos aquellos mitos europeos y chinos antiguos sobre dragones no eran solamente mitos...&lt;br /&gt;&lt;br /&gt;Es gratificante que ahora se informe de algunas huellas de las medidas del dragón en la harina. Pero nunca aparecen cuando hay un escéptico presente. Se plantea una explicación alternativa: tras un examen atento, parece claro que las huellas podían ser falsificadas. Otro entusiasta del dragón presenta una quemadura en el dedo y la atribuye a una extraña manifestación física del aliento de fuego del dragón. Pero también aquí hay otras posibilidades. Es evidente que hay otras maneras de quemarse los dedos además de recibir el aliento de dragones invisibles. Estas "pruebas", por muy importante que las consideren los defensores del dragón, son muy poco convincentes. Una vez más, el único enfoque sensato es rechazar provisionalmente la hipótesis del dragón y permanecer abierto a otros datos físicos futuros, y preguntarse cuál puede ser la causa de que tantas personas aparentemente sanas y sobrias compartan la misma extraña ilusión.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-7842649902448541071?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XoLfCIXhZHWiAGa25yrpEwEIy8M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XoLfCIXhZHWiAGa25yrpEwEIy8M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XoLfCIXhZHWiAGa25yrpEwEIy8M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XoLfCIXhZHWiAGa25yrpEwEIy8M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/7842649902448541071/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=7842649902448541071" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7842649902448541071?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7842649902448541071?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/06/carl-sagan-vs-iker-jimenez-el-dragon-en.html" title="Carl Sagan vs Iker Jimenez - El dragón en el garaje" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;A0ADQH89cSp7ImA9WxFWEkk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-2950833246460168684</id><published>2010-05-30T21:57:00.002+02:00</published><updated>2010-05-30T22:02:51.169+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-30T22:02:51.169+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>10+1 things they never teach in college about programming.</title><content type="html">these are the 10+1 things from this &lt;a href="http://www.dzone.com/links/r/101_things_they_never_teach_in_college_about_prog.html"&gt;entry&lt;/a&gt; (where you can find extended) about what they never teach in college about programming.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;1.- We’re always wrong.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;2.- If something can break, it will break.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;3.- All code is crap.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;4.- There is always a bug.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;5.- The most important thing is the client.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;6.- Design on paper doesn’t work.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;7.- Less is more.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;8.- Coding is only 20% of what we do.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;9.- The customer doesn’t know what he/she wants NEVER!.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;10.- Someone has done it before.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bonus: Hey! Our job is cool!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;and of course if your job is about programming, yeahhhhh, it's cool, very cool!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-2950833246460168684?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r86ymZkmBZwKJw0L1VcXRMT0JcM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r86ymZkmBZwKJw0L1VcXRMT0JcM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r86ymZkmBZwKJw0L1VcXRMT0JcM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r86ymZkmBZwKJw0L1VcXRMT0JcM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/2950833246460168684/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=2950833246460168684" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2950833246460168684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2950833246460168684?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/05/101-things-they-never-teach-in-college.html" title="10+1 things they never teach in college about programming." /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CkYDQn46eCp7ImA9WxFREk8.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-6253393892433693684</id><published>2010-04-25T20:27:00.001+02:00</published><updated>2010-04-25T20:29:33.010+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-25T20:29:33.010+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>George Carlin - El Sueño Americano - Subtitulado</title><content type="html">Aunque sea humor, tiene tooooooda la razón&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/r7dL-lGCVEg&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/r7dL-lGCVEg&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;visto en &lt;a href="http://maldiaparadejardefumar.blogspot.com/2010/04/poseo-los-jovenes-uso-los-adultos.html"&gt;maldiaparadejardefumar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-6253393892433693684?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hEWVq6sY4kWEjmzwVPo6p4lklwQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hEWVq6sY4kWEjmzwVPo6p4lklwQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hEWVq6sY4kWEjmzwVPo6p4lklwQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hEWVq6sY4kWEjmzwVPo6p4lklwQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/6253393892433693684/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=6253393892433693684" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6253393892433693684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6253393892433693684?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/george-carlin-el-sueno-americano.html" title="George Carlin - El Sueño Americano - Subtitulado" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkUFSHo6fSp7ImA9WxFSF00.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-6270633221814248710</id><published>2010-04-19T22:04:00.003+02:00</published><updated>2010-04-19T22:16:59.415+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-19T22:16:59.415+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU/Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="UBUNTU" /><title>Pinnacle PCTV 310i with ubuntu 9.10</title><content type="html">&lt;div style="text-align: justify;"&gt;I've been upgrading my ubuntu from 8.04 to 8.10, 9.04 and now to 9.10. The last step (9.04 to 9.10) hasn't been as clean as spected, Pinnacle PCTV 310i doesn't work after upgraded to 9.10, there is an aditional step needed to watch dvd-t TV, you have to install "linux-firmware-nonfree", it's said you have to reboot the computer, in my case it started working intermediately.&lt;br /&gt;&lt;br /&gt;So this is the command for ubuntu command-line:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install linux-firmware-nonfree&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-6270633221814248710?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LCEudBEsvZQsDRWUT8ySR_CBo74/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LCEudBEsvZQsDRWUT8ySR_CBo74/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LCEudBEsvZQsDRWUT8ySR_CBo74/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LCEudBEsvZQsDRWUT8ySR_CBo74/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/6270633221814248710/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=6270633221814248710" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6270633221814248710?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6270633221814248710?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/pinnacle-pctv-310i-with-ubuntu-910.html" title="Pinnacle PCTV 310i with ubuntu 9.10" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkIAQ346fCp7ImA9WxFSE0g.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-5915062485673999793</id><published>2010-04-15T20:49:00.001+02:00</published><updated>2010-04-15T21:09:02.014+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-15T21:09:02.014+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="humor" /><category scheme="http://www.blogger.com/atom/ns#" term="imagenes" /><title>1984 o casi</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s56WG_I7ujo/S8dkLH94X5I/AAAAAAAALRs/cW5LpHnVtk0/s1600/orwell.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_s56WG_I7ujo/S8dkLH94X5I/AAAAAAAALRs/cW5LpHnVtk0/s400/orwell.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5460443215489949586" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-5915062485673999793?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OA3t2sG1OHQkOuJoYnaAshSuvdc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OA3t2sG1OHQkOuJoYnaAshSuvdc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OA3t2sG1OHQkOuJoYnaAshSuvdc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OA3t2sG1OHQkOuJoYnaAshSuvdc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/5915062485673999793/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=5915062485673999793" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5915062485673999793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5915062485673999793?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/1984-o-casi.html" title="1984 o casi" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_s56WG_I7ujo/S8dkLH94X5I/AAAAAAAALRs/cW5LpHnVtk0/s72-c/orwell.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEMR3g8fCp7ImA9WxFTFUU.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-4924925768673918997</id><published>2010-04-06T22:09:00.001+02:00</published><updated>2010-04-06T22:11:26.674+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-06T22:11:26.674+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="seguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Eludiendo la cadena de una puerta</title><content type="html">&lt;object width="640" height="505"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7INIRLe7x0Y&amp;hl=es_ES&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7INIRLe7x0Y&amp;hl=es_ES&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-4924925768673918997?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WxlOnwc7Od8gPW3Ko8e8j_4Le7M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxlOnwc7Od8gPW3Ko8e8j_4Le7M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WxlOnwc7Od8gPW3Ko8e8j_4Le7M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WxlOnwc7Od8gPW3Ko8e8j_4Le7M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/4924925768673918997/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=4924925768673918997" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4924925768673918997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4924925768673918997?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/eludiendo-la-cadena-de-una-puerta.html" title="Eludiendo la cadena de una puerta" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0cFQX8_eip7ImA9WxFTEkk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-5005211151177790273</id><published>2010-04-02T23:33:00.005+02:00</published><updated>2010-04-02T23:50:10.142+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-02T23:50:10.142+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="cine" /><title>Furia de Titanes 3D - un timo como una casa</title><content type="html">&lt;div style="text-align: justify;"&gt;Hoy he visto "Furia de Titanes" en 3D, y la experiencia ha valido la pena, ya puedo decir que NO MERECE LA PENA ir a ver una película en 3D, al menos si es como ésta (que según parece no es 3D sino &lt;a href="http://www.abc.es/agencias/noticia.asp?noticia=331315"&gt;2D tratado&lt;/a&gt;). Aunque las imágenes sí se veían distintas casi nunca para mejor, las escenas oscuras no se veían nada bien, las escenas de acción o con movimientos ligeramente rápidos eran muy complicadas de seguir, sólo las excenas de paisajes con suficiente luz, y a gran distancia tenían algo que aportar, el resto no. En general la sensación es de reducción del angulo de visión, he terminado con molestias en los ojos (nada grave o permanente).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;En lo que se refiere a lo que sería la película en 2D, no es mala, aunque tampoco es un peliculón.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-5005211151177790273?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JWxI9bTtaApsER_Bgm305ZjwKfA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JWxI9bTtaApsER_Bgm305ZjwKfA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JWxI9bTtaApsER_Bgm305ZjwKfA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JWxI9bTtaApsER_Bgm305ZjwKfA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/5005211151177790273/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=5005211151177790273" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5005211151177790273?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/5005211151177790273?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/furia-de-titanes-3d-un-timo-como-una.html" title="Furia de Titanes 3D - un timo como una casa" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE8DQ3c7fyp7ImA9WxFTEUg.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-7823764530171161811</id><published>2010-04-01T22:12:00.008+02:00</published><updated>2010-04-01T23:21:12.907+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-01T23:21:12.907+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Subversion" /><category scheme="http://www.blogger.com/atom/ns#" term="SvnHg" /><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>SvnHg, migrating from subversion (svn) to mercurial (Hg)</title><content type="html">&lt;div style="text-align: justify;"&gt;Few weeks ago I've started reading about mercurial (Hg) and what's the diference with subversion (the one I'm currently using at work and for my personal software). Now I want to migrate my personal software hosted in &lt;a href="http://code.google.com/intl/en/projecthosting/"&gt;google code&lt;/a&gt; but none of the tools I've tried have worked, or was easy enough for me. So I've done mine :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/softenido/wiki/SvnHg"&gt;SvnHg&lt;/a&gt; is very simple, it just use &lt;span style="font-weight:bold;"&gt;svn&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;hg&lt;/span&gt; commands to do the job.&lt;br /&gt;&lt;br /&gt;You can download &lt;a href="http://code.google.com/p/softenido/downloads/list"&gt;here&lt;/a&gt;, unzip and install it (or use the java -jar ...).&lt;br /&gt;&lt;br /&gt;to install&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;sudo java -jar SvnHg.jar --install&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;to migrate just type&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;svnhg -v dirname&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;you can use options or just let the program ask you what he need to work.&lt;br /&gt;&lt;br /&gt;enjoy it!!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-7823764530171161811?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Te08UUQMw7Zgi4S-6Ra7zXWaKi8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Te08UUQMw7Zgi4S-6Ra7zXWaKi8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Te08UUQMw7Zgi4S-6Ra7zXWaKi8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Te08UUQMw7Zgi4S-6Ra7zXWaKi8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/7823764530171161811/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=7823764530171161811" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7823764530171161811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7823764530171161811?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/04/svnhg-migrating-from-subversion-svn-to.html" title="SvnHg, migrating from subversion (svn) to mercurial (Hg)" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUFRHY4fCp7ImA9WxFTEEs.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-2418233235809344009</id><published>2010-03-31T22:15:00.003+02:00</published><updated>2010-03-31T22:26:55.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-31T22:26:55.834+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="me-tv" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><category scheme="http://www.blogger.com/atom/ns#" term="GNU/Linux" /><title>me-tv mutes all programs (solved)</title><content type="html">&lt;div style="text-align: justify;"&gt;After upgrading my ubuntu from version 8.04 to 9.04 (through 8.10), &lt;span style="font-weight:bold;"&gt;me-tv&lt;/span&gt; mute button (or key M) mutes all programs, mplayer, chrome, firefox, ..., to fix the problem just change in &lt;span style="font-weight:bold;"&gt;~/.me-tv/xine.config&lt;/span&gt; the following line&lt;br /&gt;&lt;blockquote&gt;gui.audio_mixer_method:Sound card&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;to this one&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;gui.audio_mixer_method:Software&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;if this line is preceded by a &lt;span style="font-weight:bold;"&gt;#&lt;/span&gt; delete it, or the entire line will be ignored.&lt;br /&gt;&lt;br /&gt;now restart &lt;span style="font-weight:bold;"&gt;me-tv&lt;/span&gt; and enjoy it.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-2418233235809344009?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SnNwN5Ap08ej_T5WSSj7fTC5of4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SnNwN5Ap08ej_T5WSSj7fTC5of4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SnNwN5Ap08ej_T5WSSj7fTC5of4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SnNwN5Ap08ej_T5WSSj7fTC5of4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/2418233235809344009/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=2418233235809344009" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2418233235809344009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2418233235809344009?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/03/me-tv-mutes-all-programs-solved.html" title="me-tv mutes all programs (solved)" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUQNQXo4fyp7ImA9WxBaEEk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-6342485506774864675</id><published>2010-03-20T00:58:00.002+01:00</published><updated>2010-03-20T01:03:10.437+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-20T01:03:10.437+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="libros" /><category scheme="http://www.blogger.com/atom/ns#" term="url" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Mercurial: The Definitive Guide by Bryan O'Sullivan</title><content type="html">This is a book about mercurial (Hg), the revision control manager.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hgbook.red-bean.com/read/"&gt;Mercurial: The Definitive Guide by Bryan O'Sullivan&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-6342485506774864675?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lhcAzjnNP_xjl-G4npb6sSpeLLg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lhcAzjnNP_xjl-G4npb6sSpeLLg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lhcAzjnNP_xjl-G4npb6sSpeLLg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lhcAzjnNP_xjl-G4npb6sSpeLLg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/6342485506774864675/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=6342485506774864675" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6342485506774864675?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/6342485506774864675?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/03/mercurial-definitive-guide-by-bryan.html" title="Mercurial: The Definitive Guide by Bryan O'Sullivan" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMHQXg7cCp7ImA9WxBbGUg.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-4451679239763745882</id><published>2010-03-19T00:50:00.001+01:00</published><updated>2010-03-19T00:53:50.608+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-19T00:53:50.608+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Hg Init: a Mercurial tutorial</title><content type="html">&lt;a href="http://hginit.com"&gt;http://hginit.com&lt;/a&gt; is a good tutorial to start with mercurial (Hg) by &lt;a href="http://www.joelonsoftware.com/"&gt;Joel Spolsky&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-4451679239763745882?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t12h_p6ocxEtyWgp8eP_IZzDs1A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t12h_p6ocxEtyWgp8eP_IZzDs1A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t12h_p6ocxEtyWgp8eP_IZzDs1A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t12h_p6ocxEtyWgp8eP_IZzDs1A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/4451679239763745882/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=4451679239763745882" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4451679239763745882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4451679239763745882?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/03/hg-init-mercurial-tutorial.html" title="Hg Init: a Mercurial tutorial" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkIBR3c5eip7ImA9WxBbFUs.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-8934909449350082673</id><published>2010-03-14T10:51:00.002+01:00</published><updated>2010-03-14T10:55:56.922+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-14T10:55:56.922+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><title>Cambio de Look</title><content type="html">He cambiado el Look and Feel de mi blog, no por que me guste más, no porque cargue más rápido, sólo para que quepa mejor el widget de una palabra en inglés al día. Y ya de paso, para que todo quepa mejor, estaba harto de estrecheces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-8934909449350082673?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/C6JpU5LSdi4AcVf1Ql_ND3VjSe8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6JpU5LSdi4AcVf1Ql_ND3VjSe8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/C6JpU5LSdi4AcVf1Ql_ND3VjSe8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6JpU5LSdi4AcVf1Ql_ND3VjSe8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/8934909449350082673/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=8934909449350082673" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/8934909449350082673?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/8934909449350082673?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/03/cambio-de-look.html" title="Cambio de Look" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DUQEQX05cCp7ImA9WxBVFkg.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-4012767500835855816</id><published>2010-02-20T10:15:00.000+01:00</published><updated>2010-02-20T10:15:00.328+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-20T10:15:00.328+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><category scheme="http://www.blogger.com/atom/ns#" term="musica" /><title>A todo el mundo le encanta la música clásica! solo que todavía no lo han descubierto.</title><content type="html">Magnífica explicación del Preludio Op.28, No.4 de Chopin&lt;br /&gt;&lt;br /&gt;excellent explanation of the Prelude Op.28, No.4 Chopin&lt;br /&gt;&lt;br /&gt;&lt;object width="500" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/71w-oasL6iQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/71w-oasL6iQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="500" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;visto en &lt;a href="http://www.enchufa2.es/archives/preludio-op-28-no-4-de-chopin.html"&gt;enchufa2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-4012767500835855816?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P2GPrxkJWZ1pW7hH77kxsKqHEJw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P2GPrxkJWZ1pW7hH77kxsKqHEJw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P2GPrxkJWZ1pW7hH77kxsKqHEJw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P2GPrxkJWZ1pW7hH77kxsKqHEJw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/4012767500835855816/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=4012767500835855816" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4012767500835855816?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/4012767500835855816?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/02/todo-el-mundo-le-encanta-la-musica.html" title="A todo el mundo le encanta la música clásica! solo que todavía no lo han descubierto." /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUYNR3w5cCp7ImA9WxBVFEk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-3311013964591879188</id><published>2010-02-17T23:49:00.002+01:00</published><updated>2010-02-17T23:53:16.228+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-17T23:53:16.228+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><title>Quo Vadis JDK7?</title><content type="html">This is an Oracle "The TechCast Show" with Mark Reinhold talking about JDK7.&lt;br /&gt;&lt;br /&gt;&lt;object id="flashObj" width="486" height="322" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"&gt;&lt;param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&amp;publisherID=1460825906" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="videoId=66865647001&amp;linkBaseURL=https%3A%2F%2Fchannelsun.sun.com%2Fmedia%2Fshow%2F15028&amp;playerID=1640183659&amp;domain=embed&amp;" /&gt;&lt;param name="base" value="http://admin.brightcove.com" /&gt;&lt;param name="seamlesstabbing" value="false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="swLiveConnect" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f9/1640183659?isVid=1&amp;publisherID=1460825906" bgcolor="#FFFFFF" flashVars="videoId=66865647001&amp;linkBaseURL=https%3A%2F%2Fchannelsun.sun.com%2Fmedia%2Fshow%2F15028&amp;playerID=1640183659&amp;domain=embed&amp;" base="http://admin.brightcove.com" name="flashObj" width="486" height="322" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;You can also read &lt;a href="http://java.dzone.com/articles/mark-reinhold-talks-about-jdk"&gt;this&lt;/a&gt; resume&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-3311013964591879188?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QyTTmM3cTZuOyPHRN016wjtaSpE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QyTTmM3cTZuOyPHRN016wjtaSpE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QyTTmM3cTZuOyPHRN016wjtaSpE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QyTTmM3cTZuOyPHRN016wjtaSpE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/3311013964591879188/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=3311013964591879188" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3311013964591879188?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/3311013964591879188?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/02/quo-vadis-jdk7.html" title="Quo Vadis JDK7?" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQBSH4_fyp7ImA9WxBVEEk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-7987384753035314882</id><published>2010-02-13T09:04:00.001+01:00</published><updated>2010-02-13T09:05:59.047+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-13T09:05:59.047+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ES" /><category scheme="http://www.blogger.com/atom/ns#" term="miscelanea" /><title>David Bravo - Entrevista en Buenafuente</title><content type="html">&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Rac-uXselsc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Rac-uXselsc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UA4nc_hbueU&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/UA4nc_hbueU&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=es_ES&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-7987384753035314882?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jrz-tUXs5iwZhNunfATHUDgtQVo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jrz-tUXs5iwZhNunfATHUDgtQVo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jrz-tUXs5iwZhNunfATHUDgtQVo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jrz-tUXs5iwZhNunfATHUDgtQVo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/7987384753035314882/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=7987384753035314882" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7987384753035314882?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/7987384753035314882?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/02/david-bravo-entrevista-en-buenafuente.html" title="David Bravo - Entrevista en Buenafuente" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUUERXkzeip7ImA9WxBWFEk.&quot;"><id>tag:blogger.com,1999:blog-6250269325136296054.post-2944801724311275365</id><published>2010-02-06T09:00:00.000+01:00</published><updated>2010-02-06T09:00:04.782+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-06T09:00:04.782+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="EN" /><category scheme="http://www.blogger.com/atom/ns#" term="I.M.P.S." /><title>I.M.P.S. The Relentless – Chapter 2: Norca System</title><content type="html">&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7860202&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00adef&amp;amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="never" width="521" height="254" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;br /&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6250269325136296054-2944801724311275365?l=www.softenido.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lhzAIB7DQfMefUwRw5X41ZBJyYY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lhzAIB7DQfMefUwRw5X41ZBJyYY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lhzAIB7DQfMefUwRw5X41ZBJyYY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lhzAIB7DQfMefUwRw5X41ZBJyYY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.softenido.com/feeds/2944801724311275365/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6250269325136296054&amp;postID=2944801724311275365" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2944801724311275365?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6250269325136296054/posts/default/2944801724311275365?v=2" /><link rel="alternate" type="text/html" href="http://www.softenido.com/2010/02/imps-relentless-chapter-2-norca-system.html" title="I.M.P.S. The Relentless – Chapter 2: Norca System" /><author><name>franci</name><uri>http://www.blogger.com/profile/07136986325582743029</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00447227412716885180" /></author><thr:total>0</thr:total></entry></feed>
