<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5644592</atom:id><lastBuildDate>Sat, 18 Jan 2025 18:54:45 +0000</lastBuildDate><category>programacion</category><category>personal</category><category>agroguia</category><category>python</category><category>programación</category><category>juegos</category><category>negocio</category><category>coches</category><category>GPS</category><category>3D</category><category>demoscene</category><category>trabajo</category><category>C++</category><category>development</category><category>procedural</category><category>git</category><category>opengl</category><category>software</category><category>subversion</category><category>unkasoft</category><category>videojuegos</category><category>Augmented reality</category><category>KDD</category><category>OpengGL</category><category>blender</category><category>blog</category><category>cdv</category><category>clientes</category><category>desarrollo</category><category>entrevistas</category><category>informatica</category><category>java</category><category>libros</category><category>matemáticas</category><category>negocios</category><category>opinión</category><category>periodismo</category><category>politica</category><category>profesional</category><category>puzbe</category><category>tecnología</category><category>tristeza</category><category>twitter</category><category>vim</category><category>web</category><category>ACER</category><category>ASD</category><category>Android</category><category>BeautifulSoup</category><category>C</category><category>DGT</category><category>DOID</category><category>J2ME</category><category>PDA</category><category>PS3</category><category>PSP</category><category>SAT</category><category>SEO</category><category>TV</category><category>abagames</category><category>abredatos</category><category>advergaming</category><category>aerogeneradores</category><category>agroguia personal</category><category>agroguía</category><category>assert</category><category>autovía</category><category>borregada</category><category>compo</category><category>conducción</category><category>corbatas</category><category>cppunitlite</category><category>crisis</category><category>cultura informatica</category><category>decoración</category><category>demos</category><category>deploy</category><category>django</category><category>el</category><category>emprendedor</category><category>feedback</category><category>ferias</category><category>formatos de fichero</category><category>frases</category><category>freestyle</category><category>física</category><category>fútbol</category><category>gamedev</category><category>gamespace</category><category>getting real</category><category>gilipollas</category><category>google app engine</category><category>hp</category><category>informaticos</category><category>innovaduero</category><category>insultos</category><category>integración continua</category><category>internacionalización</category><category>juno</category><category>kml</category><category>ladrones</category><category>las</category><category>lifeforce</category><category>linux</category><category>metodologías</category><category>mobile</category><category>motodev summit</category><category>movistar</category><category>mujeres</category><category>musica</category><category>navidad</category><category>opengles</category><category>pantalla táctil</category><category>pfc</category><category>pic</category><category>pocketpc</category><category>pragmatismo</category><category>preguntas</category><category>prensa</category><category>producto</category><category>profesionales</category><category>proyectos</category><category>quemado</category><category>radares</category><category>renfe</category><category>ror</category><category>rss</category><category>seguros</category><category>shaders</category><category>space invades</category><category>spam</category><category>subvenciones</category><category>svn</category><category>tiendas online</category><category>trabajo desde casa</category><category>trac</category><category>tractor</category><category>unicode</category><category>unit test</category><category>vacaciones</category><category>valladolid</category><category>vidareal</category><category>videocast</category><category>vino</category><category>viva</category><category>windows ce</category><category>y</category><category>yoquese</category><title>javier santana - blog</title><description></description><link>http://blep.blogspot.com/</link><managingEditor>noreply@blogger.com (Javi Santana)</managingEditor><generator>Blogger</generator><openSearch:totalResults>530</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-7721841604769750793</guid><pubDate>Mon, 31 Dec 2012 17:02:00 +0000</pubDate><atom:updated>2012-12-31T18:04:00.591+01:00</atom:updated><title>resumen 2012</title><description>Llevo unos días tratando de recordar más o menos lo que he hecho durante el año y me ha resultado difícil, será que estoy perdiéndo memoria con la edad.&lt;br /&gt;
&lt;br /&gt;
Este año lo puedo resumir en dos cosas: trabajo y &quot;realizaciones&quot;&lt;br /&gt;
&lt;br /&gt;
Laboralmente ha sido un año realmente intenso, seguramente el año en el que más producción he sacado de mi vida. Este año he participado en software que muy fácilmente hayan visto más de cien millones de personas:&lt;a href=&quot;http://blog.vizzuality.com/post/26149975841/what-a-week&quot;&gt; hemos estado en portada de google, hemos salido en la pantalla cara de la google IO&lt;/a&gt;, hemos reescrito el frontend de CartoDB en tiempo record, publicado dos releases major de agroguía (casi reescritas desde cero), creado ciertas&amp;nbsp;&lt;a href=&quot;http://vizzuality.github.com/HTML5-experiments/&quot;&gt;demos técnicas&lt;/a&gt;&amp;nbsp;y pequeños proyectos que han permitido avanzar mucho en el rendering de mapas en cliente, creado librerías en unos cuantos lenguajes diferentes para CartoDB, etc. Por no hablar de unas decenas de pequeñas demos tecnológicas con HTML5 que nunca han salido a la luz, las cientos de pruebas con agroguía para mejorar la precisión...&lt;br /&gt;
&lt;br /&gt;
Obviamente todas esas cosas no se hacen solo, todo el equipo de Vizzuality ha sido el responsable de lo anterior. No creo que sea fácil encontrar a un equipo tan cohesionado, productivo y creativo.&lt;br /&gt;
&lt;br /&gt;
Cierto es que un año así pasa **mucha factura**, he llegado a diciembre realmente cansado, sin apenas tener ideas nuevas y ser capaz de ser eficiente, es una sensación realmente desgradable. No obstante lo he pasado bien.&lt;br /&gt;
&lt;br /&gt;
En lo personal ha sido un año raro, he pasado fuera de casa casi 3 meses, las cosas en la familia han cambiado un poco (cosas de la desaceleración económica) y hemos tenido algún que otro paso por el hospital, todo solucionado por suerte (*). Pero sobretodo he pasado la crisis de los 30 para pasar a la de los 31 :). Es curioso y duro para mi ver como el rol que tenían tus padres cuando eras pequeño ahora lo juegas tú, la gente te presiona para casarte, tener hijos y comprarte una puñetara casa.&lt;br /&gt;
&lt;br /&gt;
Este año que viene lo afronto con algunos proyectos que tengo en mente, espero que sea un poco más ligero de trabajo. Sólo le pido a dios que me libre de esta maldita lesión de rodilla.&lt;br /&gt;
&lt;br /&gt;
Feliz año a todos.&lt;br /&gt;
&lt;br /&gt;
(*) suerte y muchos profesionales haciendo un buen trabajo, muchas personas que antes padecieron la misma enfermedad y sufrieron con ella y miles de horas de investigación.&lt;br /&gt;
&lt;br /&gt;</description><link>http://blep.blogspot.com/2012/12/resumen-2012.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-6051985179485916886</guid><pubDate>Tue, 17 Jul 2012 21:26:00 +0000</pubDate><atom:updated>2012-07-17T23:30:58.384+02:00</atom:updated><title>Cota superior</title><description>Este ultimo mes ha sido si la memoria no me falla, el mejor mes de mi vida a nivel profesional. Ha sido tan bueno que será difícil que se repita algo así que dicho así no es como para celebrarlo.&lt;br/&gt;&lt;br/&gt;


El mes pasado estuvo durante un día completo en portada de google una &lt;a href=&quot;http://endangeredlanguages.com&quot;&gt;aplicación&lt;/a&gt; web que hemos hecho en vizzuality de la cual he desarrollado el backend. Lo cierto que el mérito de que estuviese allí no es mío pero ser capaz de preparar la arquitectura de la aplicación para aguantar esa cantidad de usuarios ha sido un reto considerable. Hacer una release con google es ademas en cierto modo estresante, pero eso es para otro post.
&lt;br/&gt;&lt;br/&gt;

4 días más tarde hemos presentado otra aplicación con google en la que he trabajado, esta vez una &lt;a href=&quot;http://evolutionoftheweb.com&quot;&gt;inforgrafía de la evolución de la web&lt;/a&gt; que pusieron en la pantalla cara durante una de las presentaciones principales de la google IO. &lt;br/&gt;&lt;br/&gt;


También presentaron en la googleIO otra aplicación en la que paricipé el año pasado...
&lt;br/&gt;&lt;br/&gt;

Para rematar el mes hemos sentado las bases de lo que será el nuevo agroguía, ahora somos dos socios más!
&lt;br/&gt;&lt;br/&gt;

Por ultimo solo decir que este será seguramente el último post de este blog, todo lo que tengo que decir ya lo digo en twitter...</description><link>http://blep.blogspot.com/2012/07/cota-superior.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-5356573586656846075</guid><pubDate>Sun, 22 Jan 2012 20:54:00 +0000</pubDate><atom:updated>2012-01-22T21:58:40.135+01:00</atom:updated><title>Historia del giro de un producto software</title><description>Para los que no lo conozcan: agroguía es un pequeño producto de &lt;a href=&quot;http://agroguia.es/&quot;&gt;guiado GPS&lt;/a&gt; que desarrollo y vendo hace 6 años que trata de facilitar la vida a los agricultores guiandoles por las parcelas.

