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

<channel>
	<title>Pensamientos de otro más &#187; Programacion</title>
	<atom:link href="http://www.superjueves.net/pensamientosdeotromas/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.superjueves.net/pensamientosdeotromas</link>
	<description>Sitio sobre Agilidad, desarrollo de software, programación, etc</description>
	<lastBuildDate>Tue, 24 Jul 2018 19:15:07 +0000</lastBuildDate>
	<language>es-ES</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.8.41</generator>
	<item>
		<title>Version Control By Example</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2012/05/23/version-control-by-example/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2012/05/23/version-control-by-example/#comments</comments>
		<pubDate>Wed, 23 May 2012 14:15:52 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Positivismo]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software craftsmanship]]></category>
		<category><![CDATA[control de versiones]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[libro]]></category>
		<category><![CDATA[Libros]]></category>
		<category><![CDATA[Plastic scm]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=573</guid>
		<description><![CDATA[&#160; Hoy quería hacer una referencia al libro “Version Control By Example” de Eric Sink. Este libro nos zambulle en el mundo de los controles de versiones desde prácticamente 0. Bastante fácil de leer, corto y con muchos ejemplos de código modificado paso a paso por varias personas. El libro consta de 13 capítulos, en [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-577" title="versioncontro2" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/05/versioncontro2.jpg" alt="" width="226" height="300" /></p>
<p>&nbsp;</p>
<p>Hoy quería hacer una referencia al libro “<a href="http://www.ericsink.com/vcbe/" target="_blank">Version Control By Example</a>” de<a href="http://www.ericsink.com/" target="_blank"> Eric Sink</a>.</p>
<p>Este libro nos zambulle en el mundo de los controles de versiones desde prácticamente 0. Bastante fácil de leer, corto y con muchos ejemplos de código modificado paso a paso por varias personas.</p>
<p>El libro consta de 13 capítulos, en los que nos va contando desde la historia de los controles de versiones, pasando por los controles de versiones centralizados como Suversion, a continuación los distribuidos como Git y terminando con algunas buenas prácticas.</p>
<p>Personalmente recomendaría este libro sobre todo, a gente que esté empezando en este mundillo y no tenga mucha idea de cómo se trabaja en el día a día con controles de versiones. Aunque también es muy recomendable para gente que solamente conoce los 4 comandos básicos de su control de versiones del trabajo y quiere aprender un poco más del tema.</p>
<p>Los ejemplos paso a paso de cómo una persona empieza a tocar un código, otra lo modifica, salen conflictos y cómo los resuelven, son el día a día de cualquier programador de aquí a la Índia.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-582" title="1804_image001" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/05/1804_image001.jpg" alt="" width="348" height="261" /></p>
<p>&nbsp;</p>
<p>Con él, no solo aprenderemos a utilizar los comandos de commit y update que sabe todo el mundo, sino que nos enseñará a ir más allá y saber utilizar estas herramientas con todas sus posibilidades. Crear y unir ramas, crear, borrar y modificar privilegios de usuarios, deshacer cambios, clonar repositorios y otras cuantas cosas más. Y todo esto paso a paso, con todos los comandos necesarios.</p>
<p>Unos de los capítulos más interesantes para los que quieren ir más a fondo, es el penúltimo, que nos habla de las tripas de los controles de versiones. De como trabajan estos programas internamente y qué técnicas utilizan para hacer lo que hacen, junto con algunas de sus limitaciones.</p>
<p>Otro capítulo que a mi me gustó mucho, es en el que habla sobre técnicas de control de flujos de trabajo. En él nos explica levemente cada una de las técnicas más utilizadas como una rama por cada release o otra muy de moda, aunque antigua,<a href="http://codicesoftware.blogspot.com/2010/08/branch-per-task-workflow-explained.html" target="_blank"> rama por tarea</a>. Aunque el capítulo es chulo, me hubiera gustado que profundizará mucho más en este tema.</p>
<p>El capítulo final lo dedica a un resumen de buenas prácticas. Muy corto y consejos muy familiares para los que llevamos un tiempo en esto. Os dejo algunos a continuación:</p>
<ul>
<li>Realiza tus commits de forma lógica, que se refieran a un cambio concreto</li>
<li>Explica al máximo tus commits</li>
<li>Usa etiquetas</li>
<li>Revisa siempre los merges antes de hacer el commit</li>
<li>No subas código comentado</li>
</ul>
<p>Se echa de menos algún capítulo sobre otros sistemas de control de versiones muy utilizados en el mercado, como<a href="http://en.wikipedia.org/wiki/Team_Foundation_Server" target="_blank"> TFS</a> o<a href="http://www.plasticscm.com/" target="_blank"> Plastic SCM</a> (este último producto Español de la empresa<a href="http://codicesoftware-es.blogspot.com.es/" target="_blank"> Codice Software</a>) y sobra parte de<a href="http://veracity-scm.com/" target="_blank"> Veracity</a>.</p>
<p>Si aún no os he convencido para leerlo, deciros que está disponible de forma totalmente gratuita en formato<a href="http://www.ericsink.com/vcbe/vcbe_usletter_lo.pdf" target="_blank"> PDF</a>, para consultarlo<a href="http://www.ericsink.com/vcbe/html/index.html" target="_blank"> online</a>, como<a href="http://www.ericsink.com/vcbe/vcbe.epub" target="_blank"> EPUB</a> y finalmente en libro físico, que si quieres te lo<a href="http://www.ericsink.com/entries/vcbe_print_edition_free.html" target="_blank"> envían gratis</a> a tu casa sin gastos de envío!!! Y de esto último os puedo dar fe <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>
<p>Espero haberos dejado sin excusas!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2012/05/23/version-control-by-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Dejar de programar? Mal!</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2012/03/19/%c2%bfdejar-de-programar-mal/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2012/03/19/%c2%bfdejar-de-programar-mal/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 07:00:53 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[empresa]]></category>
		<category><![CDATA[profesional]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Programar]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=507</guid>
		<description><![CDATA[&#160; ¡Mal! no del todo, pero suficiente para que me tenga que parar a hacerte un par de sugerencias. ¿Parar de programar por qué te han ascendido y tu trabajo es ahora de Súper Arquitecto, de Mega Analista o de Jefe de proyecto? ¡MAL! Empieza a programar otra vez, empieza con Python, Ruby, Scala o [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-518" title="sistemas" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/03/sistemas1.jpg" alt="" width="410" height="205" /></p>
<p>&nbsp;</p>
<p><strong>¡Mal!</strong> no del todo, pero suficiente para que me tenga que parar a hacerte un par de sugerencias. ¿Parar de programar por qué te han ascendido y tu trabajo es ahora de Súper Arquitecto, de Mega Analista o de Jefe de proyecto? ¡<strong>MAL</strong>!</p>
<p>Empieza a programar otra vez, empieza con Python, Ruby, Scala o Groovy, el lenguaje que más te llame la atención. Uno con el que puedas aprender nuevas técnicas y que sea productivo. ¡Tu carrera depende de ello!</p>
<p>Si no me haces caso y te olvidas de la programación, te separarás del acto de la creación. Esta importante parte, la verás como si fuera una subcontrata externa, tu lo piensas y diseñas y ellos lo crean. Otra vez <strong>MAL</strong>!</p>
<p>Pensamos que la programación es un proceso automático, que da igual a quién se la demos, que con el mismo tiempo, precio y recursos nos lo entregarán sin problemas ya que yo les doy la parte difícil hecha. Y da igual que sea nuestro propio equipo de desarrollo o una subcontrata, para ti será un proceso externo. <strong>Mal</strong>.</p>
<p>Pero no nos olvidemos que los autómatas no construyen, sino que procesan. Mientras que buenos procesos pueden ahorrar una enorme cantidad de dinero, no van a traer al mundo nada nuevo. ¿Y al final que es el 90% de proyectos de Software? algo nuevo o parcialmente nuevo y sobre todo hecho a medida, para un cliente o para unos usuarios. Con lo que una de las necesidades principales es creatividad.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="size-full wp-image-510 aligncenter" title="monos_picando_codigo" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/03/monos_picando_codigo.jpg" alt="" width="400" height="308" /></p>
<p>&nbsp;</p>
<p>Desvincularte del código es un mal movimiento para tu carrera. En grandes empresas, el control suele mandar y las políticas y los procesos son sus aliados. Al entrar en esta dinámica, podemos olvidar como se desarrolla software. Y mucho más importante, podemos olvidarnos de como está cambiando la industria del desarrollo de software.</p>
<p>No estoy diciendo que debas temer por tu trabajo por qué compañeros se van del país y triunfan fuera. Ni te estoy sugiriendo que te andes con cuidado por qué la crisis está en su peor momento. Te estoy aconsejando que no te olvides de la programación. Por que si te olvidas de esa parte, entonces si debes tener mucho cuidado. Vas a tener que poner todo el cuidado en no dejar que la enorme y rápida evolución del mundo del desarrollo del Software te adelante y sea más rápida que tú.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-514" title="JP no técnico" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/03/JP-no-técnico1.jpg" alt="" width="350" height="118" /></p>
<p>&nbsp;</p>
<p>Ten cuidado con pensar que por llevar 10 ó 15 años a tus espaldas como programador y 5 de Manager, ya sabes como desarrollar buen Software aquí y en el futuro. <strong>Este mundo va muy rápido y cada día más, te puedes quedar desfasado en cualquier momento.</strong></p>
<p>Sé que tienes expectativas y lo entiendo, se suele escuchar mucho frases como “Si sigo programando, no voy a escalar en la estructura de la empresa y nunca voy a llegar a nada!” <strong>MAL, muy MAL</strong>. Si lo que realmente te gusta es crear buen software, vivir de ello y disfrutar de tu trabajo, tienes que seguir en la brecha y conocer de primera mano como se hace, las tripas. ¿Esto no es aprender?, ¿esto no es mejorar? ¿esto no es avanzar laboralmente?</p>
<p>Si sigues creyendo que por estar programando no eres nadie, algo falla. Puedes estar orgulloso de ello. Puedes seguir aprendiendo cosas nuevas fuera de este gran espectro y zambullirte en todo el proceso con el cliente y el resto del equipo, pero <strong>no dejes de programar.</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2012/03/19/%c2%bfdejar-de-programar-mal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Seven Languages In Seven Weeks y los paradigmas de programación</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2012/02/19/seven-languages-in-seven-weeks-y-los-paradigmas-de-programacion/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2012/02/19/seven-languages-in-seven-weeks-y-los-paradigmas-de-programacion/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 20:06:32 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Positivismo]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software craftsmanship]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[IO]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Lecturas]]></category>
		<category><![CDATA[Lenguajes]]></category>
		<category><![CDATA[Libros]]></category>
		<category><![CDATA[Prolog]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=422</guid>
		<description><![CDATA[&#160; Hace unos meses terminé el libro “Seven Languages In Seven Weeks” de Pragmatic Bookself. Fue una temporada bastante entretenida y muy enriquecedora para mi faceta de programador. Aquí va mi resumen. &#160; El libro nos ofrece un aprendizaje relámpago por cada uno de los 7 lenguajes que trata, Ruby, IO, Prolog, Scala, Erlang, Clojure [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-460 aligncenter" title="sevenlanguages2" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/sevenlanguages2.jpg" alt="" width="335" height="402" /></p>
<p>&nbsp;</p>
<div>Hace unos meses terminé el libro “<a href="http://pragprog.com/book/btlang/seven-languages-in-seven-weeks" target="_blank">Seven Languages In Seven Weeks</a>” de <a href="http://pragprog.com/" target="_blank">Pragmatic Bookself</a>. Fue una temporada bastante entretenida y muy enriquecedora para mi faceta de programador. Aquí va mi resumen.</div>
<p>&nbsp;</p>
<div>El libro nos ofrece un aprendizaje relámpago por cada uno de los 7 lenguajes que trata, <a title="Ruby" href="http://www.ruby-lang.org/es/" target="_blank">Ruby</a>, <a title="IO" href="http://iolanguage.com/" target="_blank">IO</a>, <a title="Prolog" href="http://es.wikipedia.org/wiki/Prolog" target="_blank">Prolog</a>, <a title="Scala" href="http://www.scala-lang.org/" target="_blank">Scala</a>, <a title="Erlang" href="http://www.erlang.org/" target="_blank">Erlang</a>, <a title="Clojure" href="http://clojure.org/" target="_blank">Clojure</a> y <a title="Haskell" href="http://www.haskell.org/haskellwiki/Haskell" target="_blank">Haskell</a>. Pero aunque diga relámpago, no quiero decir que este aprendizaje sea pasándolos por encima y enseñándonos lo mismo que la típica presentación o curso introductorio. De hecho el autor no bromea con la alusión de tomarse 7 semanas para aprenderlos, ya que si quieres seguir los ejercicios que propone por cada lenguaje, más vale que te pongas las pilas. Tengo que confesaros que a mi me tomó al final 10 semanas. <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_razz.gif" alt=":P" class="wp-smiley" /> </p>
<p>Cada uno de estos lenguajes se divide en 3 capítulos, con deberes de investigación sobre los mismos y ejercicios, que van desde algo fácil, hasta algunos verdaderos quebraderos de cabeza. El autor <a href="http://www.java.net/blogs/batate" target="_blank">Bruce Tate</a> ni siquiera se para a explicarnos como instalar el entorno de cada lenguaje, sino que va directamente al grano.</p>
<p>En cada capítulo hay una mini-historia del lenguaje y una entrevista al creador o a alguna persona influyente en el proyecto. Y al final de estos, se resumen las fortalezas y debilidades de cada uno.<br />
<strong>Ten en cuenta que no es para nada una guía de programación</strong>, sino una guía de estudio de cada uno de estos maravillosos y algunas veces desesperantes lenguajes de programación.</p>
<p>Una de las cosas que más me ha gustado de este libro es el sentido del humor del autor. Esta escrito de una forma muy amena y por cada lenguaje busca una figura de ciencia ficción o fantasía a la que se pueda asemejar para que te identifiques más con él y puedas comprenderlo, como puede ser el comandante Spock con Haskell, Eduardo Manos-Tijeras con Scala o Mary Poppins con Ruby. Por supuesto con sus ejemplos y definiciones de por qué se parecen a esos personajes, y desde mi punto de vista, acierta bastante <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>
<p>El libro descubre nuevas ideas a los programadores que estén acostumbrados a trabajar con lenguajes orientados a objetos, enseñando los distintos paradigmas que existen dentro de otros mundos, como la programación funcional o la lógica. Te obliga a salir de tu acostumbrada forma de pensar y le da la vuelta a todo para que tengas que forzarte a olvidar el como programas en el día a día, enseñándote un nuevo camino a la hora de organizar y construir programas. <strong>Con él aprendes el estado del arte dentro del mundo de la programación y los diferentes paradigmas que existen en este mundillo</strong> cada vez más amplio.<br />
&nbsp;</p>
<p style="text-align: center;"><img class="size-full wp-image-462 aligncenter" title="brain_muscle" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/brain_muscle.jpg" alt="" width="255" height="198" /></p>
</div>
<div>
<h2><strong>Paradigmas:</strong></h2>
<p><strong>1º Orientación a Objetos (Ruby, Scala)</strong></p>
<p>Este paradigma de programación es el más conocido y en el que se encuentran el groso de los programadores. El libro empieza con él para que te sientas a gusto y te acomodes a la forma de trabajar. En él practicamos con las 3 bases, encapsulación, polimorfismo y herencia.</p>
<p>Con Ruby experimentamos la potencia del “<a href="http://es.wikipedia.org/wiki/Duck_typing" target="_blank">Dynamic duck typing</a>” y la <a href="http://es.wikipedia.org/wiki/Metaprogramaci%C3%B3n" target="_blank">Metaprogramación</a>, después pasando por Scala y introduciendonos en otro paradigma la “<a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional" target="_blank">Programación funcional</a>”.<br />
Ambos lenguajes se utilizan en aplicaciones generalizadas y ambos presentan avances significativos en el diseño de lenguajes con respecto a los lenguajes principales como Java.</p>
<p>&nbsp;</p>
</div>
<p style="text-align: center;"><img class="alignnone size-full wp-image-471" title="ruby" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/ruby.jpg" alt="" width="75" height="75" /> <img class="alignnone size-full wp-image-467" title="Scala" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/Scala1.png" alt="" width="200" height="58" /></p>
<p style="text-align: center;">
<p>&nbsp;</p>
<div><strong>2º Orientación a Prototipos o Prototype Programing (IO)</strong>Este tipo, no llega a ser un paradigma en si mismo, sino más un subtipo de la programación orientada a objetos, pero se ha diferenciado suficiente en la práctica como para separarlo como modelo. En lugar de trabajar a través de la construcción de clases, todos los prototipos son instancias de objetos, que a su vez se van clonando y extendiendo sus funcionalidades.</div>
<p>Esta familia de lenguajes incluye JavaScript e IO entre otros. Brutalmente simple y expresivo IO tiene la capacidad de poder adaptarlo totalmente y definir nuestro propios DSLs, también parece que sirve muy bien para crear interfaces, aunque no es el lenguaje más desarrollado de los que nos encontramos en el libro.<br />
&nbsp;</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-465" title="Io-logo" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/Io-logo.png" alt="" width="64" height="64" /></p>
<p style="text-align: center;">
<p>&nbsp;</p>
<div><strong>3º Programación Lógica (Prolog)</strong>Este tipo de lenguajes de programación están orientados a resolver un estrecho tipo de problemas, aunque para ellos son asombrosamente eficientes. Con ellos definimos las reglas para el universo que plantea el problema y a continuación le preguntamos al lenguaje que nos desvele la solución a las preguntas.<br />
Cuando el problema se ajusta a unas reglas lógicas, Prolog es capaz de conseguir resultados en muy pocas lineas de código que en cualquier otro lenguaje llevaría cientos de ellas y horas de comeduras de cabeza por parte del programador.<br />
Estos lenguajes se utilizan en ámbitos como el control de tráfico aéreo o de trenes, casualmente en mi empresa se utiliza justo para el cálculo de rutas para trenes de cercanías <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </div>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-466" title="prolog" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/prolog.jpg" alt="" width="200" height="56" /></p>
<p style="text-align: center;">
<p>&nbsp;</p>
<div><strong>4º Programación Funcional (Scala, Erlang, Clojure, Haskell)</strong>Este paradigma es el más usado en el libro, con 4 lenguajes que se ajustan en mayor o menor pureza al mismo.<br />
La programación funcional se basa en funciones matemáticas, las cuales da igual las veces que las llamemos que darán exactamente los mismo resultados, sin influir en otras o tener efectos secundarios. Estos lenguajes son muy expresivos y normalmente necesitan menos lineas de código que los lenguajes orientados a objetos para resolver problemas. Al tratar varios lenguajes, aprendemos que diferentes grados de pureza, nos ofrecen diferentes series de ventajas y desventajas.<br />
Al eliminar los efectos secundarios se puede entender y predecir el comportamiento de un programa, esta es una de las principales ventajas que nos da el utilizar la programación funcional.</div>
<p>&nbsp;</p>
<p style="text-align: center;"> <img class="alignnone size-full wp-image-482" title="erlang" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/erlang.jpg" alt="" width="100" height="89" /> <img class="alignnone size-full wp-image-476" title="clojure" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/clojure.jpg" alt="" width="100" height="100" />  <img class="alignnone size-full wp-image-472" title="haskell" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2012/02/haskell.jpg" alt="" width="148" height="140" /></p>
<p style="text-align: center;">
<p>&nbsp;</p>
<div>Para finalizar tengo que decir, que he disfrutado mucho leyendo este libro y sobre todo haciendo y sufriendo algunos ejercicios. He aprendido muchísimo acerca de como acercarme a resolver muchos tipos de problemas y sobre todo con que paradígma se resolvería mejor.</div>
<p>&nbsp;</p>
<div>Aquí os dejo el link a mis ejercicios resueltos por si queréis echarles un ojo <a href="https://github.com/aloaisa/7LanguagesIn7Weeks" target="_blank">GitHub</a> <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2012/02/19/seven-languages-in-seven-weeks-y-los-paradigmas-de-programacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Historia de un programador</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/09/18/historia-de-un-programador/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/09/18/historia-de-un-programador/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 18:16:27 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Positivismo]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Modula2]]></category>
		<category><![CDATA[pascal]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Tcl/Tk]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=286</guid>
		<description><![CDATA[&#160; &#160; Llevo aprendiendo lenguajes de programación desde que tenía 12 años. A esa edad aprendí Basic, del cual muchos de vosotros os acordaréis. Me tiré mucho tiempo aprendiendo y profundizando en ese lenguaje procedural, el cual me introdujo en todo este mundo . Un tiempo más tarde, avance a QuickBasic con más estructuras de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-288" title="helloworld" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/helloworld.jpg" alt="" width="235" height="175" /></div>
<p>&nbsp;</p>
<div>
<p>Llevo aprendiendo lenguajes de programación desde que tenía 12 años. A esa edad aprendí<a href="http://es.wikipedia.org/wiki/BASIC"> Basic</a>, del cual muchos de vosotros os acordaréis. Me tiré mucho tiempo aprendiendo y profundizando en ese lenguaje procedural, el cual me introdujo en todo este mundo <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" />  . Un tiempo más tarde, avance a<a href="http://es.wikipedia.org/wiki/Quick_BASIC"> QuickBasic</a> con más estructuras de control y mejor entorno de desarrollo.</p>
<p>A partir de ahí empecé a interesarme por<a href="http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Pascal"> Pascal</a>, con el cual aprendí a estructurar bien el código, o todo lo bien que creía en ese momento. Y con<a href="http://es.wikipedia.org/wiki/Turbo_Pascal"> Turbo Pascal</a> aprendí los principios de la programación orientada a objetos.</p>
<p>Con 16 años y recién salido del instituto sabía que lo que quería hacer para ganarme la vida era programar, aprender más lenguajes y perfeccionar lo máximo su técnica.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-294" title="programmers_day" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/programmers_day-300x159.jpg" alt="" width="300" height="159" /></p>
<p>&nbsp;</p>
<p>A esa edad ya estudiando, aprendí en una asignatura<a href="http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)"> C</a>, con su control de memoria, sus librerías, toda esa potencia y su control de bajo nivel. Con este lenguaje empecé a sentirme “poderoso” y a tocar cosas que realmente alteraban el sistema. Aprendí más profundamente en que consistían las fases de compilado y linkado. También empecé a preocuparme por el aspecto de mi código. Con el que yo me sentía muy cómodo. Pero después de volver a mirar hoy las lineas sacadas del baúl de los recuerdos, he visto que me quedaba muchísimo por aprender :S</p>
<p>Ese mismo verano, junto con mi hermano, empecé a vislumbrar los lenguajes de Microsoft con los que era sencillísimo crear las interfaces gráficas de usuario y<a href="http://es.wikipedia.org/wiki/C%2B%2BBuilder"> C++Builder</a> nos sirvió para eso mismo. Lo afiancé con una asignatura al año siguiente sobre<a href="http://es.wikipedia.org/wiki/Visual_Basic"> Visual Basic</a>. Con el que aprendí el paradigma de programación dirigida por eventos.</p>
<p>Una vez trabajando en mi primera empresa, tuve que vérmelas con<a href="http://es.wikipedia.org/wiki/FORTRAN"> FORTRAN</a>, aunque por suerte no demasiado tiempo <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_razz.gif" alt=":P" class="wp-smiley" />  De Fortran pasé a estar varios años desarrollando en<a href="http://es.wikipedia.org/wiki/Tcl/Tk"> Tcl/Tk</a>. Un lenguaje ahora en desuso, pero que sigue viniendo por defecto instalado en multitud de distribuciones de Linux.</p>
<p>Con Tcl vi la fuerza de los lenguajes interpretados, su facilidad de uso y sobre todo su potencia en sentencias sencillisimas que no tienen nada que envidiar en la velocidad de ejecución de los programas en C. De hecho, me hice hasta un programa de benchmarking para comparar la rapidez de ejecución entre Tcl y C.</p>
<p>Con este lenguaje llegué a mi mejor nivel de maestría hasta el momento, me conocía toda la sintaxis y sus combinaciones a la perfección. Podía desarrollar cualquier cosa en poquísimo tiempo y me sentía agustísimo utilizándolo. De hecho, hasta colaboré en el proyecto <a href="http://www.amsn-project.net/">a’MSN</a> construido en este lenguaje.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-295" title="dilbert" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/dilbert-e1316369288694.gif" alt="" width="400" height="158" /></p>
<p>&nbsp;</p>
<p>En esta época me apunté a estudiar en la UNED y en otra asignatura aprendí<a href="http://es.wikipedia.org/wiki/Modula_2"> Modula2</a>. Del cual solo tengo que decir, que no está bien ni para empezar a aprender orientación a objetos, ya que no tiene herencia de ningún tipo.</p>
<p>Después cambie de división y proyecto dentro de la empresa, y entré en el verdadero mundo de los equipos de desarrollo. Un proyecto de 5 años en un equipo de casi 40 desarrolladores escrito en<a href="http://es.wikipedia.org/wiki/C%2B%2B"> C++</a> sobre Linux. En esta época fue cuando más avancé en conocimientos sobre programación. Gracias sobre todo a los compañeros con más experiencia que me iban enseñando paso a paso patrones de desarrollo, control de punteros en profundidad, herencia multiple, a trabajar con ramas en repositorios de código que utilizaba todo el equipo, etc etc&#8230; Y lo más importante de todo, a ver mi trabajo desde el punto de vista de un profesional que quiere hacer todo lo mejor que puede su trabajo.</p>
<p>De ahí cambié de empresa y empecé a trabajar con<a href="http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)"> Java</a>. Simplificándome mucho las cosas al venir de C++. Sin control de memoria, sin punteros, independiente de plataforma y con soporte para red diréctamente. Aunque como no, con muchas taras de fábrica, como el no ser absolutamente orientado a objetos o no poder sobrecargar operadores.</p>
<p>También al principio en esta empresa, me toco mantener un programa desarrollado por otra, hecho en<a href="http://es.wikipedia.org/wiki/Adobe_Flash"> Flash</a> con<a href="http://es.wikipedia.org/wiki/ActionScript"> ActionScript</a>. Este semi-injerto de lenguaje de programación lo sufrí más que degustarlo. Con sus MovieClips y su caótico interfaz en el que tienes que declarar cada objeto en tres sitios diferentes.</p>
<p>He tenido múltiples encontronazos fugaces con otros lenguajes como<a href="http://es.wikipedia.org/wiki/Php"> PHP</a>,<a href="http://es.wikipedia.org/wiki/Bash"> Bash</a> (si lo podemos definir como lenguaje),<a href="http://es.wikipedia.org/wiki/Ruby"> Ruby</a>,<a href="http://es.wikipedia.org/wiki/JavaScript"> JavaScript</a>,<a href="http://es.wikipedia.org/wiki/C_sharp"> C#</a> y esta misma semana<a href="http://es.wikipedia.org/wiki/Clojure"> Clojure</a>, pero con los que solo he aprendido partes de su sintaxis y no he llegado a hacer nada serio.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/dilbertcobol.jpg"><img class="aligncenter size-full wp-image-299" title="dilbertcobol" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/dilbertcobol.jpg" alt="" width="450" height="139" /></a></p>
<p>&nbsp;</p>
<p>Ahora mismo estoy inmerso en el aprendizaje de<a href="http://es.wikipedia.org/wiki/Groovy_(Lenguaje_de_Programaci%C3%B3n)"> Groovy</a>, un lenguaje bastante moderno, basado en Java, muy fácil de aprender, pero muy potente y productivo. Con el que pretendo desarrollar una web que seguramente comente en este blog más adelante. Aunque también estoy apunto de empezar en un grupo de trabajo para leer y aprender con “<a href="http://pragprog.com/book/btlang/seven-languages-in-seven-weeks">Seven Languages in Seven weeks</a>” que retrasará mi enseñanza de Groovy seguramente.</p>
<p>En resumen, cada vez que miro atrás y observo mi código de hace algún tiempo, me doy cuenta de que si he avanzado. Veo cosas escritas por mí que ahora nunca permitiría subir al repositorio, código duplicado sencillísimo de refactorizar y este tipo de cosas. Pero ver justamente estos fallos es muy bueno. Me alegro de comprobar que no me he quedado estancado y he aprendido poco a poco como se deben hacer las cosas. Se que aún me queda muchísimo por aprender y practicar, pero sentir ese avance me da más ganas de continuar con ello.</p>
<p>Así que os aconsejo que de vez en cuando vayáis guardando algún trozo de código del que os sintáis orgullosos. Hacedlo cada cierto tiempo, 6 meses, 3, un año, es igual. Pero eso sí, cada año al menos, cuando sintáis un cambio en vuestra vida, cuando estéis decaídos por que creéis que no habéis hecho nada en años, o os apetezca simplemente, mirad ese código y podréis observar si al menos en esto habéis aprendido algo. <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/09/18/historia-de-un-programador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Escribes tu mejor código a la primera? No me lo creo!</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/09/05/%c2%bfescribes-tu-mejor-codigo-a-la-primera-no-me-lo-creo/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/09/05/%c2%bfescribes-tu-mejor-codigo-a-la-primera-no-me-lo-creo/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 15:37:32 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Agilidad]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[arte]]></category>
		<category><![CDATA[ciencia]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[refactorización]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=271</guid>
		<description><![CDATA[&#160; &#160; La mayoría de gente con la que he trabajado programando, cuando tenían que hacer alguna aplicación, una parte, API, clase o lo que fuera, lo escribían y ya está. Incluso yo hasta hace no mucho tiempo, escribía el código que mejor me salía a la primera y ahí lo dejaba, a veces orgulloso [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-273" title="UncleBob" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/09/UncleBob1.jpg" alt="" width="235" height="175" /></div>
<p>&nbsp;</p>
<div>La mayoría de gente con la que he trabajado programando, cuando tenían que hacer alguna aplicación, una parte, API, clase o lo que fuera, lo escribían y ya está. Incluso yo hasta hace no mucho tiempo, escribía el código que mejor me salía a la primera y ahí lo dejaba, a veces orgulloso de él y todo :S . Por suerte, después de unos años de experiencia he aprendido que esto no debe ser así.&nbsp;</p>
<p>No nos deberíamos limitar a  escribir un programa de principio a fin a la primera. Más importante aún, no deberíamos esperar ser capaces de escribir programas limpios y elegantes a la primera. Si algo he aprendido durante todo el periplo que ha supuesto mi carrera estudiantil y profesional, es que la programación es un arte más que una ciencia. Para escribir un código limpio, primero debemos escribir código sucio y luego limpiarlo.</p>
<p>Esto no debería ser una sorpresa para nadie. Escribir código limpio, es una cuestión de refinamientos sucesivos. Primero debemos escribir una primera versión, después revisarla, corregir lo que creamos conveniente, a continuación, volver a revisar y volver a refinar, y así sucesivas veces. Tener un ciclo de refactorizaciones sucesivas.</p>
<p>Un símil muy bueno se puede hacer con los polinomios de álgebra, donde los descomponemos en factores y los factorizamos paso a paso para hacerlos más simples y comprensibles sin modificar su resultado para llegar a una solución. Bien, pues con el código debemos hacer lo mismo, llegar a una solución lo más comprensible y simple para todo el mundo que vaya a meter mano a ese código.</p>
<p>La mayoría de los programadores jóvenes (con pocos años de experiencia en este tema) no están de acuerdo con esta técnica y no sigue este consejo muy bien. Ellos creen que el objetivo principal es conseguir que el programa funcione, dando igual como esté escrito por dentro. Terminando así con un código ilegible, código espagueti, o como le queráis llamar. Solo preocupa que funcione lo requerido y poder pasar así rápidamente a la siguiente tarea. Parafraseando a Uncle Bob “Los programadores más experimentados saben que esto es un suicidio profesional”.</p>
<p>El principal problema de que un programador se acostumbre a hacer refactorizaciones sucesivas de su código y cuidarlo con mucho más mimo, es que supone un esfuerzo y este esfuerzo no se ve plasmado en funcionalidades para el proyecto. A pesar de ello, si utilizamos esta forma de programar refactorizando, como técnica de desarrollo a lo largo del proyecto, conseguiremos que nuestro código sea de calidad y mucho más legible, ya no solo para nosotros, sino también para el resto de programadores del equipo. La experiencia dice (y no solo la mía) que este tiempo empleado en cada refinamiento sucesivo, será recuperado repercutiendo con creces en el avance del proyecto en el futuro.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/09/05/%c2%bfescribes-tu-mejor-codigo-a-la-primera-no-me-lo-creo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calidad dentro del proceso</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/09/01/calidad-dentro-del-proceso/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/09/01/calidad-dentro-del-proceso/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 19:42:17 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Agilidad]]></category>
		<category><![CDATA[Positivismo]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[automatizar]]></category>
		<category><![CDATA[calidad]]></category>
		<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Jidoka]]></category>
		<category><![CDATA[Jira]]></category>
		<category><![CDATA[responsabilidad]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Toyota]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=230</guid>
		<description><![CDATA[&#160; &#160; Desde mi punto de vista, lo ideal es que la calidad quede automatizada e integrada en el propio proceso. Si algo falla, que pasará, algún tipo de alarma o aviso debe de saltar para que pueda ser corregido por alguien. Si algo falla y no se detecta, ya no es solo un problema, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>&nbsp;</p>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-232" title="toyota" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/08/toyota.jpg" alt="" width="235" height="175" /></div>
<p>&nbsp;</p>
<div>Desde mi punto de vista, lo ideal es que la calidad quede automatizada e integrada en el propio proceso. Si algo falla, que pasará, algún tipo de alarma o aviso debe de saltar para que pueda ser corregido por alguien. Si algo falla y no se detecta, ya no es solo un problema, sino que es un problema del proceso y habrá que modificarlo para solucionar ese fallo de detección. Si alguien tiene que estar supervisando un proceso para controlar la calidad, es que dicho proceso no produce calidad solamente, sino que también produce defectos o desperdicios. Teniendo en cuenta que en la actualidad esto llevado al extremo es casi imposible, lo que nos tendremos que quedar es algo intermedio. Para lograr una excelente calidad en un proyecto necesitamos automatización y supervisión humana, lo mínimo indispensable en este último punto.<br />
En Japón esta filosofía se denomina “Jidoka”, que podríamos traducirla como medio-automatización o automatización con ayuda humana.&nbsp;</p>
<p>Este termino, “<a href="http://es.wikipedia.org/wiki/Jidoka">Jidoka</a>” viene de Toyota, en concreto del telar que desarrolló<a href="http://es.wikipedia.org/wiki/Sistema_de_producci%C3%B3n_Toyota"> Sakichi Toyoda</a>, fundador de la empresa “Toyota” (Como no :P), que permitía parar la máquina, cuando esta rompía el hilo que utilizaba y así no terminaba desencadenando todos los problemas que esto ocasionaba.</p>
<p>De aquí, transladándolo al desarrollo de software, un ejemplo de auto-calidad dentro del proceso podría ser, el utilizar una buena herramienta de gestión de tareas como <a href="http://www.atlassian.com/JIRA">Jira</a>, junto a sus plugings <a href="http://www.atlassian.com/software/greenhopper/">Greenhoper</a>, <a href="http://www.atlassian.com/software/fisheye/">FishEye</a>, <a href="http://www.atlassian.com/software/crucible/">Crucible</a> y <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>. Habituando al equipo a utilizar este tipo de herramientas, podremos llegar a tener un sistema totalmente integrado, que nos proporcione un buen nivel de calidad.</p>
<p>Un ejemplo simple de su uso prodría ser el siguiente:</p>
</div>
<div style="padding-left: 30px;"><strong>1º</strong> Alta de nueva funcionalidad a implementar en el proyecto dentro de Jira (Historia de usuario).<br />
<strong>2º</strong> Implementación de la funcionalidad en el Sprint actual suponiendo que utilicemos Scrum (Greenhoper)<br />
<strong>3º</strong> Trazabilidad desde los requisitos introducidos en la tarea de Jira hasta los cambios que estos han ocasionado en el repositorio de código en su desarrollo (FishEye)<br />
<strong>4º</strong> Revisión del código de esta tarea (Crucible)<br />
<strong>5º</strong> Auto-build del proyecto completo con estos cambios de código (Bamboo)<br />
<strong>6º</strong> Auto ejecución de test (Bamboo)</div>
<div></div>
<div>
<ol></ol>
<p>Si podemos conseguir que todo el equipo implicado en el proyecto siga estos pasos, habremos conseguido tener un mínimo control semi-automatizado de calidad, que ya quisieran muchos proyectos.<br />
También quiero dejar muy claro, que la calidad no es responsabilidad de un único grupo o departamento. La calidad es responsabilidad de todo el equipo, desde la persona encargada en la toma y redacción de requisitos, hasta el programador más junior que tiene que esforzarse por escribir un buen “Clean Code”.</p>
<p>Otro buen ejemplo de prácticas que nos aseguran un mínimo de calidad en el proyecto siguiendo el proceso, sería <a href="http://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas">TDD</a>. Pero no de una forma de inspección después de la codificación, ni una etapa final o intermedia. Sino, como una disciplina de trabajo, una disciplina compartida por todo el equipo y todos los equipos de desarrolladores. Cada uno, debe de responsabilizarse de crear, ejecutar y mantener un conjunto de pruebas unitarias de todo el código que escribe, y estas deben ser automatizadas y ejecutarse en un tiempo moderado. Además de las pruebas, TDD define una refactorización del código continua, en la que el programador debe buscar en su propio código la forma de mejorarlo, dejarlo limpio, mantenible y así ahorrar tiempo futuro en su comprensión, con un gran ahorro también en <a href="http://barrapunto.com/articles/10/06/18/1117255.shtml">deuda técnica</a>.</p>
<p>Aunque parezca mentira, aquí lo difícil de su implantación no es la técnica, ni los medios, ni si quiera el tiempo de desarrollo, sino el que cada miembro de cada equipo asuma esta forma de trabajo como su responsabilidad. Cada miembro debe asimilar y comprender que el resultado del proyecto depende en gran parte de él y que si utiliza estas técnicas, llegará a tener un gran control de calidad, un código realmente mantenible y será finalmente más productivo. Algo duro y difícil de conseguir en una empresa.</p>
<p>Por desgracia, la calidad ha acabado siendo víctima de su propio éxito. Ha sido convertida en un fetiche del marketing, donde no importa tanto mejorar la calidad del proceso productivo, como obtener y galardonarte con una certificación de tal o de cual organización de moda. La pena, es que esto está empezando a pasarle también a las Metodologías Ágiles. Así que entendamos bien los conceptos básicos de calidad para que esto no nos ocurra a nosotros <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/09/01/calidad-dentro-del-proceso/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joriki</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/08/24/joriki/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/08/24/joriki/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 15:20:31 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Agilidad]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[concentración]]></category>
		<category><![CDATA[joriki]]></category>
		<category><![CDATA[objetivos]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=222</guid>
		<description><![CDATA[Es muy importante marcarse objetivos y dejarlos claros, apuntarlos y releerlos de vez en cuando. Nuestra mente tiene un montón de pensamientos al día, si la enseñamos a fijarse en lo que más nos aporta, como son nuestros objetivos, esto nos beneficiará bastante a la hora de seguirlos.&#160; La gente tiene claro que quiere sentirse [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><br/>
<div style="text-align: center;"><img class="aligncenter size-full wp-image-223" title="joriki" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/08/joriki.jpg" alt="" width="235" height="175" /></div>
<p><br/></p>
<div>Es muy importante marcarse objetivos y dejarlos claros, apuntarlos y releerlos de vez en cuando. Nuestra mente tiene un montón de pensamientos al día, si la enseñamos a fijarse en lo que más nos aporta, como son nuestros objetivos, esto nos beneficiará bastante a la hora de seguirlos.&nbsp;</p>
<p>La gente tiene claro que quiere sentirse mejor, tener más energía o vivir con mayor satisfacción. Pero cuando preguntas qué es exactamente lo que quieren, casi nadie sabe responder. Todos sabemos que queremos tener dinero, tener muy buena salud y ser reconocidos, pero no definimos ningún paso para llegar a ello, no hemos pensado en que dirección avanzar para adquirirlo.</p>
<p>Seguro que os ha pasado muchas veces empezar a ver algo en todos lados. Algo en lo que antes no te habías fijado pero que ahora parece que te persigue. A mi me pasó por ejemplo cuando me saqué el carnet de conducir, (hace ya mucho <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_razz.gif" alt=":P" class="wp-smiley" />  )  no me había fijado en la cantidad de señales de trafico que hay por todos lados. O cuando empecé a leer sobre la agilidad, que pasé de no conocerla a encontrarme las metodologías por todas las web que leía. Esto, desde el punto de vista Zen, se denomina “Joriki” que se refiere al poder que surge de nuestra concentración.</p>
<p>Cuando te concentras en tus objetivos y estos te absorben completamente, tu tiempo pasa sin darte cuenta, como cuando programamos, investigamos o estamos absortos por una tarea que nos interesa y nos entusiasma.</p>
<p>Con la focalización se desarrolla una profunda concentración, Joriki.</p>
</div>
<div>
<blockquote>
<p dir="ltr">&#8220;El poder o fuerza que surge cuando la mente se ha unificado y ha llegado a la concentración en un solo punto. Esto es más que la capacidad de concentrarse, en sentido usual de la palabra.&#8221;.</p>
</blockquote>
<p>Mediante la apertura se cultiva la no resistencia, el desapego, el no imponerse. Esto para mi se refiere “Joriki”, el poder de concentrar tu mente en algo que te gusta y en algo en lo que quieres avanzar. Al fin y al cabo poner atención.</p>
<p>Con la concentración desarrollamos estabilidad mental para afrontar los retos, en este caso emocionales. Cuando comenzamos a desarrollar la no oposición, la no resistencia, entonces se produce una claridad mental para verlos como son y como actúan estos retos, estos objetivos.</p>
<p>Wolfgang von Goethe dijo “Estamos hechos y moldeados por lo que amamos”, y si lo que amamos es conseguir nuestros objetivos para ser mejores personas y vivir con energía, nos moldearemos por ello si nos esforzamos en conseguirlo.</p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/08/24/joriki/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Software craftsmanship</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/08/18/software-craftsmanship/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/08/18/software-craftsmanship/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 18:26:44 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Agilidad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Software craftsmanship]]></category>
		<category><![CDATA[conocimientos]]></category>
		<category><![CDATA[craftsmanship]]></category>
		<category><![CDATA[experiencia]]></category>
		<category><![CDATA[gurú]]></category>
		<category><![CDATA[habilidades]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[trabajo]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=212</guid>
		<description><![CDATA[Últimamente en los entornos que me muevo, todo el mundo habla sobre el Software Craftsmanship o que quieren llegar a ser un craftsmanship, y craftsmanship por aquí y por allá. Así que voy a hacer un ejercicio de auto-análisis en voz alta para definirme a mi mismo lo que yo quiero llegar a ser y [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/08/softwarecrafts.jpg"><img class="aligncenter size-full wp-image-213" title="softwarecrafts" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/08/softwarecrafts.jpg" alt="" width="235" height="175" /></a></p>
<p>Últimamente en los entornos que me muevo, todo el mundo habla sobre el Software Craftsmanship o que quieren llegar a ser un craftsmanship, y craftsmanship por aquí y por allá. Así que voy a hacer un ejercicio de auto-análisis en voz alta para definirme a mi mismo lo que yo quiero llegar a ser y que significa para mí ese concepto en concreto.</p>
<p>Para empezar veamos que dice la wikipedia:</p>
<blockquote><p>“Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.”</p></blockquote>
<p>Totalmente de acuerdo, pero se queda corto, para mí es algo más&#8230;.</p>
<p>Para mí un artesano de software, es alguien al que yo siempre tenía referenciado como “Gurú”. No un gurú en un lenguaje de programación en concreto y ya está, sino alguien que tiene unas habilidades, conocimientos y experiencia muy superior a la media. Alguien brillante que solo le falta con echar una ojeada a un código de un lenguaje del que nunca ha oido hablar, para orientarte y desglosar tu problema, hasta ayudarte a dar con la solución. Es una persona que le preocupa su trabajo, que le apasiona y sobre todo quiere hacerlo lo mejor posible. Al que a pesar de su experiencia y conocimientos siempre está al día, actualizándose, renovándose y empapándose de conocimientos y al que le gusta compartirlos. Una persona cansada de hacer chapuzas, harta de tener descuidadas a las personas y ser temeroso del cliente. Descontento con la forma de trabajar de la industria del software y que lucha por una evolución. Pero sobre todos estos adjetivos, está el de alguien al que respetar por su sabiduría, tanto técnica como moral ante su trabajo. En resumen, alguien al que admirar.</p>
<p>En el blog de <a title="Clean Code" href="http://cleancoder.posterous.com/software-craftsmanship-things-wars-commandmen" target="_blank">Clean code</a> de Uncle Bob tenemos una definición mucho más justa seguramente del concepto. Pero de todo el post me quedaría con este párrafo:</p>
<blockquote><p>“Do you think the only time musicians play their instruments is when they are on stage?  Do you think the only time that batters hit balls is during games?  Do you think the only time lawyers give a closing is at trial?  Of course not.  These people are professionals; and professionals practice!  Professionals study the minutia of their disciplines.  Professionals know all the little tricks and quirks.  They know the history, the theories, the anecdotes.  They know techniques and methods.  They know good options and bad options and how to tell them apart.  And they know all this stuff because they practice, practice practice.”</p></blockquote>
<p>Por cierto, si queréis leer algo más sobre el término, no solo la definición, podéis entrar aquí<br />
<a title="Manifiesto Software craftsmanship" href="http://manifesto.softwarecraftsmanship.org/" target="_blank">Manifiesto Software craftsmanship<br />
</a><a title="Wikipedia" href="http://en.wikipedia.org/wiki/Software_craftsmanship" target="_blank">Wikipedia</a></p>
<p>PD1: Voy a leerme <a title="Software craftsmanship" href="http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862" target="_blank">este libro</a> para intentar avanzar más hacia esta dirección y comprender mucho mejor los conceptos de la Artesanía de Software. Ya pondré un resumen ;P</p>
<p>PD2: Si queréis echaros unas risas con el tema, seguid en twitter a <a title="dev_enfurecido" href="http://twitter.com/#!/dev_enfurecido" target="_blank">@dev_enfurecido</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/08/18/software-craftsmanship/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automatiza todo lo que puedas con Expect</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/07/18/automatiza-todo-lo-que-puedas-con-expect/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/07/18/automatiza-todo-lo-que-puedas-con-expect/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 19:34:38 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[autoexpect]]></category>
		<category><![CDATA[automatizar]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[expect]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=167</guid>
		<description><![CDATA[Muchas veces nos toca hacer tareas repetitivas una y otra vez que nos quitan mucho tiempo. Normalmente no las damos la mayor importancia, ya que estamos acostumbrados a hacerlas y nos salen casi sin pensar. Desde un simple ssh o una copia de backup, hasta un despliegue de la aplicación a producción. Este tipo de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-155" title="entrenamiento" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/07/automatiza.jpg" alt="" width="235" height="175" /></p>
<div>
<p>Muchas veces nos toca hacer tareas repetitivas una y otra vez que nos quitan mucho tiempo. Normalmente no las damos la mayor importancia, ya que estamos acostumbrados a hacerlas y nos salen casi sin pensar. Desde un simple ssh o una copia de backup, hasta un despliegue de la aplicación a producción.</p>
<p>Este tipo de tarea son subceptibles a fallos, ya que estamos tan habituados a ellas, que las hacemos sin pensar. ¿Cuántas veces has cometido fallos al hacerlas? ¿cuántas veces has puesto mal el nombre de la máquina a la que te vas a conectar, has metido mal la password, o incluso hasta te has cargado algo por un error tonto? Yo multitud de ellas.</p>
<p>Una de las mejores cosas que tiene la informática, es que podemos automatizar las tareas para ahorrarnos un tiempo valiosísimo y evitar esta serie de errores tontos, pero que pueden ser garrafales.</p>
<p>Hoy voy a intentan enseñaros una herramienta simple para automatizar estas tareas, llamada <a href="http://expect.sourceforge.net/">Expect</a>.</p>
<p>Me diréis, “¿por qué nos cuentas esto? create un programa en bash o en cualquier lenguaje y ala!” Pero hay muchas veces que tenemos que pegarnos contra una interfaz interactiva, a la cual tenemos que contestar y esperar a que nos conteste, por eso solemos hacer estas tareas a mano. Bien, pues con Expect podemos interactuar con la terminal de turno y de una manera realmente fácil <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>
<p>Expect es una herramienta basada en el lenguaje Tcl, utilizada para automatizar aplicaciones interactivas como ssh, telnet, scp, ftp, etc, y todo esto de una manera rápida y sencilla.</p>
<p>Bien, pues empecemos con un ejemplo de una simple conexión por ssh:
</p></div>
<p>&nbsp;</p>
<div class="codecolorer-container tcl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br /></div></td><td><div class="tcl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/expect -f</span><br />
<span style="color: #808080; font-style: italic;">########################</span><br />
<br />
<span style="color: #808080; font-style: italic;"># Desactivamos el timeout</span><br />
<span style="color: #ff7700;font-weight:bold;">set</span> timeout -<span style="color: #ff4500;">1</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Definimos variables de la conexion</span><br />
<span style="color: #ff7700;font-weight:bold;">set</span> server dns_o_IP<br />
<span style="color: #ff7700;font-weight:bold;">set</span> port <span style="color: #ff4500;">22</span> <span style="color: #808080; font-style: italic;"># Por defecto el 22</span><br />
<span style="color: #ff7700;font-weight:bold;">set</span> user usuario_para_la_conexion<br />
<span style="color: #ff7700;font-weight:bold;">set</span> pass password_del_usuario<br />
<br />
<span style="color: #808080; font-style: italic;">#####################################</span><br />
<span style="color: #808080; font-style: italic;">## Inicio Script</span><br />
<span style="color: #808080; font-style: italic;">#####################################</span><br />
<span style="color: #808080; font-style: italic;">## Sacamos un mensaje al usuario</span><br />
send_user <span style="color: #483d8b;">&quot;Conectando a $server<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Lanzamos un proceso que podemos controlar</span><br />
spawn ssh <span style="color: #ff3333;">$user</span>@<span style="color: #ff3333;">$server</span> -p <span style="color: #ff3333;">$port</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Una especie de switch-case para controlar</span><br />
<span style="color: #808080; font-style: italic;">## &nbsp; lo que devuelve el comando</span><br />
expect <span style="color: black;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; -re <span style="color: #483d8b;">&quot;.*Are.*.*yes.*no.*&quot;</span> <span style="color: black;">&#123;</span> <span style="color: #808080; font-style: italic;">## Lo esperado como expresion regular.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; send <span style="color: #483d8b;">&quot;yes<span style="color: #000099; font-weight: bold;">\r</span>&quot;</span> <span style="color: #808080; font-style: italic;">## Si se cumple lo anterior pasamos a la terminar “yes\r”</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exp_continue <span style="color: #808080; font-style: italic;">## Continua con el siguiente resultado al comando expect</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #483d8b;">&quot;assword: &quot;</span> <span style="color: black;">&#123;</span> <span style="color: #808080; font-style: italic;">## Al ver que nos pide la password</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; send &nbsp;<span style="color: #483d8b;">&quot;$pass<span style="color: #000099; font-weight: bold;">\r</span>&quot;</span> <span style="color: #808080; font-style: italic;">## se la pasamos</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: black;">&#125;</span><br />
<span style="color: black;">&#125;</span><br />
send_user <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Conectado a $server<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Le decimos al script que pase el control al usuario</span><br />
<span style="color: #808080; font-style: italic;">## &nbsp; &nbsp;para que el continue utilizando la terminal</span><br />
interact</div></td></tr></tbody></table></div>
<p>&nbsp;</p>
<div>Bueno, como veis es bastante sencillito, no hace falta controlar mucho del lenguaje para manejar este tipo de scripts. Ahora simplemente modificando las variables tenéis un script que se conecta por ssh a la máquina que le digáis, de una manera muy rápida. Hasta podéis configurar el prompt sin necesidad de modificarlo en el .bashrc del servidor.<br />
Yo concretamente uso este tipo de script para conectarme a mis máquinas en el trabajo, y nunca me equivoco en la ip ni en el usuario ni en el password <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </div>
<p>&nbsp;</p>
<div> Ahora, podemos comprimir un directorio del que queramos hacer un backup (por ejemplo) una vez conectados a él con el script anterior y quitando el comando interact:
</div>
<p>&nbsp;</p>
<div class="codecolorer-container tcl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="tcl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#######################################</span><br />
<span style="color: #808080; font-style: italic;">## Creando tar</span><br />
<span style="color: #808080; font-style: italic;">######################################</span><br />
<span style="color: #808080; font-style: italic;">## Definimos variables</span><br />
<span style="color: #ff7700;font-weight:bold;">set</span> dirToBackup directorio_para_backup<br />
<span style="color: #ff7700;font-weight:bold;">set</span> tarFile /tmp/backup.tgz<br />
<span style="color: #ff7700;font-weight:bold;">set</span> tarCommand /bin/tar<br />
<br />
send_user <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Creando tar de $server:$dirToBackup...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Lanzamos el comando</span><br />
send -- <span style="color: #483d8b;">&quot;$tarCommand zcvf $tarFile $dirToBackup<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
expect <span style="color: black;">&#123;</span> &nbsp; <span style="color: #808080; font-style: italic;">## Este expect espera a que termine el comando y</span><br />
&nbsp; &nbsp; &nbsp; “<span style="color: #66cc66;">&gt;</span> “ <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span> <span style="color: #808080; font-style: italic;">## salgamos a la shell, vale para shells que terminan</span><br />
&nbsp; &nbsp; &nbsp; “<span style="color: #66cc66;">$</span> “ <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span> &nbsp; <span style="color: #808080; font-style: italic;">## por &gt; y $</span><br />
<span style="color: black;">&#125;</span><br />
send_user <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Tar Generado.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<span style="color: #ff7700;font-weight:bold;">exit</span></div></td></tr></tbody></table></div>
<p>&nbsp;<br />
Y a continuación por ejemplo podemos copiarlo a local:<br />
&nbsp;</p>
<div class="codecolorer-container tcl vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="tcl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">########################################</span><br />
<span style="color: #808080; font-style: italic;">## Cerrando conexion con el servidor</span><br />
<span style="color: #808080; font-style: italic;">#######################################</span><br />
send -- <span style="color: #483d8b;">&quot;exit<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
expect <span style="color: black;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #483d8b;">&quot;&gt; &quot;</span> <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #483d8b;">&quot;$ &quot;</span> <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span><br />
<span style="color: black;">&#125;</span><br />
send_user <span style="color: #483d8b;">&quot;Salimos del servidor<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<br />
<span style="color: #808080; font-style: italic;">########################################</span><br />
<span style="color: #808080; font-style: italic;">## Copiamos backup a local</span><br />
<span style="color: #808080; font-style: italic;">########################################</span><br />
<span style="color: #ff7700;font-weight:bold;">set</span> scpCommand /usr/bin/scp<br />
<br />
send_user <span style="color: #483d8b;">&quot;Copiando tar...=&gt; $tarFile <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><br />
<br />
<span style="color: #808080; font-style: italic;">## Lanzamos el comando de copia remota scp</span><br />
spawn <span style="color: #ff3333;">$scpCommand</span> <span style="color: #ff3333;">$user</span>@<span style="color: #ff3333;">$server</span>:<span style="color: #ff3333;">$tarFile</span> .<br />
expect <span style="color: black;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; “<span style="color: #66cc66;">&gt;</span> ” <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; “<span style="color: #66cc66;">$</span> ” <span style="color: black;">&#123;</span> <span style="color: black;">&#125;</span><br />
<span style="color: black;">&#125;</span><br />
send_user “Fin.\n”<br />
<span style="color: #ff7700;font-weight:bold;">exit</span></div></td></tr></tbody></table></div>
<p>&nbsp;</p>
<div>
Para más ayuda, tenemos el comando <a href="http://expect.sourceforge.net/example/autoexpect.man.html">autoexpect</a>. Este comando graba todo lo que hagamos en una terminal y lo va guardando en un archivo en formato expect, y una vez hayamos terminado podemos ejecutarlo. Esto, repetirá fiel y exactamente los mismo pasos que habíamos hecho. Esto ya es el colmo! <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>
<p>Imaginaros que cantidad de cosas podemos automatizar de una forma sencillita y cuanto tiempo y errores podemos ahorrarnos. Ahora piensa que cosas repites una y otra vez de forma repetitiva todos los días y podrías automatizar&#8230;. y hazlo!! <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> </p>
</div>
<p>&nbsp;<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/07/18/automatiza-todo-lo-que-puedas-con-expect/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>No pares nunca de entrenar.</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/07/13/no-pares-nunca-de-entrenar/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/07/13/no-pares-nunca-de-entrenar/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 19:21:27 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[conocimientos]]></category>
		<category><![CDATA[entrenamiento]]></category>
		<category><![CDATA[estudio]]></category>
		<category><![CDATA[forma]]></category>
		<category><![CDATA[practicar]]></category>
		<category><![CDATA[profesional]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=153</guid>
		<description><![CDATA[La wikipedia define así el entrenamiento: “Entrenamiento se refiere a la adquisición de conocimiento, habilidades, y capacidades como resultado de la enseñanza de habilidades vocacionales o prácticas y conocimiento relacionado con aptitudes que encierran cierta utilidad. Forma el centro del aprendizaje y proporciona la base de los contenidos en institutos de formación profesional y politécnicos. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-155" title="entrenamiento" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/07/entrenamiento.jpg" alt="" width="235" height="175" /></p>
<p>La wikipedia define así el entrenamiento:</p>
<address>“Entrenamiento se refiere a la adquisición de conocimiento, habilidades, y capacidades como resultado de la enseñanza de habilidades vocacionales o prácticas y conocimiento relacionado con aptitudes que encierran cierta utilidad. Forma el centro del aprendizaje y proporciona la base de los contenidos en institutos de formación profesional y politécnicos. Hoy en día se refiere a menudo como desarrollo profesional.”</address>
<p>Una de las claves más importantes para aprender es entrenar. Entrenar es la mejor forma de estar en forma, valga la redundancia. Entrenar aclara tus ideas, hace que avances intelectualmente y que conozcas mejor tus habilidades. Refuerza y amplia tus conocimientos, valores, costumbres y formas de actuar. El entrenamiento no sólo se produce a través del estudio, está presente en todas nuestras acciones, sentimientos y actitudes. Está presente cuando lees un libro, cuando consultas una duda, cuando vas a un curso, cuando practicas algo nuevo o ya sabido para mejorar. Entrenar es un proceso de mejora continua.</p>
<address>“El entrenamiento no trata con un objeto, sino con el espíritu humano y con las emociones humanas” Bruce Lee.</address>
<p>¿Qué pensarías de un deportista profesional que en una entrevista de trabajo afirmara que ha decidido no volver a entrenar, no practicar más, no prepararse más, pero que aún así está seguro de que seguirá siendo buenísimo en su especialidad? No tiene sentido ¿no?</p>
<p>Igual que el deportista profesional entrena todos los días para llegar a ser el mejor, tú deberías practicar y entrenar también todos los días para sacar lo mejor de ti mismo. Los primeros cuarenta días serán los más difíciles. Porque durante ese periodo inicial de transición te hallarás en el proceso de crear nuevos hábitos. Estarás abandonando la manera cómoda y conocida en que hacías las cosas, estarás dejando atrás comportamientos que ya no te sirven para alcanzar la maestría personal. Durante esos primeros cuarenta días, establecerás nuevos patrones y, literalmente, cambiarás las conexiones de tu cerebro mientras calibras tus controles internos. Así estarás cambiando y creciendo. Tus viejos hábitos de pensamiento y conducta deben integrarse antes de poder integrar mejores formas de pensar y actuar.</p>
<p>Si te preocupa volver a recaer en los viejos hábitos y perder los increíbles dones que te aporta el entrenar, el hacer un buen trabajo y una mentalidad positiva, empieza con pequeños pasos y pronto se convertirán en hábitos. Es como adentrarte en un sendero de un bosque que no conoces. Al principio no lo ves claro y te sientes un poco perdido, pero cuanto más andas, más a gusto estás. Y pronto te sentirás capaz de recorrerlo con los ojos cerrados. Todo esto se convertirá para ti en una segunda piel. Recuerda, los pequeños cambios diarios llevan con el tiempo a increibles resultados.</p>
<p>Normalmente las personas actualizadas, con conocimientos avanzados en un tema o varios, o los sobresalientes en las empresas, vienen determinados por su predisposición al entrenamiento y a la mejora, a la absorción de conocimiento y al estudio y refuerzo de sus inquietudes.</p>
<p>El entrenamiento, la práctica, estudio y avance intelectual, hace que el enfrentarnos a problemas viejos o nuevos nos sea más fácil. El investigar una tecnología nueva o diferente para nosotros, nos abre la mente a ver estos problemas desde perspectivas muy distintas y novedosas. Puede que un problema se pueda resolver como siempre lo hemos hecho, pero seguramente haya algo diferente que te solucione ese problema mucho más rápido y fácil que como lo estabas haciendo hasta ahora. En definitiva, te hará la vida más fácil.</p>
<p>El reciclarse siempre ha sido bueno para nuestra profesión, es la forma de avanzar y mejorar.</p>
<p>Sin embargo, antes de ir al trabajo con la esperanza de rendir al máximo en los negocios, ¿Cuántos de nosotros dedicamos tiempo a entrenar, a practicar, a prepararnos? Y a pesar de todo, esperamos obtener los mejores resultados. Lo mismo que ese deportista profesional que pretende ganar un título sin haberse entrenado y preparado para ello.</p>
<p>Al fin y al cabo, cada uno de nosotros somos unos profesionales de nuestro trabajo ¿no? Entonces ¿por qué no entrenas?</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/07/13/no-pares-nunca-de-entrenar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El Líder que no tenía cargo</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/06/22/73/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/06/22/73/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 19:34:55 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Agilidad]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Positivismo]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[agilidad]]></category>
		<category><![CDATA[cargo]]></category>
		<category><![CDATA[empresa]]></category>
		<category><![CDATA[empresas]]></category>
		<category><![CDATA[fábula]]></category>
		<category><![CDATA[líder]]></category>
		<category><![CDATA[Liderazgo]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=73</guid>
		<description><![CDATA[&#160; Hace poco, terminé un libro llamado “El líder que no tenía cargo” de Robin Sharma. El libro es una novela, en la que a través del protagonista, nos va abriendo las puertas a la filosofía del profesional, del líder sin cargo. La cuál se podría resumir, así: “No importa el lugar que ocupes en [&#8230;]]]></description>
				<content:encoded><![CDATA[<div style="text-align: center;"><img class="size-full wp-image-75 aligncenter" style="margin-top: 10px; margin-bottom: 10px;" title="Martin A. La Regina" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/06/9789502805313.jpg" alt="" width="244" height="375" /></div>
<p>&nbsp;</p>
<div>
<p>Hace poco, terminé un libro llamado “<a href="http://www.amazon.com/lider-tenia-cargo-Leader-Title/sim/8425344425/2" target="_blank">El líder que no tenía cargo</a>” de Robin Sharma.</p>
<p>El libro es una novela, en la que a través del protagonista, nos va abriendo las puertas a la filosofía del profesional, del líder sin cargo. La cuál se podría resumir, así:</p>
</div>
<div>
<p dir="ltr">“No importa el lugar que ocupes en el organigrama empresarial o cuales sean tus circustancias personales. Lo fundamental es que tienes capacidad para demostrar que eres un líder. Estés donde estés en tu profesión o en tu vida, siempre debes dar el máximo.”</p>
<p dir="ltr">En el libro, Robin, intenta hacer ver la habilidad que todos tenemos para llegar a tener un gran liderazgo. Pero no un liderazgo en el sentido de tener mucha presión acompañado de una gran responsabilidad en una gran empresa. Sino un liderazgo diario, en la vida de cada uno, y haciéndonos ver como podemos influenciar a cada persona de nuestro alrededor positivamente, inspirando, dando ejemplo en nuestro trabajo y actitud diaria. El tipo de liderazgo que tiene que ver con la excelencia en el trabajo y en el comportamiento, dando igual el puesto en el que te encuentres.</p>
<p dir="ltr">Todos podemos tener un millón de razones para desanimarnos, para no estar satisfechos, para no implicarnos en nuestro trabajo. Podríamos quejarnos de que no somos más que un empleado y que lo único que hacemos no es más que trabajar para la gente con mucho dinero. Pero una de las más grandes libertades que tenemos como personas, es la libertad de elegir cómo vemos nuestro papel en el mundo y el poder que tenemos para tomar decisiones positivas en cualquier circunstancia en la que nos encontramos.</p>
<p>Este libro me ha hecho recordar y replantearme muchas cosas de mi vida reciente. Cuando empecé a entrar, a leer y meterme en el mundo de la agilidad, no me dí cuenta de que cada vez estaba más ilusionado. No tenía ni idea de lo que depararía, pero desde entonces he aprendido que la incerteza es un regalo precioso. A casi todos nos da miedo lo desconocido. No debería ser así. Lo desconocido no es más que el comienzo de una aventura, una nueva oportunidad de crecer. Y justamente por estas causas me decidí a empezar a escribir en este blog <img src="http://www.superjueves.net/pensamientosdeotromas/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>
</div>
<p>Salu2!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/06/22/73/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cuanto mayor sea la lucha, más glorioso será el triunfo</title>
		<link>http://www.superjueves.net/pensamientosdeotromas/2011/06/21/cuanto-mayor-sea-la-lucha-mas-glorioso-sera-el-triunfo/</link>
		<comments>http://www.superjueves.net/pensamientosdeotromas/2011/06/21/cuanto-mayor-sea-la-lucha-mas-glorioso-sera-el-triunfo/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 18:05:53 +0000</pubDate>
		<dc:creator><![CDATA[Alvaro García Loaisa]]></dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Circo]]></category>
		<category><![CDATA[circus]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.superjueves.net/pensamientosdeotromas/?p=45</guid>
		<description><![CDATA[&#160; Me encanto la 1º vez que lo vi, y me sigue encantando cada vez que lo veo. 20 minutos sin desperdicio. &#160;]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-46 aligncenter" title="circo-de-la-mariposa" src="http://www.superjueves.net/pensamientosdeotromas/wp-content/uploads/2011/06/circo-de-la-mariposa.jpg" alt="" width="462" height="261" /></p>
<p>&nbsp;</p>
<p>Me encanto la 1º vez que lo vi, y me sigue encantando cada vez que lo veo.</p>
<p>20 minutos sin desperdicio.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><iframe width="470" height="370" src="http://www.youtube.com/embed/ZF5M_BjLg8w?wmode=transparent" frameborder="0" allowfullscreen> </iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.superjueves.net/pensamientosdeotromas/2011/06/21/cuanto-mayor-sea-la-lucha-mas-glorioso-sera-el-triunfo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