&lt;br /&gt;
&lt;br /&gt;
Hace cosa de un &lt;b&gt;par de años&lt;/b&gt; yo ya sabía que algún día el hardware donde funcionaba agroguía terminaría desapareciendo. Iphone y android ya estaban ahí y microsoft no podía seguir con una plataforma paupérrima como es windows mobile, así que era de esperar un cambio a otro SO y por tanto todo el desarrollo de agroguía se iría al cielo del software.
&lt;br /&gt;
&lt;br /&gt;
El pasado &lt;b&gt;abril-mayo&lt;/b&gt; nos encontramos con que el único fabricante de hardware windows mobile compatible con agroguía (en verdad al revés) &lt;b&gt;daba por finalizada la fabricación&lt;/b&gt; y por tanto agroguía tenía los días contados. Como somos muy lean, decidimos comprar todo el stock de PDAS compatibles que encontrasemos para sacar el máximo partido al producto.
&lt;br /&gt;
&lt;br /&gt;
En &lt;b&gt;octubre&lt;/b&gt; vendimos la última unidad en stock y por tanto agroguía se había terminado para siempre. Mi idea era esa, ver como moría en paz, 7 años de producto son muchos años y terminas cansado y desmotivado. &lt;b&gt;Pero aquello era como dejar morir un hijo sin hacer nada&lt;/b&gt;. Entonces decidí, en un arrebato totalmente LEAN, cambiar agroguía de plataforma y portarlo a android.
&lt;br /&gt;
&lt;br /&gt;
La decisión de android estaba muy clara, tanto técnicamente como a nivel de costes. Así que decidí bajarme el SDK y NDK de android con tanta suerte que hace 7 años tomé dos decisiones técnicas que han resultado ser oro:
&lt;br /&gt;
&lt;br /&gt;
- separé muy claramente la parte que dependía del SO de lo que sí. Por aquel entonces el código del quake era mi referencia y así lo hacían ellos. Además me propuse separar bien todo (años más tarde me enteré que aquello se llamaba Modelo-Vista-Controlador)
&lt;br /&gt;
&lt;br /&gt;
- Usé OpenGLES. Por aquel entonces nadie daba un duro por OpenGL, pero la idea de tener gráficos 3D en un dispositivo móvil era cuanto menos atractiva. Así que usé una implementación por software de OpenGLES. Quién me iba a decir a mi que años más tarde se convertiría en el standard &quot;real&quot; de móvil para hacer 3D?
&lt;br /&gt;
&lt;br /&gt;
(ahora recuerdo lo de unir los puntos hacia atrás que decía Jobs en su famoso discurso)
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Estas dos decisiones me han permitido reusar TAL CUAL todo el código de la primera versión que no dependía del SO. La mayoría de los ficheros de código siguen sin tocar desde hace 6 años.&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
Calculé que el porting me llevaría 1 mes, incluído el testing en real, que en una aplicación que no puedes actualizar es bastante importante. Yo sabía en verdad que hasta el 2012 no lo tendría.
&lt;br /&gt;
De mientras la cola de personas esperando la versión empezó a crecer, es increíble lo comprensiva que es la gente incluso cuando les explicas cosas que les importan un pepino. Pero bueno, siempre hemos sido bastante transparentes con los problemas y siempre ha funcionado bien.
&lt;br /&gt;
&lt;br /&gt;
A primeros de &lt;b&gt;diciembre&lt;/b&gt; tenía ya una versión &quot;estable&quot;, ya sabía &quot;casi seguro&quot; que era posible, tocaba buscar el hardware y todo lo asociado, que funcionase bien, que tuviésemos proveedores en los que pudiésemos confiar, echar cuentas de lo que costaría etc. Esas cosas que hay que hacer, pero que no se ven. Hay que tener en cuenta factores como el peso de la tablet para que aguante en un soporte pegado al parabrisas de un tractor... :)
&lt;br /&gt;
&lt;br /&gt;
En &lt;b&gt;Enero&lt;/b&gt; ya teníamos el hardware elegido y pude empezar a probar en la plataforma final, después de un par de semanas de pruebas de funcionamiento correcto, de estrés y demás la versión 1.0 estaba terminada. Tiempo para preparar el manual del producto (que por cierto ha pasado de 20 páginas a 8)
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ayer&lt;/b&gt; pusimos las dos primeras unidades de agroguía a los primeros agricultores :D
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Destacaría de estos 3 meses:
&lt;br /&gt;
&lt;br /&gt;
- He tomado bastantes decisiones, por ejemplo he decidido eliminar funcionalidad, simplificar algunas cosas y cambiar el modo de otras que la experiencia nos ha dicho que no funcionaba tan bien. 
&lt;br /&gt;
&lt;br /&gt;
- He tenido que ser muy estricto al trabajar porque el tiempo apremiaba y  siendo sincero prefería hacer cosas nuevas que la plataforma permitía, que eran mucho más cool que reimplementar el sistema anterior. Conocer como funciona el negocio ha sido vital para no irme por las ramas.
&lt;br /&gt;
&lt;br /&gt;
- He sacrificado calidad en algunas partes para tener el producto rodando cuanto antes. No es perfecto, no pasa nada, poco a poco mejoraré esas partes. Creo que a esto le llaman minimun viable product.
&lt;br /&gt;
&lt;br /&gt;
- Carlos Sainz decía que ganar el primer campeonato mundial de rallies fue fácil, que lo difícil fue mantenerse. Aquí me ha ocurrido algo parecido. Cuando desarrollé la primera versión no había miedo, hacías las cosas con dos cojones, a lo bruto. Ahora todo da mucho miedo, sabes que tienes que mantener la calidad de tu producto y eso hace ser mucho más conservador. Esto es posiblemente lo que más acojonado me ha tenido estos meses (y me tiene). Aún así he metido cosas de esas cool que posiblemente al agricultor le importen un pimiento.
&lt;br /&gt;
&lt;br /&gt;
- Ha sido (y es) un reto. Esto hace que recobres un poco la motivación perdida y te abre a nuevas ideas. Android en si es una basura (IMHO) pero la plataforma permite mucho más que windows mobile.
&lt;br /&gt;
&lt;br /&gt;
- Algo un poco más friki, he empezado a usar git-flow y es muy recomendable para este tipo de productos.
&lt;br /&gt;
&lt;br /&gt;
A seguir se ha dicho.</description><link>http://blep.blogspot.com/2012/01/historia-del-giro-de-un-producto.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-4911529033138426017</guid><pubDate>Mon, 02 Jan 2012 14:49:00 +0000</pubDate><atom:updated>2012-01-02T16:05:35.153+01:00</atom:updated><title>objetivos 2012</title><description>Este año pasado ha sido ciertamente agridulce. Por una parte han pasado cosas muy tristes, de esas que se quedan y te hacen reflexionar todos los días, luego otras un poco menos malas, por ejemplo agrotrack, un proyecto en el que he invertido 1 año de mi vida, se fue a tomar por culo (bueno, quizá sea mejor decir, lo mandé a tomar por culo) y cosas muy buenas, enumero las que más me han marcado:&lt;br /&gt;
&lt;br /&gt;
- Empezar a trabajar en vizzuality, gracias a esto último he cumplido mis &lt;a href=&quot;http://blep.blogspot.com/2011/01/objetivos-2011.html&quot;&gt;dos objetivos del año pasado&lt;/a&gt;. También esto me ha permitido conocer y trabajar con &lt;a href=&quot;http://vizzuality.com/company&quot;&gt;gente estupenda&lt;/a&gt;.&lt;br /&gt;
- Estar en contacto un año más con mis ex-compañeros y amigos de unkasoft. De hecho estar en vizzuality es un poco como revivir la experiencia de unkasoft.&lt;br /&gt;
- Conocer a gente como &lt;a href=&quot;https://twitter.com/semurat&quot;&gt;Jorge&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/amaliahern&quot;&gt;Amalia&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/#!/aloaisa&quot;&gt;Álvaro&lt;/a&gt; y cía, que siempre les falta tiempo para apoyarte, echarte un cable y perdonarte cuando es necesario.&lt;br /&gt;
- Re-descubrir el deporte.&lt;br /&gt;
&lt;br /&gt;
Y ahora los objetivos 2012 (y de paso devuelvo la pelota a &lt;a href=&quot;http://www.bonillaware.com/objetivos-2012&quot;&gt;David Bonilla&lt;/a&gt;), pero esta vez en una lista de deseos, sin order alguno, según van saliendo.&lt;br /&gt;
&lt;br /&gt;
- Hacer un juego con los gráficos de &lt;a href=&quot;https://twitter.com/#!/javier&quot;&gt;Javier&lt;/a&gt;&lt;br /&gt;
-&amp;nbsp;poder trabajar con &lt;a href=&quot;https://twitter.com/#!/tokumin&quot;&gt;Simon&lt;/a&gt;&amp;nbsp;una semana para rematar algunos proyectos de los buenos&lt;br /&gt;
- aprender algo de diseño de &lt;a href=&quot;https://twitter.com/#!/saleiva&quot;&gt;Sergio&lt;/a&gt;&amp;nbsp;y &lt;a href=&quot;https://twitter.com/#!/damagedgoods&quot;&gt;Dieg&lt;/a&gt;o&lt;br /&gt;
- aprender a dibujar&lt;br /&gt;
- ser algo más creativo&lt;br /&gt;
- participar en alguna que otra hackaton/proyecto con gente que no conozco pero admiro: &lt;a href=&quot;https://twitter.com/#!/_aitor&quot;&gt;aitor&lt;/a&gt;&amp;nbsp;(linkinpaths en general), &lt;a href=&quot;https://twitter.com/#!/mrdoob&quot;&gt;Mr.doob&lt;/a&gt;,&amp;nbsp;super-&lt;a href=&quot;https://twitter.com/#!/supersole&quot;&gt;sole&lt;/a&gt;, (me he cansado de enlazar a tuiter), @hyperandroid, @jorgebastida por citar algunos.&lt;br /&gt;
- hacer una hackaton con la gente de vizzuality que todavía no hemos tenido ocasión.&lt;br /&gt;
- viajar un poco más&lt;br /&gt;
- ver más a mi apiguitos&lt;br /&gt;
- tratar de correr una san silvestre (con Bonilla :P)&lt;br /&gt;
- no lesionarme de nuevo&lt;br /&gt;
- programar menos&lt;br /&gt;
- participar en la creación de un doodle (por pedir...)&lt;br /&gt;
- Y por último ser un poco menos gilipollas, prepotente, insensato y bocazas y más&amp;nbsp;comprensivo,&amp;nbsp;responsable y &lt;b&gt;comprometido&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Besos :*</description><link>http://blep.blogspot.com/2012/01/objetivos-2012.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-2356503115074106153</guid><pubDate>Fri, 09 Dec 2011 11:58:00 +0000</pubDate><atom:updated>2011-12-09T12:58:20.663+01:00</atom:updated><title>Lejos</title><description>Me llama mi madre o mi hermano y después del típico &quot;qué tal estás&quot; muchas veces ya no tengo mucho más que decirles y lo que es peor, ellos tampoco saben que decirme. 

A veces mi madre hace el esfuerzo de preguntarme, en vano, qué es lo que hago en el trabajo, imagino que en un intento de hablar conmigo algo más de los 30 segundos que dura el qué tal estás.

Estoy acostumbrado a tratar con máquinas y con personas que normalmente solo hablan con máquinas y me pregunto si no estaré tan acostumbrado que he olvidado que el resto de humanos no son así.</description><link>http://blep.blogspot.com/2011/12/lejos.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1119952355464200870</guid><pubDate>Mon, 17 Oct 2011 08:30:00 +0000</pubDate><atom:updated>2011-10-17T10:30:02.181+02:00</atom:updated><title>El síndrome del repetidor</title><description>El primer mes de carrera fue bastante confuso, imagino que igual que para el resto de personas, gente nueva, la primera vez que salía de casa, el acojone de estar solo ante el peligro... ya sabéis. Las clases empiezan, te juntas más o menos con los que parecen que son como tú y 1 semana después ya tienes posiblemente el círculo de personas que configuren tus próximos 3/5 años.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Entre esos posiblemente hay algún repetidor, buen chaval él, al que escuchas con cierto interés ya que él sabe todos los trucos, ya sabes, asignaturas chungas, profesores majos, los hijos de la gran putísima (ahora me doy cuenta que muchos de aquellos no eran más que unos inútiles)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Algunas de las cosas que a mi me dijo aquel chaval fue: &quot;esta asignatura es _imposible_ aprobarla sin ir a la academia&quot; o &quot;es imposible ir a curso por año&quot;. Por aquel entonces ni tenía dinero para pagar la academia -suficiente apretada estaba ya mi familia como para apoquinar otro poquito más al mes- y lo que más me jodía, que alguien me dijese que &quot;eso era imposible&quot;. Aquel día se me hincho la vena y enrabietado para mis a adentros me dije &quot;y por qué esto no va a ser posible?&quot;.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Fue posible.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Así que cuando algún &quot;repetidor&quot; llegue y te diga que algo es imposible, tómatelo como algo más a anotar en la lista de cosas a tener no muy en cuenta. Eso sí, no piensas que no te va a costar trabajo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://blep.blogspot.com/2011/10/el-sindrome-del-repetidor.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-5261204092593485300</guid><pubDate>Sat, 21 May 2011 09:38:00 +0000</pubDate><atom:updated>2011-05-21T12:03:20.317+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Por qué deberías contratar a gente que tenga proyectos opensource</title><description>Podemos recrearnos en lo bonito que es el opensource, qué comunidad más interesante, la filosofía, blablabla, las sinergias colaborativas que provoca ... y demás palabras que tanto nos gustan, pero la realidad es que si un desarrollador tiene proyectos de código abierto lo más probable es que &lt;b&gt;sepa un poco de todas estas cosas&lt;/b&gt;:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Lo importante de escribir &lt;b&gt;documentación&lt;/b&gt;. No hablo de esa documentación que todos esperamos, no de esa que se genera a partir del código, ni de esa que va encuadernada de 200 páginas con imágenes obsoletas. Hablo de ese README donde están los primeros pasos para empezar con el proyecto. Aquí es donde vendes tu producto. Recomiendo una charla muy buena de jacob kalplan-moss,&lt;a href=&quot;http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-writing-great-documentation-4899042&quot;&gt; writting great documentation&lt;/a&gt;. De hecho creo que uno de los grandes éxitos de github es tener una portada de proyecto con el README renderizado desde un fichero de texto.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Cerrar código: un &lt;b&gt;código cerrado no es lo mismo que un código terminado&lt;/b&gt;. El típico caso de &quot;no, es que tienes que poner el fichero XXXX.cnf en tal ruta, habilitar el puerto serie, ejecutar tal demonio, cambiar config.h y ya&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Lo importante de &lt;b&gt;testear&lt;/b&gt;. Si una persona quiere aportar a tu proyecto y no hay tests no podrá estar seguro de cada cambio que haga.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Enseñar tu código te obliga a hacer las cosas lo mejor que puedes, o por lo menos no pasar por alto esas situaciones de &quot;ya lo haré bien&quot;. Si tu quickstart son 10 comandos algo no va bien, no?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Trabajar en un entorno &lt;b&gt;distribuído&lt;/b&gt;. Cuando me bajo y uso jquery no tengo a john resig en la mesa de al lado, así que me las tengo que apañar como pueda para solucionar mis problemas. De la misma forma otros no me tendrán a su lado cuando empiecen a usar tus proyectos y la mejor forma de hacer esto es dejar las cosas bien (esto tiene mucho que ver con los anteriores puntos).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &quot;Compartir es vivir&quot;. Si tu desarrollador libera código habrá entendido que compartir es bueno para los demás y para él mismo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por tanto, haz que tu empresa libere código y haz que el funcionamiento interno se parezca lo más posible al sistema open source. Ya sabes, empieza por hacer que crear un repositorio y un tracker sea tan simple como en github/bitbucket y da alas a tus empleados a que suban allí su código. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;</description><link>http://blep.blogspot.com/2011/05/por-que-deberias-contratar-gente-que.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-2161428548720987576</guid><pubDate>Wed, 27 Apr 2011 13:25:00 +0000</pubDate><atom:updated>2011-04-27T15:34:35.283+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Ejercicio para gente que no desarrolla</title><description>Este es un ejercicio para que lo realicen a modo de prueba la gente relacionada con el desarrollo de software pero que no desarrollen. No te llevará ni un minuto. Asegúrate que estás solo y sin distracciones.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pasos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.- plantea una suma de dos números de 10 cifras, en una hoja de papel, como lo hacíamos cuando estábamos en el colegio&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.- hazla con tranquilidad, cronometrándote. Cuando termines, anota el tiempo&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Te planteo ahora dos retos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reto 1:  Ahora plantea otra suma, pero entre columna y columna que sumas, cuenta de 1 a 5. Cronometrate  y compara con el tiempo anterior&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reto 2: Plantea ahora dos sumas de números de 10 cifras. Haz las dos sumas, pero salta de una suma a otra cada 2 columnas. Al igual que antes cronometrate.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reto Bonus: Planteate otra suma y dile a alguien que cada dos números te haga una pregunta simple, por ejemplo, tu numbre, apellido, calle donde vives o número de DNI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y este post no tiene nada que ver con las sumas :)&lt;/div&gt;</description><link>http://blep.blogspot.com/2011/04/ejercicio-para-gente-que-no-desarrolla.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-3823242411868591858</guid><pubDate>Fri, 08 Apr 2011 16:11:00 +0000</pubDate><atom:updated>2011-05-04T08:48:00.845+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>whitebrd.me - detalles técnicos</title><description>El pasado fin de semana (primero de abril del 2011 por si lees esto en un futuro lejano) organizamos &lt;a href=&quot;http://alltogether.es/&quot;&gt;alltogethernow&lt;/a&gt;, un encuentro de un fin de semana para hacer una aplicación en 48 horas. La aplicación que hicimos nosotros (@&lt;a href=&quot;http://twitter.com/flopezluis&quot;&gt;flopezluis&lt;/a&gt; y yo)fue &lt;a href=&quot;http://whitebrd.me/&quot;&gt;whitebrd.me&lt;/a&gt;, una pizarra compartida en tiempo real. Voy a dar una pinceladas de los detalles técnicos y un pequeño post-morten después de 1 semana funcionando.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para empezar optamos por usar toda la tecnología del servidor asíncrona. Pensarás que lo hicimos porque es lo que mola, ahora lo asíncrono está en todos lados, si no tienes algo asíncrono no puedes montar algo como dios manda... si toda la gente que se le llena la boca con &quot;asíncrono&quot; hubiese leído la famosa (en mi época) &quot;&lt;a href=&quot;http://beej.us/guide/bgnet/output/html/multipage/index.html&quot;&gt;beej&#39;s socket guide&lt;/a&gt;&quot;... :).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;El caso es que &lt;a href=&quot;http://www.tornadoweb.org/&quot;&gt;tornado&lt;/a&gt;, un pequeño framework web creado por friendfeed (después comprada por facebook) y ahora matenido por facebook, hizo las veces de servidor web y redis como sistema de persistencia. La elección de redis fue por dos razónes. La primera por hypearnos a más no poder y la segunda es que permite escribir muy rápido, tiene funcionalidad de publisher/sibscriber y un sistema de VM que encaja muy bien (luego veremos cómo). Para rematar usamos nginx como frontend. Se puede ser más asíncrono? :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La razón para usar asíncrono realmente es muy sencilla: es una aplicación con MUY poca carga de CPU y mucha E/S, así que el paradigma encaja perfectamente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En la parte de cliente usamos websockets para enviar todos los comandos y canvas para dibujar. Es una tecnología novedosa, así que sabíamos que muchos navegadores no lo soportarían (FF4 lo tiene desactivado por defecto, primer #FAIL).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Manos a la obra, nos pusimos y en 48 horas teníamos &lt;a href=&quot;https://github.com/javisantana/whitebrd.me&quot;&gt;el código&lt;/a&gt; en cuestión. Más que comentar el código, prefiero centrarme en las cosas que han pasado en estos días y algunas conclusiones técnicas que he sacado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- El segundo día a la gente de github les dio por poner un enlace en su &lt;a href=&quot;https://github.com/blog/829-github-reflog-v1-4-04&quot;&gt;blog&lt;/a&gt;. No sé cual será el tráfico de ese blog, pero en el nuestro generó 4.5Gb de tráfico en 12 horas. Iluso de mi, no había activado la memoria virtual en redis, de forma que redis no podía tirar a disco las pizarras ya no usadas (&lt;a href=&quot;https://github.com/javisantana/whitebrd.me/blob/master/src/models.py#L20&quot;&gt;se almacenan todos los comandos que genera una pizarra&lt;/a&gt;), así que empezó a &quot;swapear&quot; como un demonio. Suerte que teníamos el &lt;a href=&quot;https://github.com/javisantana/whitebrd.me/blob/master/fabfile.py&quot;&gt;deploy automático&lt;/a&gt;, así que la activé rápido y medio solucionado. Finalmente la clave que almacenaba esa pizarra terminó con más de 20mb de datos. He tenido que eliminarla porque el VPS de 256mb no da para mucho más :). La CPU de la máquina no pasó de un 8%.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- tornado funciona excepcionalmente bien, además de ser un framework muy interesante para cosas &quot;sencillas&quot; (no tiene ORM por ejemplo) es realmente rápido. Además el &lt;a href=&quot;https://github.com/facebook/tornado/blob/master/tornado/ioloop.py&quot;&gt;nucleo&lt;/a&gt; es fácil de entender y está bien documentado. Podríamos haber optado por twisted, gevent o algún otro sistema asíncrono en python.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- tratamos de usar el mecanismo &lt;a href=&quot;http://redis.io/topics/pubsub&quot;&gt;pub/sub de redis&lt;/a&gt;, pero la librería asíncrona cliente redis para python es completamente inestable, así que terminamos por implementar lo misma funcionalidad en una &lt;a href=&quot;https://github.com/javisantana/whitebrd.me/blob/master/src/publisher.py&quot;&gt;pequeña clase &lt;/a&gt;. Moraleja: a veces la solución más simple es la mejor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- no conocía redis, pero es realmente un descubrimiento. Funciona muy bien: el setup es muy rápido, prácticamente configuración 0, la integración con los tipos de python buena y además rápida. El model de memoria virtual encaja muy bien ya que si es necesaria más memoria las claves que no se usan las vuelca a disco, de forma que todas las pizarras que ya no se usan no están malgastando los 256mb memoria.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora mismo hay más de 1000 pizarras creadas y la mayoría de ellas tienen dibujos de aparatos reproductores masculinos :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://blep.blogspot.com/2011/04/whitebrdme-detalles-tecnicos.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-8098538611223257885</guid><pubDate>Tue, 01 Feb 2011 17:47:00 +0000</pubDate><atom:updated>2011-02-22T11:38:03.109+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">negocio</category><title>Montar una empresa, desde cero</title><description>Resumen: &lt;b&gt;haz algo&lt;/b&gt; y &lt;b&gt;véndelo &lt;/b&gt;(no lo regales)&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Hace ya unos años que vengo leyendo y escuchando que lo de montar una empresa de base tecnológica en España es una utopía, que si no dan dinero, que si el papeleo, la burocracia, los socios, la competencia y la madre que lo parió.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bien, pongamos que vas a montar una empresa de tecnología y vas a vender un producto o servicio. Partamos de dos supuestos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) No estás trabajando y nunca has trabajado: El primer paso es que te dejes de leer esto, busques un trabajo y veas de que va. Quizás no sea necesario, pero yo lo recomiendo. Sobretodo, si eres técnico, no te fijes en lo que hacen tus compañeros técnicos, &lt;b&gt;fíjate en los comerciales, gerentes y otros que salen a vender el pescado&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Estás trabajando y/o tienes experiencia: se supone que ganas un salario y que además sabes de que va lo de trabajar: momentos duros, horas, esfuerzo, dolores de espalda, el sueldo de final de mes, las retenciones, la SS, los compañeros, jefes, &lt;b&gt;comerciales&lt;/b&gt;, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;primer tópico&lt;/b&gt;: Nadie me va a dar 200k€ que necesito para levantar mi empresa. Ya, no has pensado que antes de correr tienes que aprender a andar? Realmente necesitas 200k€ para probar? Tranquilo, cuando factures un poco y la gente vea que funciones vendrán a ofrecerte dinero, palabra. Agroguía lo empezamos con 400€, para comprar un equipo con el que hacer demostraciones y para imprimir unos carteles y pegarlos por los pueblos usando el coche del padre de novia.&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;segundo tópico&lt;/b&gt;: Mi trabajo no me deja tiempo. Bien, trabaja a media jornada (vive con menos dinero) y usa tu tiempo libre para desarrollar tu producto/servicio. Lee el post de Martín Pérez sobre el &lt;a href=&quot;http://brigomp.blogspot.com/2010/11/emprender-en-espana-mito-1-trabajo-full.html&quot;&gt;emprender full time&lt;/a&gt;. Yo desarrollé &lt;a href=&quot;http://agroguia.es/&quot;&gt;agroguía&lt;/a&gt; terminando el PFC y trabajando a media jornada.&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Te pones a desarrollar tu negocio, piensas que puede haber un buen hueco donde vender tu producto y lo haces. Posiblemente no sepas muchas cosas y dudarás, no pasa nada, vete a hablar con un posible cliente, o dos, o tres... y preguntale qué necesita. Te vas a sorprender de lo amable que es la gente cuando le preguntas por un tema que le interesa. Sí, lo mismo necesitas quedar con él en horario laboral y tengas que pedirte un día de vacaciones en tu trabajo. Regalale tu producto en agradecimiento (pero luego cobra por él eh?), si confías en tí no hay porque tener miedo. Nadie dijo que no llevase esfuerzo. Lo mismo te da vergüenza, tienes miedo o &quot;yo es que no soy comercial&quot;. Si es así olvida montar algo, dejalo para cuando tengas más experiencia. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo desarrollas (aquí pueden pasar meses, tú sabrás, se supone que es tu fuerte ¿no?) y te pones a venderlo. Pero tienes que ser realista, debes centrarte mucho en algo concreto y pequeño. Tienes poco tiempo y por muy bueno que seas los milagros no existen. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;/b&gt;&lt;blockquote&gt;&lt;b&gt;tercer tópico: &lt;/b&gt;Para vender y facturar necesito tener una base legal, una empresa y me han dicho que en España se tardan un montón de meses y se necesita mucho dinero para montar algo. &lt;b&gt;Mentira&lt;/b&gt;, para facturar con ser autónomo (y con menos) tienes suficiente. Son 200 y pico € al mes de seguridad social, tienes que hacer el IVA cada trimestre y la declaración de la renta como todos los años. En un día tienes todo el papeleo hecho. Lo normal es que hables con una gestoría que te lleve los papeles, no es caro. Si piensas que una gestoría es cara, olvidate de montar el negocio.&lt;/blockquote&gt;Hazte ver, ya sea haciendo una web y dando la chapa en un foro, poniendo carteles en la tiendas o lugares donde tus clientes pasan, por twitter, por facebook, cara a cara... te sorprenderías de lo amable que es la gente y lo que te ayuda. Nosotros hemos ido a cooperativas y tiendas para agricultores y NUNCA nos han negado poner un cartel o publicidad, todo lo contrario, cuando la gente ve que necesitas ayuda, te ayuda, y mucho. &lt;a href=&quot;http://blog.agroguia.es/blog/wordpress/2010/03/26/como-trabajamos-en-agroguia-es/&quot;&gt;Vendete como puedas&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Pongamos que haces el primer cliente, de potra, porque de vender no tienes ni idea. Tu producto será posiblemente no demasiado bueno, pero la persona ha confiado en tí, &lt;b&gt;no le falles&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;b&gt;cuarto tópico&lt;/b&gt;: es que soy técnico y no sé nada de marketing, ni comercial, ni nada. Necesito tener empleados/socios que sean comerciales, de marketing o lo que sea. Está claro que contar con gente que sepa de su campo está muy bien, pero haz tú esos roles. Aprenderás muchas cosas que necesitas saber.&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Ahora es cuando empieza lo duro. Tu cliente te necesitará, tendrá problemas, tendrás que esforzarte, pero si lo haces obtendrás lo que necesitas&lt;/div&gt;&lt;div&gt;1) feedback con muy buenas ideas para seguir desarrollando tu negocio y seguir vendiendo&lt;/div&gt;&lt;div&gt;2) Ese cliente, si está contento, será tu mejor comercial &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y preparate para recibir &lt;a href=&quot;http://blep.blogspot.com/2008/04/partes-de-un-negocio-cuando-te-caen.html&quot;&gt;ostias por doquier&lt;/a&gt;, preparate para trabajar mucho, para tener el sentimiento de que estás fallando, de que esto es una mierda, de &quot;qué bien estaba yo trabajando por cuenta ajena&quot;, de que echas un montón de horas, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eso sí, el momento en el que un cliente usa algo que tú has creado, y le es útil, te recomienda y te llama para felicitarte. Aún recuerdo cuando me llamaron la primera vez para felicitarme porque se había ahorrado una verdadera pasta en simiente por usar mi producto, cuando &lt;a href=&quot;http://weblog.linkingpaths.com/2008/10/15/otras-pequenas-empresas-agroguia/&quot;&gt;otros que admiras te reconocen&lt;/a&gt;,  &lt;a href=&quot;http://blep.blogspot.com/2009/07/agroguia-ar-gana-los-premios-3m.html&quot;&gt;ganas premios&lt;/a&gt;,  cuando te sacan en el &lt;a href=&quot;http://blep.blogspot.com/2009/03/impacto-de-los-medios-tradicionales-en.html&quot;&gt;periódico&lt;/a&gt; o en &lt;a href=&quot;http://blog.agroguia.es/blog/wordpress/2009/11/28/agroguia-en-tve/&quot;&gt;TVE&lt;/a&gt; y te llama tu tío de Bilbao con lágrimas en los ojos para decirte que te ha visto o creas &lt;a href=&quot;http://agroguia.es/formacion&quot;&gt;pequeños side-projects&lt;/a&gt;. &lt;b&gt;Sientes el proyecto como tuyo, eso no se paga con una nómina&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bien, ahora haces una serie de clientes, facturas una cantidad que hace que merezca la pena. Quizás ahora es cuando puedas dejar de trabajar y ponerte full-time, buscar comerciales, socios, inversores para irte a una oficina en condiciones, o simplemente mantenerte ahí y hacer lo que te venga en gana. Nadie dijo que tuvieses que crecer (yo sigo trabajando full-time para una empresa, soy un cobarde :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Si crees que teniendo un montón de pasta de capital riesgo va a ser más fácil, lo llevas claro: los vas a tener con el aliento en tu cogote y desde luego el resto de cosas las tendrás que hacer, aunque eso sí, con la seguridad de tu nómina al final de mes y una tarjeta de visita estupenda donde pondrá que eres CEO de uberspainsoft S.L. Todo tiene sus ventajas, no digo que no sea una buena idea. Seguramente si quieres montar algo con cierta entidad o equipación cara necesites cierta pasta para empezar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En resumen: tiempo, esfuerzo y dinero, si no tienes dinero, ya sabes qué opciones te quedan. Déjate llevar, lanza algo aunque sea pequeño y verás como crece o &lt;a href=&quot;http://blep.blogspot.com/2009/03/partes-de-un-negocio-en-que-estamos.html&quot;&gt;falla&lt;/a&gt; mientras aprendes. Seguramente no lo hagas todo bien, nadie nace aprendido, así que no pasa nada. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Qué lo que te he contado es cutre, poco profesional o poco serio. Es una forma, seguro que hay otras muchas mejores :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cosas que te pueden interesar:&lt;/div&gt;&lt;div&gt; - Linking paths sobre &lt;a href=&quot;http://weblog.linkingpaths.com/2011/01/12/bootstrapping/&quot;&gt;bootstraping&lt;/a&gt;.&lt;/div&gt;&lt;div&gt; - Datos de un pequeño negocio: &lt;a href=&quot;http://blep.blogspot.com/2009/11/agroguia-datos-de-un-pequeno-negocio.html&quot;&gt;lo que facturamos en agroguía&lt;/a&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href=&quot;http://www.devilishgames.com/&quot;&gt;devilishgames&lt;/a&gt;, una empresa que hace juegos en flash. Son un verdadero ejemplo, llevan la tira de años trabajando, al principio haciendo juegos gratis, pero poco a poco, con trabajo muy duro se están haciendo un hueco entre los mejores. Otra por el estilo es &lt;a href=&quot;http://www.lemonteam.com/&quot;&gt;LemonTeam&lt;/a&gt; o &lt;a href=&quot;http://cokidoo.com/&quot;&gt;Cokidoo&lt;/a&gt; con equipos de gente con mucho talento y trabajo duro.&lt;/div&gt;&lt;div&gt;- Hay muchos ejemplos interesantes, por ejemplo &lt;a href=&quot;http://ukecosas.es/es/&quot;&gt;ukecosas&lt;/a&gt;, marcelino llano con sus servicios de &lt;a href=&quot;http://marcelinollano.com/&quot;&gt;desarrollo de producto&lt;/a&gt;, etc, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://blep.blogspot.com/2011/02/montar-una-empresa-desde-cero.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-3815690637135968723</guid><pubDate>Mon, 17 Jan 2011 19:10:00 +0000</pubDate><atom:updated>2011-01-17T21:38:39.087+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>Las herramientas que uso</title><description>Una de las cosas interesantes del desarrollo es ver como trabajan los demás. Es difícil sentarte al lado de un desarrollador y no aprender ese pequeño truco o herramienta, siempre hay algún detalle que te puede servir o que puedes aportar, así que voy a comentar las que uso a diario y me hacen la vida más fácil.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fundamentalmente uso Linux y OSX, aunque prácticamente uso las mismas herramientas en ambos. Aparte de las que todos conocemos, grep, ls, cp, mv... mis favoritas son las siguientes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- vim: lo uso como único editor. No sé si será el mejor, pero usar el mismo editor para todo tipo de fichero es realmente eficiente.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href=&quot;http://tmux.sourceforge.net/&quot;&gt;tmux&lt;/a&gt;: es una herramienta que permite tener varias terminales virtuales dentro de una. Es similar a &lt;a href=&quot;http://www.gnu.org/software/screen/&quot;&gt;GNU screen&lt;/a&gt;. Permite además conmutar rápidamente entre terminales (ctrl-b + NUM o ctrl-b + l), partir la pantalla vertical y horizontalmente (muy útil por si ejecutas un comando y quieres ver la salida de un tail -f).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;a href=&quot;http://betterthangrep.com/&quot;&gt;ack-grep&lt;/a&gt;: es un grep con esteroides, te saca las búsquedas coloreadas, ignora las carpetas .git .svn y demás especiales. Fundamental si eres programador&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- git svn: es una parte de git, pero es tan útil para trabajar contra servidores subversion... :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- gitk y gitg en linux, gitx en osx: son herramientas gráficas para ver las historia de un repo git, la mar de útiles cuando quieres ver los commit, hacer diffs y demás.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- rsync: espectacular herramienta para sincronizar ficheros entre carpetas, sobretodo entre diferentes máquinas.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- curl: para hacer peticiones web, permite hacer test, revisar las cabeceras (con -I, confieso que no puedo evitar echar un ojo a las cabeceras de los servidores web)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- ab (apache benchmark), para ir teniendo idea de las reqs/s, tiempo de respuesta, etc que tiene la applicación web.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- fabric: es una herramienta para automatizar tareas en servidores y permite hacer cosas un poco más complejas que con un simple ssh. Junto con bash y rsync automatizar es un gusto :P.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- firebug y web developer tools de chrome&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- ipython: consola python con esteorides&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Últimamente estoy probando vagrant (para gestionar máquinas virtuales), cada día trato de hacer músculo con vim, usar más los trucos de bash... &lt;/div&gt;</description><link>http://blep.blogspot.com/2011/01/las-herramientas-que-uso.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-8615990787781260767</guid><pubDate>Sun, 02 Jan 2011 15:58:00 +0000</pubDate><atom:updated>2011-01-02T17:14:34.372+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><title>objetivos 2011</title><description>Cada año que pasa esto de platearse unos objetivos me lo creo menos, pero todo sea por hacer el ejercicio mental. El año 2010 ha sido realmente malo, así que esperemos superarlo. Al tema:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Recuperar la ilusión por desarrollar. He perdido mucha de la ilusión que tenía, no me encuentro muy motivado, no sé si es por los proyectos, porque me hago mayor, cada vez me cuesta más aprender cosas nuevas interesantes, no veo que mi trabajo sea efectivo y sirva para algo. Tal vez esto sea cuestión de tiempo, de encontrar un proyecto interesante o es que quizás haya llegado la hora de cambiar de &quot;negocio&quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Mejorar mi inglés de una vez por todas. No necesita demasiada explicación. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://blep.blogspot.com/2011/01/objetivos-2011.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-2252867082936312957</guid><pubDate>Sun, 28 Nov 2010 20:13:00 +0000</pubDate><atom:updated>2010-11-28T21:38:38.559+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><title>mejor me quedo como estoy</title><description>Hace hoy 9 años me operaron de corazón. Era un &lt;a href=&quot;http://www.texasheartinstitute.org/HIC/Topics_Esp/Cond/aseptal_sp.cfm&quot;&gt;problema congénito&lt;/a&gt; que en palabras textuales del médico &quot;lo resolvía con una mano atada a la espalda&quot; a pesar de que ya era un caso grave (de hecho mi parte derecha del corazón es más grande de lo normal).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Momentos antes de entrar a darme una sesión de rayos X un día antes de la operación, miré por la ventana del hospital y me pegó un &quot;flasazo&quot; de cordura: &quot;y si mañana estiro las punteras en la operación?&quot;. Por suerte (*) estuve dentro del 99% de pacientes que salen vivos y coleando.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sin embargo, ese momento se quedó bien fijado en mi cabeza y evolucionó a peor, tuve unos meses en los que pensé que aquello no podía haber ido tan bien como los médicos decían y que tal vez el parche que me pusieron se soltaría y moriría el día menos pensado.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Los meses que aquella idea peregrina duraron (el tiempo dio la razón a los médicos) han sido, con &lt;b&gt;mucho&lt;/b&gt;, los meses más felices de mi vida.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y este post es para leermelo cuando tenga que tomar alguna decisión importante y piense: &quot;mejor me quedo como estoy&quot;.&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;(*) en realidad no fue suerte, fue gracias al trabajo de mucha gente durante años y posiblemente de muchos muertos con el mismo problema que yo.&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://blep.blogspot.com/2010/11/mejor-me-quedo-como-estoy.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-8151292974298629695</guid><pubDate>Sun, 21 Nov 2010 20:02:00 +0000</pubDate><atom:updated>2010-11-22T09:10:24.934+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><title>5 minutos</title><description>Cuando mi familia decidio que yo tenia que estudiar una carrera universitaria decidieron que yo debia a ir a una de esas residencias universitarias. No,&lt;div&gt; no de esas que estas pensando donde la juerga es asignatura troncal,&lt;/div&gt;&lt;div&gt; era mas bien de esas aburridas donde te semiobligan a hacer lo que realmente debes hacer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Una de las condiciones para entrar y permanecer en ella era hacer 5 minutos de reflexion en la capilla. Visto asi daba algo mas que miedo,&lt;/div&gt;&lt;div&gt;la palabra secta se podia leer en mi cara cuando me lo comentarom, pero bueno,&lt;/div&gt;&lt;div&gt; el resto de cosas estaba bien, asi que tragamos. Tampoco me llegaba el aire al cuello, no habia muchos mas sitios donde las novatadas estuviesen prohibidas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;anyos despues, habiendo reflexionado durante todos los dias durante 3 anyos, me doy cuenta que aqeullos minutos en los que parabas, mientras contabas los segundos para irte, eran un ejercicio realmente bueno. En esos minutos podia organizar el dia, pensar sobre las metedura de pata y en general sobre cosas que ahora no tengo tiempo de pararme a pensar.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahora es cuando deberia darme la vuelta y dar las gracias por aquello,tal vez lo haga.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pd: escrito desde el kindle,siento las tildes y enyes.&lt;/div&gt;</description><link>http://blep.blogspot.com/2010/11/5-minutos.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1449600806204060654</guid><pubDate>Sat, 13 Nov 2010 16:22:00 +0000</pubDate><atom:updated>2010-11-13T18:01:09.841+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">agroguia</category><category domain="http://www.blogger.com/atom/ns#">producto</category><category domain="http://www.blogger.com/atom/ns#">programacion</category><title>El camino corto</title><description>Cuando comencé a crear &lt;a href=&quot;http://agroguia.es/&quot;&gt;agroguía&lt;/a&gt;, hace ya casi 5 años, tuve la suerte de tener claro lo que quería resolver, y digo suerte porque la mayoría de proyectos de tecnología que veo a mi alrededor no tienen casi nunca claro a donde quieren llegar (esto es tema para otro post). &lt;b&gt;El primer paso para resolver un problema es tener claro el problema&lt;/b&gt;. Dicho esto desarrollé una aplicación que resolvía &lt;b&gt;un solo problema&lt;/b&gt;, sin ningún tipo de funcionalidad añadida.&lt;br /&gt;&lt;br /&gt;Esto tiene sus cosas buenas y sus cosas malas. Si desarrollas un producto y lo vendes vas a tener que escuchar muchas veces &quot;el software de la competencia hace X e Y, el tuyo no&quot;, te van a aconsejar miles de veces, de personas que saben y que no saben que deberías hacer tal o cual funcionalidad que será un éxito en el número de ventas. Normalmente &lt;b&gt;la gente te agradece mucho más el hecho de que mantengas la aplicación simple a lo que protesta por no tener tal o cual cosa&lt;/b&gt;, que, aunque lo veas como fundamental para tu negocio, normalmente se puede pasar sin ello si el producto te resuelve tu problema principal. Somos así de tontos.&lt;br /&gt;&lt;br /&gt;Sin embargo pasa el tiempo y ves como mucha gente te solicita cosas muy concretas que te encajan. Pero la cuestión aquí no es que encajen porque un señor muy listo haya sacado su &lt;a href=&quot;http://37signals.com/rework/images/art-planningisguessing.png&quot;&gt;bola de cristal&lt;/a&gt; y haya pensando cierta funcionalidad que los usuarios necesitarán, ni encajan porque tenga claro que voy a vender mucho más por ello, si no que lo hace porque en parte me siento en deuda con la información que la gente me está dando (esta es otra cosa que cuando cuento a la gente cercana no entienden &quot;esto es un negocio, javi&quot;).&lt;br /&gt;&lt;br /&gt;Ves que encaja y la desarrollas, pero entonces piensas en los usuarios de tu producto y te dices: &quot;no voy a joder a esta gente ahora que ya se ha acostumbrado a usar el producto&quot;. Así que hace un tiempo decidí dos cosas:&lt;br /&gt;&lt;br /&gt;- nunca cambiaría el &quot;camino corto&quot;, esto es, la forma de usar la aplicación para resolver el problema original.&lt;br /&gt;- nunca añadiría funcionalidad que entorpeciese la resolución del problema original, esta siempre debe ser &quot;opcional&quot;.&lt;br /&gt;&lt;br /&gt;En resumen, de las releases de agroguía nunca se ha tocado el planteamiento original de empezar a funcionar dando a un solo botón, ni como se interpretan los datos, eso sí, se ha añadido funcionalidad, pero siempre opcional (de hecho un tiempo la vendimos aparte), el cliente si se actualizaba iba a seguir funcionando exactamente igual pero si quería podía usar las características añadidas. También tengo que destacar que las releases de agroguía no suelen ser para añadir funcionalidad, si no para mejorar la que hay.&lt;br /&gt;&lt;br /&gt;Escribo este post ahora como &quot;autocastigo&quot;. La última release que tenía planeada de agroguía rompía una de esas reglas, no de forma muy importante en mi opinión, pero que tras las primeras pruebas con gente real resultó no ser la mejor idea.&lt;br /&gt;&lt;br /&gt;Son cosas como estas las que te recuerdan lo importante que es seguir una filosofía.</description><link>http://blep.blogspot.com/2010/11/el-camino-corto.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-3767996838153445487</guid><pubDate>Sun, 31 Oct 2010 21:11:00 +0000</pubDate><atom:updated>2010-10-31T23:34:41.279+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><title>scrapper multiproceso en python</title><description>&lt;div&gt;Nota inicial: Si no te gusta python puede que este post te haga cambiar de opinión :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Una de las &lt;a href=&quot;http://docs.python.org/dev/whatsnew/2.6.html#pep-371-the-multiprocessing-package&quot;&gt;mejoras de Python 2.6&lt;/a&gt; (en estos momentos vamos por la 2.7, que será la &lt;a href=&quot;http://docs.python.org/dev/whatsnew/2.7.html#the-future-for-python-2-x&quot;&gt;última de la rama 2.x&lt;/a&gt;) es el módulo multiprocessing. En pocas palabras viene a ser un módulo para trabajar con procesos de la misma forma que se hace con threads, de hecho en un subconjunto de la funcionalidad puedes cambiar threads por procesos cambiando un solo import.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sin embargo el módulo multiprocessing añade cosas muy interesantes como la posibilidad de trabajar con pool de procesos. Veamos un ejemplo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Imaginemos que tenemos que bajar una serie de ficheros pdf para posteriormente extraer información de ellos. Una primera aproximación sería esta:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import urllib&lt;br /&gt;import urllib2&lt;br /&gt;&lt;br /&gt;reg_nos = [16738, 17288, 18162, 18776, 18868, 19116, 19223, 19505];&lt;br /&gt;pdf_url = &#39;http://www.mapa.es/agricultura/pags/fitos/registro/sustancias/pdf/%s.pdf&#39;&lt;br /&gt;&lt;br /&gt;def fetch_url(url, params={}): &lt;br /&gt;    return urllib2.urlopen(url).read() &lt;br /&gt;&lt;br /&gt;def save_url_as_file(url, filename):&lt;br /&gt;    open(filename,&#39;wb&#39;).write(fetch_url(url))&lt;br /&gt;    &lt;br /&gt;def download_pdf(reg_no):&lt;br /&gt;    f = &#39;%d.pdf&#39; % reg_no&lt;br /&gt;    save_url_as_file(pdf_url % reg_no, f)&lt;br /&gt;    print &quot;\t- %s downloaded&quot; % f&lt;br /&gt;&lt;br /&gt;# tests&lt;br /&gt;def single(regs):&lt;br /&gt;    for u in regs:&lt;br /&gt;        download_pdf(u)&lt;br /&gt;&lt;br /&gt;single(reg_nos)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(puedes verlo mejor con sintáxis coloreada en &lt;a href=&quot;http://gist.github.com/657222&quot;&gt;github&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Para 4 míseros ficheros no merece la pena hacer más, pero imaginemos que queremos bajarnos miles y que además lo tenemos que hacer periódicamente, el tiempo en bajarse todos esos ficheros es alto. Lo primero que se nos ocurre es usar concurrencia: lanzando una serie de hilos/procesos que vayan bajando los ficheros aceleraría sensiblemente el proceso (de hecho así lo hacen los navegadores cuando se bajan los ficheros que referencia el HTML).&lt;br /&gt;&lt;br /&gt;En python esto traducido a código ocupa mucho menos que explicarlo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def download_multi(regs, nprocesses=4):&lt;br /&gt;    pool = Pool(processes=nprocesses) &lt;br /&gt;    pool.map_async(download_pdf, regs).get()&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Usando multiprocessing.Pool python se encarga de lanzar los procesos y preparar una cola para enviarle a la función que especificamos en el primer parámetro. &lt;br /&gt;&lt;br /&gt;Este es un uso de &lt;a href=&quot;http://docs.python.org/dev/library/multiprocessing.html#module-multiprocessing&quot;&gt;multiprocessing&lt;/a&gt;, pero tiene otros muchos muy interesantes.&lt;br /&gt;&lt;br /&gt;Podéis ver todo el &lt;a href=&quot;http://gist.github.com/657219&quot;&gt;código en github&lt;/a&gt; y ejecutar el pequeño benchmark:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;q6:smll javi$ python fetch.py &lt;br /&gt;        - 16738.pdf downloaded&lt;br /&gt;        - 17288.pdf downloaded&lt;br /&gt;        - 18162.pdf downloaded&lt;br /&gt;        - 18776.pdf downloaded&lt;br /&gt;        - 18868.pdf downloaded&lt;br /&gt;        - 19116.pdf downloaded&lt;br /&gt;        - 19223.pdf downloaded&lt;br /&gt;        - 19505.pdf downloaded&lt;br /&gt;2.30190205574&lt;br /&gt;        - 18776.pdf downloaded&lt;br /&gt;        - 17288.pdf downloaded&lt;br /&gt;        - 18162.pdf downloaded&lt;br /&gt;        - 16738.pdf downloaded&lt;br /&gt;        - 19116.pdf downloaded&lt;br /&gt;        - 18868.pdf downloaded&lt;br /&gt;        - 19505.pdf downloaded&lt;br /&gt;        - 19223.pdf downloaded&lt;br /&gt;0.807252883911&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Un incremento un poco menor de 4X, el número de procesos que lanzo en el pool. &lt;br /&gt;&lt;br /&gt;Últimamente uso este módulo para muchísimas tareas ya que el uso es prácticamente directo si la aplicación está bien modularizada y permite aprovechar la potencia de las máquinas actuales (en mi caso un dual core).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Bonus Track - threads&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con threads también es posible hacerlo, pero lamentablemente el módulo threading no tiene la funcionalidad Pool, así que debemos emularla. &lt;br /&gt;&lt;br /&gt;Antes de pasar a la implementeación está bien decir que desde hace cosa de dos años hasta ahora se ha criticado mucho el modelo multithread de python debido a que existe una cosa llamada GIL (Global Interpreter Lock) que hace que solo pueda estar ejecutándose un hilo al mismo tiempo en el intérprete python. A pesar de ser hilos nativos hay un lock que evita que dos hilos se puedan ejecutar al mismo tiempo. Si quieres saber un poco más sobre el GIL hay una &lt;a href=&quot;http://www.dabeaz.com/python/GIL.pdf&quot;&gt;presentación&lt;/a&gt; excelente de maestro Dave Beazley. &lt;br /&gt;&lt;br /&gt;Es para llevarse las manos a la cabeza, pero esto no quiere decir que el desarrollo con hilos en python esté &quot;prohibido&quot;, símplemente hay que saber para qué se puede o no usar. En este caso el uso de threads, a pesar del Lock es muy interesante, ya que al ser tareas fundamentalmente de Entrada/Salida no hay problemas de bloqueo entre hilos (la explicación más en detalle en la presentación que he citado antes).&lt;br /&gt;&lt;br /&gt;Sin más, usando Queue (otro módulo python mágico), una cola FIFO sincronizada la tarea es más o menos simple:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def threaded(regs, nthreads=4):&lt;br /&gt;    # ripped from http://www.dabeaz.com/generators/Generators.pdf&lt;br /&gt;    def consumer(q): &lt;br /&gt;        while True:&lt;br /&gt;            item = q.get() &lt;br /&gt;            if not item: break &lt;br /&gt;            download_pdf(item)&lt;br /&gt;&lt;br /&gt;    in_q = Queue.Queue() &lt;br /&gt;    &lt;br /&gt;    # start threads&lt;br /&gt;    ths = [threading.Thread(target=consumer,args=(in_q,)) &lt;br /&gt;                for th in xrange(nthreads)]&lt;br /&gt;    for x in ths: x.start()&lt;br /&gt;&lt;br /&gt;    # put files to download&lt;br /&gt;    for i in regs:&lt;br /&gt;        in_q.put(i)&lt;br /&gt;&lt;br /&gt;    # put end guards&lt;br /&gt;    for th in xrange(nthreads): in_q.put(None)&lt;br /&gt;&lt;br /&gt;    # wait to finish&lt;br /&gt;    for x in ths: x.join()&lt;br /&gt;&lt;/pre&gt;</description><link>http://blep.blogspot.com/2010/10/scrapper-multiproceso-en-python.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1857144063523052830</guid><pubDate>Sun, 24 Oct 2010 19:52:00 +0000</pubDate><atom:updated>2010-10-24T22:34:27.548+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">desarrollo</category><title>El desarrollo por el desarrollo</title><description>El otro día estaba leyendo la &lt;a href=&quot;http://www.wired.com/thisdayintech/2010/10/1014cplusplus-released/all/1&quot;&gt;realmente buena entrevista&lt;/a&gt; al creador de C++, Bjarne Stroustrup. No es el tema de este post, pero me ha parecido una entrevista de las que merece la pena repasar de vez en cuando, igual que el &lt;a href=&quot;http://www.youtube.com/watch?v=D1R-jKKp3NA&quot;&gt;famoso discurso de Steve Jobs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Creo que no podría estar más de acuerdo con lo que dice este hombre y suscribiría cada una de las frases, pero hay una que últimamente me da que pensar. En el último párrafo de la entrevista:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Know some non-computer field of study well — math, biology, history, optics, whatever&lt;/span&gt;. Learn to communicate effectively in speech and in writing. Spend an unreasonable amount of time on some difficult topic to really master it. Try to do something that might make a difference in the world.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Y es que en mi últimamente-más-activa faceta de comercial me he dado cuenta como hablando con gente de otros ámbitos, en concreto del agrícola, tienen una serie de problemas que como programador de corazón que soy pienso: &quot;Si este señor supiese programar un mínimo haría maravillas&quot;.&lt;br /&gt;&lt;br /&gt;Me considero un privilegiado por tener conocimientos de un área muy diferente al de la programación y creo que es fundamental que el desarrollador tenga esos conocimientos. &lt;span style=&quot;font-weight:bold;&quot;&gt;No pasa un día sin que vea a un desarrollador trabajando en cosas que no van a resolver ningún problema&lt;/span&gt; y casi siempre es porque no tienen la visión de la persona que tiene ese problema (o directamente porque no hay problema :). Además NO creo demasiado en el consultor que va al cliente, éste le explica su problema y le surge la solución mágica para su problema, siempre he creído que la solución correcta surge del verdadero entendimiento de la materia y eso solo pasa cuando estás a pie del cañón.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Además, no creo que haya cosa más reconfortante para un desarrollador es ver como algo que ha creado él se use para solucionar un problema.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://blep.blogspot.com/2010/10/el-desarrollo-por-el-desarrollo.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-296636596932015038</guid><pubDate>Tue, 21 Sep 2010 15:15:00 +0000</pubDate><atom:updated>2010-09-21T18:05:03.042+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><title>empezando a correr</title><description>Hace casi 4 meses mi fuerza de voluntad me retó y decidí empezar a hacer algo de deporte, no mucho, los excesos son malísimos, ya sabes. Decidí entonces empezar a correr, por suerte vivo en un pueblo y me permite salir fácilmente. Las razones que me impulsaron fueron varias:&lt;br /&gt;&lt;br /&gt;- atrofiamiento absoluto. Años de estar sentado pasan factura y cuando al entrar y salir del coche haces el mismo sonido que un tío de 80 tacos algo en tu interior te dice que la cosa no está bien. Además estoy operado de corazón y quizás tenga que cuidar un poco estás cosas.&lt;br /&gt;&lt;br /&gt;- pérdida de peso. Viene al hilo de lo anterior, si no te mueves y no cuidas bien lo que comes engordas (las matemáticas aquí funcionan muy bien :)&lt;br /&gt;&lt;br /&gt;- tener una forma de distraerme: Últimamente he pasado demasiadas horas delante del monitor y no solo afecta físicamente. Siempre he escuchado que hacer deporte es una forma de desconectar muy buena.&lt;br /&gt;&lt;br /&gt;- tenía un festejo familiar y tenía que meterme el traje de hace unos años. Esta no es la importante, pero si eres más agarrao que un chotis no es agradable comprarte un traje nuevo :).&lt;br /&gt;&lt;br /&gt;Si estás pensando en empezar a hacer deporte te dejo algunos consejos que a mi me han ayudado:&lt;br /&gt;&lt;br /&gt;- Ten cuidado, empieza poco a poco. Al comienzo de empezar a correr creo que me han dolido todas las articulaciones. Yo seguí, parcialmente el &lt;a href=&quot;http://www.coolrunning.com/engine/2/2_3/181.shtml&quot;&gt;couch to 5k&lt;/a&gt;, no sé si será bueno o no, pero por lo menos propone un plan a seguir y parece razonable en cuanto a metas.&lt;br /&gt;- Usa un buen calzado. De ir con unas zapatillas normales a unas en condiciones no hay color. Es de perogrullo, pero yo tardé en darme cuenta.&lt;br /&gt;- Si eres un friki te puede amenizar el uso de alguna aplicación GPS que haga tracking de lo que haces (yo uso &lt;a href=&quot;http://www.handyrunner.com/&quot;&gt;handy runner&lt;/a&gt; para android), usar un pulsómetro o cualquier otro elemento que te pueda dar números que analizar y comparar. &lt;br /&gt;- Márcate alguna meta, por ejemplo correr todos los días la misma distancia o incrementar la distancia en X metros todos los días.&lt;br /&gt;&lt;br /&gt;Después de 4 meses puedo hacer un análisis de los pro/cons:&lt;br /&gt;&lt;br /&gt;- He conseguido que sea un hábito, me hace sentir mejor tanto física como mentalmente. Yo era de los que pensaba que la gente que salía a correr estaba loca, ahora les entiendo.&lt;br /&gt;- Cuando empecé era imposible correr más de 1 minuto seguido y cuando llevaba 3km de camino estaba para el arrastre. Ahora puedo correr 7km a menos de 6 minutos por kilómetro sin problema, esto es con pulsaciones dentro de un margen razonable y sin sensación subjetiva de estar destrozado.&lt;br /&gt;- Resulta que mucha gente que está a mi alrededor corre (y no lo sabía) y tengo un tema de conversación, además de que puedes salir juntos a correr.&lt;br /&gt;- A medida que va pasando el tiempo ves como mejora tu forma, aunque es un proceso lento y a veces piensas que no está funcionando. De hecho durante los dos primeros meses pensaba: &quot;cómo es posible que nadie diga que esto es sano&quot;&lt;br /&gt;- Entre las cosas malas han estado los momentos en los que me pasaba un poco y me dolían todas las articulaciones, pies, espalda... a menudo no desconecto y voy pensando cosas del trabajo mientras corro.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;En resumen, es una meta no muy complicada de cumplir (no te quita más que una hora el día que sales a correr), que te hace sentir mejor y que para gente con una vida muy sedentaria, como es la de un programador, viene de perlas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si tienes algún consejo será bien recibido :) y si quieres quedar para echar unas carreras también :P.</description><link>http://blep.blogspot.com/2010/09/empezando-correr.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1010273940038766300</guid><pubDate>Thu, 26 Aug 2010 16:49:00 +0000</pubDate><atom:updated>2010-08-26T19:54:21.893+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">trabajo</category><category domain="http://www.blogger.com/atom/ns#">tristeza</category><title>Oferta de trabajo made in spain</title><description>No sé si es una cuestión solo de las empresas Españolas, no sé si es que en España las ofertas de trabajo sirven para más bien poco o qué, pero por lo general son un despropósito, llenas de sin sentidos,etc. Voy a dar mi punto de vista sobre como debería una empresa poner una oferta de trabajo si realmente quiere encontrar alguien de calidad (a partir de este punto la mitad de las empresas españolas habrán dejando de leer) o si símplemente no quieres hacer el ridículo:&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Nunca nunca dejes redactar una oferta técnica a una persona de RRHH&lt;/span&gt;. Por lo general no saben nada de tecnología y tienden a poner miles de siglas, muchas veces no tienen relación y dejan al descubierto que no sabes ni lo que haces.&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;No digas que eres una &quot;empresa lider del sector&quot;&lt;/span&gt;. Si lo eres ya lo sabemos y si no lo eres también así que ahorratelo. No te preocupes, alguien de calidad va a mirar qué hace tu empresa antes de ir, así que pule el resto de la oferta para que se interesen.&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;No me digas que es una empresa jóven, dinámica e innovador&lt;/span&gt;a. Si lo eres demuestralo, ahora hay herramientas como blogs, twitter, etc, donde se ve si eres o no eres. Tampoco montes un blog, una página de facebook y un twitter para ser molón porque se ve a la legua si eres más falso que  Judas. Qué hay de malo en poner: &quot;somos una empresa tradicional y hacemos lo de toda la vida, pero lo hacemos bien y tenemos los pies en la tierra&quot;. Una vez fui a una entrevista y pregunté: &quot;y qué tal es el ambiente de trabajo, la gente se lleva bien&quot;, el entrevistador me respondió: &quot;es una relación correcta entre compañeros&quot;. Sí, aquella empresa era jóven, dinámica e innovadora.&lt;br /&gt;&lt;br /&gt;- Ahorrate todo lo de, buscamos &quot;persona responsable, autónoma, eficiente, analítica, con gran capacidad de trabajo en equipo, entusiasta, proactiva y blablbalbla&quot;&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Se claro en lo que pides&lt;/span&gt;. Si quieres un programador que haga de todo un poco, pon que quieres un programador ninja, hay programadores que son así, modo rambo, llegan y resuelven. Si quieres alguien que sepa de una tecnología concreta, ponlo así, huye del &quot;bueno, ya que estoy pongo perl, ruby, asm z80, asm 8087, JVM, dalvik, vim, emacs, turboC++, cobol, AS400 por si cuela&quot;. Claro, para eso debes saber lo que quieres. &lt;span style=&quot;font-weight:bold;&quot;&gt;Deja claras las responsabilidades.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Dí claramente lo que ofrece tu empresa y cómo se gana la vida&lt;/span&gt;, de donde saca el dinero. Si lo sacas de subvenciones, es triste lo sabemos, pero ponlo, si es capital riesgo... o incluso si de verdad ganas dinero con lo que haces (no conozco empresas de software en España con este perfil)&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Si sabes, pon cual es el valor añadido que el empleado dará a la empresa&lt;/span&gt;. Si no aporto valor añadido, esto es, no se gana dinero conmigo, tarde o temprano terminarás por encargarme trabajo sin sentido, yo me cansaré y me iré. Habremos perdido tiempo y dinero los dos, así que piensalo bien. Deja ver además lo que puede aprender el empleado en tu empresa.&lt;br /&gt;&lt;br /&gt;- Parece una obviedad: deja claro dónde es el trabajo, qué tipo de horario, si se puede trabajar en remoto, rango salarial, y en general toda la lógistica. Somos mayorcitos como para andar perdiendo el tiempo.&lt;br /&gt;&lt;br /&gt;- Usa algo diferente, por ejemplo, dropbox hace cosas como &lt;a href=&quot;http://www.dropbox.com/jobs/challenges&quot;&gt;esta&lt;/a&gt; y en algunas ofertas suyas he visto como mandan resolver un problema de programación que más o menos cualquier programador con cierta experiencia sabe resolver. Con esto demuestras que sabes (para poner un problema hay que conocer bien la materia) y sabes que el que envía el CV está realmente interesado y algo de su forma de trabajo. Pide por ejemplo su cuenta en github, trabajos anteriores, o no pidas el currículum (leer el footer de esta &lt;a href=&quot;http://jobs.linkingpaths.com/&quot;&gt;oferta de trabajo de linkingpaths&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;En resumen, sé claro, sincero y si no tienes ni idea intenta que no se note mucho.</description><link>http://blep.blogspot.com/2010/08/oferta-de-trabajo-made-in-spain.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>29</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-8982696308659075319</guid><pubDate>Wed, 28 Jul 2010 11:40:00 +0000</pubDate><atom:updated>2010-07-28T13:57:25.589+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">clientes</category><title>El soporte y atención al usuario</title><description>Si hay una cosa que fideliza, que agrada al consumidor es la buena atención al cliente. Aunque tu producto no sea el mejor, si tienes una buena atención terminas enamorando. He escuchado mil veces lo típico de &quot;fui a XXXXXX, no era de lo mejor, pero me han tratado estupendamente&quot; o &quot;he comprado XXXXX se me estropeó, pero en 1 día me lo han enviado reparado&quot;.&lt;br /&gt;&lt;br /&gt;Y si es tan fácil tener al una persona contenta, por qué las operadoras, por poner un ejemplo, son el claro ejemplo de la mala atención al cliente?. Que tire la primera piedra el que nunca se haya quejado de su ADSL, su factura de móvil que han tardado lustros en solucionar. &lt;span style=&quot;font-weight:bold;&quot;&gt;La respuesta es que NO es tan fácil&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para tener una buena atención al cliente hay que tener gente que sepa darla, así de claro, así de fácil y así de difícil a su vez. Por un lado el cliente debe tener claro donde acudir, debe haber alguien que le atienda (y NO acepto una máquina como alguien), que sepa escucharle y que además sepa que hacer. Esto es, alguien que:&lt;br /&gt;&lt;br /&gt;- sepa de lo que está hablando, no una persona que sigue un guión de preguntas, &lt;br /&gt;- que sepa a quien acudir en caso de tal o cual problema&lt;br /&gt;- que sepa resolver los principales problemas él solito, &lt;br /&gt;- que se encargue de ese problema, tanto de estar pendiente del cliente como de que ese problema llegue a quien tiene que llegar para que se resuelva para que en la medida de lo posible no vuelva a pasar. A veces aunque no te resuelvan el problema, si ves que están pendientes de él el cabreo ese que te envenena se va. Un simple SMS con &quot;Hola Javi, estamos trabajando en tu problema con la conexión ADSL. Te llamamos cuando sepamos algo. Fdo: Perico&quot;.&lt;br /&gt;&lt;br /&gt;Pero no, tener a gente formada y preparada exige tiempo y dinero, y es mucho más fácil ir al país más desfavorecido que hable tu idioma y poner a los que menos cobren a trabajar sin ningún tipo de formación, sin saber de lo que hablan.&lt;br /&gt;&lt;br /&gt;La próxima vez que vayas a comprar algo, no solo pienses en lo que compres, piensa en qué hay detrás de ese coste.&lt;br /&gt;&lt;br /&gt;Y por último, hay una cosa en lo que creo que muchas empresas deberían espabilar y es en ser transparentes, no solo con qué hacen y cómo (hasta cierto punto) si no como tratan al cliente con sus problemas.</description><link>http://blep.blogspot.com/2010/07/el-soporte-y-atencion-al-usuario.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1113259212501462592</guid><pubDate>Sun, 11 Jul 2010 16:12:00 +0000</pubDate><atom:updated>2010-07-11T18:31:20.620+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>testing y deploy con python</title><description>La pasada semana hicimos una ronda de &lt;a href=&quot;http://en.wikipedia.org/wiki/Lightning_Talk&quot;&gt;lightning talks &lt;/a&gt; con el objectivo de introducir a los compañeros de la empresa en tecnologías que no habían usado hasta ahora. Además sirvieron para hacer un poco de team building y romper un poco el hielo, cosa importante en un equipo _muy_ distribuído. Lo empecé a ver a la gente de &lt;a href=&quot;http://vimeo.com/channels/aspgems&quot;&gt;aspgems&lt;/a&gt; y me pareció interesante.&lt;br /&gt;&lt;br /&gt;Por mi parte hice un par de charlas que puede que resulten interesantes:&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://javisantana.com/python/testing/&quot;&gt;Introducción al testing con python y django&lt;/a&gt; (&lt;a href=&quot;http://javisantana.com/python/testing/presentation.pdf&quot;&gt;pdf&lt;/a&gt;). Repasa conceptos muy básicos del testing y trata de explicar como testear una aplicación en django. Es muy muy básico, pero puede servir de ayuda si no estás familiarizado.&lt;br /&gt;&lt;br /&gt;- &lt;a href=&quot;http://javisantana.com/python/deploy/&quot;&gt;Introducción a fabric&lt;/a&gt; (&lt;a href=&quot;http://javisantana.com/python/deploy/presentation.pdf&quot;&gt;pdf&lt;/a&gt;). Fabric es una herramienta para facilitar la automatización de los &quot;deploys&quot;. Es similar a capistrano en ruby o ant (salvando las distancias) en java.&lt;br /&gt;&lt;br /&gt;Como curiosidad las transparencias están creadas con una aplicación llamada &lt;a href=&quot;http://github.com/adamzap/landslide&quot;&gt;landslide&lt;/a&gt;, que transforma sintáxis markdown a una presentación HTML5 o PDF. Muy simple de usar y fácilmente &quot;maqueable&quot;.&lt;br /&gt;&lt;br /&gt;Me gusta mucho dar charlas de este tipo -a pesar de mi nula capcidad comunicativa- y creo que dice mucho el que un equipo de desarrollo monte charlas de este tipo para estar al día. A ver si mis compañeros se animan a subir las suyas.</description><link>http://blep.blogspot.com/2010/07/testing-y-deploy-con-python.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-1796018897594592365</guid><pubDate>Fri, 09 Jul 2010 15:52:00 +0000</pubDate><atom:updated>2010-07-09T18:28:09.558+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">profesional</category><title>Una semana como gestor de proyecto</title><description>Primero de todo decir que no soy ni jefe de proyecto ni nada que se le acerque. La palabra jefe, gestor, responsable se usa con demasiada soltura, ser un gestor competente es muy difícil y requiere mucho tiempo, exactamente igual que ser bueno en otros ámbitos más un toque de sensibilidad con el prójimo.&lt;br /&gt;&lt;br /&gt;En España los títulos de gestión (jefe de proyecto, jefe de sección, gestor de blabla) se usan como complemento a los absurdos salarios, &quot;fulanito, vas a ser responsable jefe del proyecto amoeba-ultra-2.0, vas a llevar toda la gestión, sabemos que podemos confiar en ti, blablabla...&quot;, pero realmente no responden a una experiencia por parte de la persona que está en ese puesto, en la mayoría de los casos (*).&lt;br /&gt;&lt;br /&gt;Nuestro &lt;a href=&quot;http://twitter.com/flopezluis&quot;&gt;scrum manager de cabecera&lt;/a&gt; en la empresa estaba de vacaciones, así que decidí tratar de hacer un sprint como mandan los canones de scrum, bueno, realmente como yo lo aprendí de &lt;a href=&quot;http://agilizandocmmi.wordpress.com/&quot;&gt;@jmnavarro&lt;/a&gt; en mi estancia en unkasoft, con su reunión con cliente, elección de tareas del backlog, estimación, su avance, su burndown chart y finalmente la retrospectiva.&lt;br /&gt;&lt;br /&gt;Decir que el desarrollo fue bien, se terminó en plazo, con calidad más que suficiente, pero eso no le interesa a nadie, aquí lo interesante es ver en donde metí la pata hasta el fondo, ¿no?:&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Puñetazos encima de la mesa&lt;/span&gt;: He tomado elecciones en base a mi experiencia por encima de las decisiones de mis compañeros, lo cual puede estar bien, pero no deja de ser un error. No dejar elegir su camino a tus compañeros es un grave error, aunque sepas sí o sí que hay formas mejores de hacer las cosas. Si la idea es formar un equipo de desarrollo a un buen nivel todo el mundo debe aprender y la mejor forma de aprender es afrontando problemas tú solito.&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Meterme en las tareas de mis compañeros&lt;/span&gt;: En un momento puntual decidí terminar a machete una tarea de un compañero (además de gestor, programo, ¿te suena?) ya que estaba bloqueando el desarrollo. Desde el punto de vista del proyecto es lógico hacerlo, pero no me paré a pensar que mi compañero se podría sentir ofendido, dolido por haber terminado algo en lo que estaba trabajando. Mil veces prefiero llegar tarde un sprint a tener un roce absurdo.&lt;br /&gt;&lt;br /&gt;- &lt;span style=&quot;font-weight:bold;&quot;&gt;Notificar los errores&lt;/span&gt;: no hay cosa más difícil que decir a alguien que la ha mangado. Y no quiero decir hacerlo sin que se sienta ofendido. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;En resumen, si no tienes un poco de tacto, mano izquieda, inteligencia emocional, como lo quieras llamar, es mejor que te quedes como un buen técnico.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;No hay nada mejor que las curas de humildad que la vida te da de gratis y que la memoria te recuerde los malos ratos que hiciste pasar a algún que otro gestor de forma innecesaria, mis disculpas atradas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(*) En mi corta-pero-intensa vida laboral solo recuerdo a un par de personas haber estado a la altura de un puesto así, y cada día que pasa me acuerdo más de &lt;a href=&quot;http://twitter.com/jmnavarro&quot;&gt;alguno de ellos&lt;/a&gt; :)</description><link>http://blep.blogspot.com/2010/07/una-semana-como-gestor-de-proyecto.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-8416597907236209883</guid><pubDate>Mon, 28 Jun 2010 21:44:00 +0000</pubDate><atom:updated>2010-06-29T00:17:06.984+02:00</atom:updated><title>Necesitamos buenos técnicos</title><description>Para empezar, una frase:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Más hacer y menos hablar&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;es un ejemplo que define muy bien lo que está pasando ahora mismo. Nos hemos hartado de montar castillos sobre las nubes y cuando ya no podíamos llegar más algo nos la hemos pegado. &lt;br /&gt;&lt;br /&gt;Estamos en un punto en el que una persona hace 1 año sin apenas saber sumar podía comprar una vivienda y sacarla un 30% sin despeinarse o que nos vendan la leche por que tiene &lt;a href=&quot;http://www.lechepascual.es/c02_prod.aspx?ID=2&quot;&gt;calcio &quot;de leche&quot;&lt;/a&gt; -esta misma noche he visto un anuncio de pascual en TV, se habrán parado a verlo, alejandose unos metros de la pantalla, los creadores?-&lt;br /&gt;&lt;br /&gt;Estoy hasta las narices de humo, quiero que cuando vaya al taller con mi coche venga un técnico y que sin pensar sepa lo que es ese ruido que apenas se escucha, y me da igual que el taller cumpla la norma de turno, quiero que cuando vaya al médico éste tenga los huevos pelados de tratar con pacientes, que sepa que me pasa o como mínimo que tenga recursos para saber qué hacer, quiero que cuando llame al banco a preguntar no me insten a hablar con &quot;fulanito de tal&quot; que es el que &quot;lleva estas cosas&quot;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Quiero que haya gente que sepa, gente preparada, que sepa hacer, que me solucione, que me aporte&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Pero claro, para hacer todo eso necesitamos muchos años de preparación -sí, de esas cosas que nunca valen para nada en la universidad-, mucha experiencia, dedicación, gusto por hacer las cosas bien... y una recompensa (social, económica, del tipo que sea), pero para que me voy yo a esforzar si puedo pasar de #ponga aquí su puesto vendehumista de moda# una temporada y eso de escornarse no está bien visto -menudo pringao que diría aquel-&lt;br /&gt;&lt;br /&gt;Cada vez que veo a alguien haciendo bien su trabajo me resulta imposible no soltarle un &quot;da gusto pagar cuando la gente hace las cosas bien&quot;</description><link>http://blep.blogspot.com/2010/06/necesitamos-buenos-tecnicos.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-2914711400514435793</guid><pubDate>Thu, 24 Jun 2010 17:49:00 +0000</pubDate><atom:updated>2010-06-24T20:38:48.711+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programación</category><title>Razones para NO usar un IDE</title><description>Un IDE, con permiso de la &lt;a href=&quot;http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&quot;&gt;definición en la wikipedia&lt;/a&gt;, no deja de ser un editor de texto y una serie de utilidades que facilitan el trabajo de desarrollo, tales como configuración de los parámetros del compilador, debugger, ayuda en la sintáxis, documentación del lenguaje, etc.&lt;br /&gt;&lt;br /&gt;Hace ya cosa de un par de años que no uso un IDE, bueno, uso vim como &quot;IDE&quot; y las razones son las siguientes:&lt;br /&gt;&lt;br /&gt;- Me obliga normalmente a usar el editor que el IDE quiere. Con vim uso siempre, para editar lo que edite, las mismas combinaciones de teclas, misma configuración y en todas las máquinas en las que trabajo solo con llevarme el .vimrc&lt;br /&gt;&lt;br /&gt;- Tiende a añadir complejidad. Los makefiles que se generan, los wizards de código, etc tienden a añadir mucho código que realmente no sabes como funciona y que es difícil de modificar. &lt;br /&gt;&lt;br /&gt;- La ayuda con la sintáxis o el autocomplete. Aunque pueda parecer una maravilla me parece uno de los inventos más perversos. Usé eclipse durante más de un año y medio con java y un día intenté hacer un pequeño programa en el editor de texto y compilarlo con javac... fue imposible, no recordaba nada, cual eran los imports que debía hacer (eclipse lo hace como mágia), nombres de clases, excepciones que debía capturar...&lt;br /&gt;&lt;br /&gt;- Trabajo en máquinas remotas. Muchas veces tienes que editar ficheros o incluso programar en una máquina que solo tienes acceso ssh. Usando vim es transparente el estar en tu máquina o en otra por ssh.&lt;br /&gt;&lt;br /&gt;- Si no lo usas aprendes a manejar las cosas que pasan por debajo. Cuántos habrá que no sepan crear un .jar sin eclipse, como se especifica a gcc una librería o el path donde encontrar las cabeceras... sin contar aquellos que se sorprenden cuando puedes hacer todas esas cosas que hace el IDE pero sin el IDE. Si sabes como crear un .jar puedes estar tranquilo que con el IDE sabrás hacerlo igual de bien.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sé que todo esto que digo suena a programador masoca, pero si de verdad quieres conocer lo que estás haciendo con detalle debes conocer lo que hay por debajo.&lt;br /&gt;&lt;br /&gt;Bien es cierto que hay cosas muy útiles, por ejemplo la documentación siempre a mano, pero qué tiene eso que no tenga un man o un pydoc en la consola, una búsqueda en todo el proyecto, aunque no la cambio un &lt;a href=&quot;http://betterthangrep.com/&quot;&gt;ack-grep&lt;/a&gt;... lo único para lo que no he encontrado algo tan potente como eclipse es para las refactorizaciones... pero los buenos programadores nunca nos confundimos :P</description><link>http://blep.blogspot.com/2010/06/razones-para-no-usar-un-ide.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5644592.post-7850349059997587127</guid><pubDate>Wed, 09 Jun 2010 18:59:00 +0000</pubDate><atom:updated>2010-06-09T21:05:48.508+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programacion</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>Testing con datetime en python</title><description>Este es un pequeño &quot;truco&quot; para testear métodos o funciones que usen &lt;a href=&quot;http://docs.python.org/library/datetime.html&quot;&gt;datetime.now&lt;/a&gt;. Se podrían usar trucos aprovechando que python es un lenguaje muy dinámico, pero siempre que se pueda hacer explícito y simple, para qué complicarnos?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def method(param1, param2, now=None): &lt;br /&gt;    now = now or datetime.now()&lt;br /&gt;    # do something with now&lt;br /&gt;    pass&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En el uso normal la llamaremos normalmente, pero en el test podremos pasarle un datetime concreto para testear.</description><link>http://blep.blogspot.com/2010/06/testing-con-datetime-en-python.html</link><author>noreply@blogger.com (Javi Santana)</author><thr:total>1</thr:total></item></channel></rss>