Escuela De Codigo
2012: Los deseos de un programador
Diciembre 31st, 2011 - [Enlace local]
Trillado, repetido, aburrido, ya esta visto, llamenlo como quieran pero, es una tradición en casi cualquier lugar del mundo que el ultimo momento del año las personas hacen una serie de compromisos consigo mismos sobre las cosas que haran el año que recién empieza, algunos prometen bajar de peso, otros iniciar nuevos estudios, algunos mas terminar los que ya tienen empezados, una infinidad de cosas que nos prometemos con el sincero deseo de cumplirlo en el transcurso del año, aunque no siempre lo logremos. Los desarrolladores/programadores aunque por momentos parecemos seres muy alejados del promedio, despues de todo no lo somos tanto, así que por eso estoy aca escribiendo algunas cosas que debemos comprometernos a cumplir en este 2012.
1. Aprende un nuevo lenguaje de programación o framework
Todo evoluciona, todo cambia, cada día surgen nuevas tecnologías, nuevas formas de hacer las cosas, nuevas herramientas para facilitar la vida de quienes las usen y sobre todo para agilizar y hacer mas productivo su trabajo. No podemos quedar fuera de ese grupo de personas, no te puedes dar el lujo de quedar con conocimientos defasados cuando alguien mas no lo hace. Este nuevo año tu primera meta debe ser aprender un nuevo lenguaje de programacion o framework, expande tus conocimientos, evoluciona tu también. ¿No sabes cual aprender? Aquí tengo unas sugerencias para ti.
2. Conviértete en un superheroe en lo que haces!
¿Programas en Java? Vuelvete un ninja en Java. ¿Tu fuerte es PHP? Conviertete en un maestro en PHP. ¿Recien empiezas con Javascript? No importa el camino de la perfeccion es largo pero, entre mas rapido lo empieces mejor. Segunda meta para este año: Ser mejor en lo que ya sabes. No basta conocer un lenguaje y/o framework, debes conocerlo a plenitud, aprender todos los trucos que guarda bajo la manga, aprender como se hacen mejor las cosas.
3. Se social
Se que te gusta pasar frente a tu computadora escupiendo codigo como si no existiera el mañana, te fascina, es tu trabajo y lo amas. Pero, si quieres crecer como desarrollador y profesional no puedes permanecer aislado del mundo como un completo desconocido. Tienes que salir, socializar con las personas, tanto en la red como en la realidad. Tercera meta para año nuevo: Se mas participativo en las actividades de tu gremio. Ve a conferencias, talleres, presentaciones, cualquier actividad relacionada a tu profesión donde puedas aprender algo nuevo ahí tienes que estar. Y en el ámbito virtual, involucrate mas en las comunidades de los lenguajes o herramientas que utilizas. Ve a los foros, participa, ayuda.
4. Enseña a otros lo que sabes
Eres bueno en lo que haces, tu lo sabes, tu jefe tal vez lo sabe….¿Quien mas lo sabe? ¿Nadie? ¿Como vamos a conocer lo bueno que eres en algo, sino lo demuestras? Eso se soluciona fácilmente, enseña a los demas lo que sabes pero, no hablo de una presentación donde alimentas tu ego con la admiracion de los oyentes, sino que me refiero a una verdadera tarea didáctica, crea un blog, escribe tutoriales, publica tu código. Se el maestro. Alguien mas te agradecera que te tomes el tiempo de querer enseñar lo que sabes.
5. Construye algo propio
Un mercenario es un soldado sin ejercito, lucha guerras ajenas, pelea solo por una motivación: el dinero. Y trabaja para el mejor postor. Los desarrolladores nos parecemos en mucho a los mercenarios, porque andamos creando las aplicaciones de los demas, peleamos sus guerras, y siempre buscamos al que nos pague mejor. ¿Y eso esta mal? Pues la verdad que no, hay que ganarnos el pan de cada día ¿no? pero, de vez en cuando tenemos que despojarnos de ese rol, y pelear nuestras propias batallas, luchar por algo mas que el dinero, debemos trabajar en nuestros propios proyectos, en nuestras aplicaciones, en nuestros sueños. Así que como meta para este nuevo año, no te olvides de trabajar en algo propio, en algo en lo que tu seas dueño y señor de cada decisión. Yo ya empece con un pequeño side project : NubeMensajera.
Este año 2012 puede ser tan bueno, productivo y fantastico como asi tu lo desees. Aprovecha al maximo tu tiempo, haciendote un mejor desarrollador, sin olvidar claro lo mas importante de la vida: las personas que amas y te aman.
Feliz año nuevo, nos leeremos este 2012 con mas y mejores artículos. Porque una de mis metas mas personales es convertir a Escuela de Código,en un sitio donde aprendas a ser un mejor programador.
» Leer más, comentarios, etc...
Cuaderno de software
Pair programming
Diciembre 31st, 2011 - [Enlace local]
¿Dos personas en un mismo ordenador? ¿Pero eso no les hará ir más lento? ¿Pero eso no hace el desarrollo el doble de caro? A veces podemos responder a esto hablando de que programar en pareja es divertido o que es una buena forma compartir conocimiento, cosa que es cierta pero… ¿hace más caro el desarrollo o no?
Efectivamente, NO lo hace más caro. Porque teclear no es el cuello de botella. ¿Cuál es el cuello de botella? ¿Qué es lo que me ralentiza a la hora de desarrollar una nueva funcionalidad para cierta base de código?
De dónde viene la lentitud a la hora de desarrollar software:
- código poco expresivo difícil de entender
- diseño no simple (complicado) y difícil de entender
- desconocimiento del dominio (esto lo hizo otro y no sé de qué va)
- cambiar cosas y tener que volver a probarlo todo a manubrio (o no hacerlo y provocar nuevos fallos)
Son éstas cosas las que hacen que, cuando quiero cambiar algo para añadir una nueva funcionalidad a mi aplicación cada vez me cueste más. Al principio voy rápido porque hay poco código y con un diseño cualquiera me vale. Pero cada vez me cuesta más añadir nuevas funcionalidades porque, además, no sé loque estoy rompiendo.
El pairing, combinado con otras técnicas como TDD y el resto de reglas XP, ayuda a defender el diseño simple de la aplicación durante todo su desarrollo.
Pero para que el pair programming resulte realmente eficaz hay que estar muy atento a cómo se utiliza. Sino, puede resultar realmente caro:
- dos teclados y dos ratones (¡incluso dos pantallas!), dos sillas y la pantalla en medio. Hay que estar cómodo.
- máxima intensidad: pomodoros, y un objetivo (troceado en un pequeño log de la sesión de pairing)
- máxima concentración: el que no escribe debe mantener la atención muy activa, por ejemplo llevando el log y aportando ideas todo el rato. Sino: ping pong.
- si un problema que nadie sabe resolver interrumpe la dinámica –> es mejor DEJAR DE PAIREAR y buscar la solución.
Hay que aprender a cuando hacer pairing y cuando no. Por ejemplo, nunca diseñes sólo:
- cuando hagas un walking skeleton
- cuando diseñes unas CRC Cards
- cuando estés refactorizando
Algunas malas costumbres:
- acceso poco equitativo a teclado o pantalla / dominio de una persona del teclado
- matrimonios: parejas que nunca cambian
- uno trabaja el otro descansa
- dos ordenadores
- cada uno hace “su propio trabajo”
- los debates duran más de diez minutos sin escribir código nuevo
Algunos buenos hábitos:
- descansar
- ser humilde y receptivo
- comunicarte y escuchar
- defender tu visión y saber ceder
Un par de links:
- Una crítica bien argumentada contra el pair programming
- Pair programming remoto con saros
- Es curioso: lo primero que se comparte al hacer pair programming con atajos de teclado…
» Leer más, comentarios, etc...
Cuaderno de software
Comunidades profesionales
Diciembre 31st, 2011 - [Enlace local]
A continuación dejo una pequeña presentación en formato Pecha Kucha que tuvimos la suerte de hacer el equipo programaníaco para la Pecha Kucha Night de Donostia.
Incluso nos grabaron en video. Así que podéis echaros unas risas con nuestro baile de micrófonos…
» Leer más, comentarios, etc...
Cuaderno de software
Recursos para dojos, katayunos y demás hierbas
Diciembre 30th, 2011 - [Enlace local]
Publico aquí la lista que tengo apuntada de sesiones que se pueden hacer cuando se organiza un dojo/retreat/katayuno o evento similar. Mi idea es ir editando la lista e ir añadiendo sesiones que vayamos encontrando por ahí. ¡Si conoces alguna que no esté en la lista coméntamelo y lo añado!
- http://12meses12katas.com/
- http://legacycoderetreat.typepad.com/blog/2011/11/how-i-run-legacy-code-retreat.html
- lean code
- Refactoring golf
- Tic tac toe kata
- Rock scissors paper
- http://coderetreat.com/facilitation.html
- http://refactoringpattersstepbystep.blogspot.com/2011/09/kata-refactoring.html
- Object Calisthenics
- TDD as if you meant it
» Leer más, comentarios, etc...
Cuaderno de software
Un popurrí de ideas agile
Diciembre 30th, 2011 - [Enlace local]
Y ahora una serie de apuntes que no quería borrar sin publicar pero que no me dan para un articulillo.
Craftsmanship manifiesto: versión no excluyente
¡Quitas la palabra software y ya sirve para todo el mundo!
- Not only working products, but also well-crafted products
- Not only responding to change, but also steadily adding value
- Not only individuals and interactions, but also a community of professionals
- Not only customer collaboration, but also productive partnerships
¿Para cuando un evento de artesanos de cualquier profesión?
No existe mal pero rápido
Lo que haces mal, no lo acabas realmente porque siempre te viene de vuelta. Existe hacerlo mal. Hacerlo bien y lento. Y hacerlo bien y rápido. Cuando adoptas agile o XP hay un momento en el que pasas de hacerlo mal, a hacerlo bien y lento. Tienes una sensación de ir más despacio porque antes lo hacías “mal pero rápido”. Es falso: lo hacías mal y punto.
El waterfall es lo que mola
No se puede defender que no mola analizar > diseñar > implementar > probar. No tener el alcance definido, adaptarte contínuamente y no ser capaz de hacer planes más allá de dos semanas no mola. Lo que pasa es que es el ÚNICO camino posible. A veces para defender agile frente a waterfall hablamos del desarrollo en cascada como si no fuera algo deseable. Es algo deseable. Lo que pasa es que no es posible. Eso es lo que hay que explicar…
» Leer más, comentarios, etc...
Koalite's blog
Resumen 2011
Diciembre 30th, 2011 - [Enlace local]
Lo sé, este post sobra, pero dadas las fechas que son y los mil refritos que hay en blogs, televisión y periódicos, no he podido resistirme.
Con éste, he publicado 50 posts, lo que no está mal teniendo en cuenta que empecé con el blog a finales de Julio y mi objetivo inicial era publicar un post a la semana. Al final han acabado siendo dos y, de momento, me siento cómodo con esa frecuencia de posteo.
Los posts más leídos han sido:
- La otra podredumbre del software
- El tutorial de node.js + express + jquery
- ¿Se puede hacer DDD sin un experto de dominio?
En esa lista no ha entrado mi serie favorita, la de los tipos de repositorio, aunque ha tenido también un número de visitas considerable (siempre teniendo en cuenta las cifras que maneja este blog, claro está).
Por el camino he aprendido unas cuantas cosas. Algunas han sido puramente de desarrollo, como mis andanzas con javascript, pero otras tienen más que ver con la propia gestión del blog, la configuración de wordpress, el seguimiento con Google Analytics o las redes de blog sobre programación en castellano.
La inclusión de este blog en Planeta Código supuso un incremento considerable tanto en visitas como en alcance (sea lo que sea eso que mide Feedburner).
Mi intención es continuar con este proyecto durante el 2012, al menos hasta que se acabe el mundo y seguir aprendiendo y pasándomelo bien.
¡Feliz 2012 a todos!
No hay posts relacionados.
» Leer más, comentarios, etc...
Najaraba.com: Software libre, metodologías ágiles y más.
Pequeña recopilación por el 7º
Diciembre 29th, 2011 - [Enlace local]
El 29 de Diciembre de 2004 inauguraba este blog, hace ya 7 añazos. Es una edad importante, debería estar en Primaria, controlando ya las sumas, restas hasta con llevadas... y yo aquí, de tantas cosas que tengo en la cabeza, no sé ni que planes contaros para el próximo año. Así que he hecho una pequeña recopilación de mis posts que más me marcaron de todos estos años (emocionalmente hablando, en
» Leer más, comentarios, etc...
Cuaderno de software
Retrospectiva 2011
Diciembre 29th, 2011 - [Enlace local]
Me gusta mucho la idea de escribir un post de retrospectiva del año y unos propósitos de año nuevo. Máxime si el señor David Bonilla te invita a ello. Luego, al revisarlo, puede ser más o menos satisfactorio… pero desde luego ayuda a reflexionar. Revisando los del año pasado, me doy cuenta de que he evolucionado bastante, buena señal. Quizá escriba luego un post más estandar, pero no es sobre lo que me apetece escribir. Me apetece escribir sobre lo siguiente:
A principios de abril comencé a nadar. Siempre he tenido problemas de espalda. Nada que no tenga cualquiera que se pase ocho horas al día sentado en una oficina y que no sea muy deportista, excepto porque a veces se me sale el hombro por una lesión tonta que me hice en mi época de practicar defensa personal. El médico me había dicho, hacía años ya, que operar no era una solución muy buena y que lo que debía hacer era muscularme un poco.
¿Por qué no había empezado a nadar antes? Lo había intentado pero tenía que ir sólo. Y no sabía nadar muy bien así que me aburría y me hacía más daño que otra cosa. Aquí la clave es David. David ha sido nadador de competición y ha entrenado durante años seriamente. El caso es que actualmente no estaba yendo a nadar por falta de motivación y un poco de aburrimiento.
Cuando comenzamos yo apenas flotaba y me cansaba enormemente haciendo un largo de 50 metros. Empezamos haciendo 600 metros dos veces por semana. Actualmente hemos llegado a hacer 2400 metros cuatro veces por semana.
Al principio las sesiones acababan conmigo cansado pero no hecho polvo y David intacto. Él se encarga de cuidar mi esfuerzo e ir corrigiéndome poco a poco. Yo le hacía preguntas superfilosóficas sobre dar una brazada y me complicaba la vida un montón, y él me lo simplificaba: al final resultaba que mejorar mi estilo era hacer menos cosas de las que hacía, simplificando, y de practicar, practicar y practicar. Nadar es un ejercicio supertécnico y difícil que se mejora nadando, y nadando y nadando y corrigiendo, corrigiendo y corrigiendo.
Para el verano ya hacíamos más de 1000 metros unas tres veces por semana de media. Para entonces ya mi espalda era otra cosa. Todavía nadaba cargando mucho esfuerzo sobre los hombros y salía algo dolorido. Pero los resultados empezaban a notarse. Las sesiones eran más aprovechadas por David, que obtenía cada vez más beneficios de ser mi mentor.
Y entonces apareció Guillermo en escena. Guillermo es una especie de macrobestia que no deja de sorprendernos una y otra vez. Se vino a nadar con nosotros y nos anunció: después de verano adelgazaré los 25 kilos que me sobran y quiero empezar a hacer ejercicio. Guillermo empezó igual que yo: haciendo 600 metros mientras David le iba corrigiendo poco a poco. Además me tenía a mí, que le podía aportar la visión del que acababa de recorrer su mismo camino de aprendizaje.
Los meses pasaron (ésta es una elipsis narrativa para no hacer esta historia más larga) y actualmente la cosa está así: David, Guillermo y yo hacemos 2000 metros cuatro veces por semana y pronto volveremos a los 2400. Ahora nos dividimos los relevos a partes iguales, nada de que tire David todo el rato. Además, si un día uno está desmotivado, se deja llevar por la motivación del resto y punto. El otro día Guille (que, por supuesto, perdió los 25 kilos tal y como se propuso) tiró de nosotros de tal manera que apenas podíamos seguirle. Nuestros entrenamientos son ricos y variados en ejercicios. Es divertido y se pasan rápidamente. Estamos más en forma y deseando de que llegue la hora de ir a nadar para divertirnos y pasar un buen rato. Por supuesto, nuestro margen de mejora es infinito.
Me gusta mucho aprender. La manera en la que estoy aprendiendo a nadar, es la manera en la que espero aprender cualquier cosa en el futuro: buscando un mentor, practicando mucho, encontrando la manera de hacerlo divertido, añadiendo nueva gente para aprender enseñando, y haciendo que sea productivo para todas las partes.
En nuestro taller de natación ya somos tres, y creo que entre los tres ya estamos preparados para enseñar a un cuarto. Estáis invitados.
» Leer más, comentarios, etc...
Cuaderno de software
Refactoring legacy code
Diciembre 29th, 2011 - [Enlace local]
El desarrollo de software es la lucha constante del programador por mantener un diseño simple en su software mientras los requisitos aumentan, cambian o se rectifican.
Una de las técnicas más eficaces para conseguirlo es mantener un ciclo de TDD, que consiste en escribir un test, escribir el código necesario para pasar ese test, y repasar el diseño del código reestructurándolo en caso de ser necesario. A éste último paso se le conoce normalmente como refactorizar.
Se suele hablar de que hay que “refactorizar sin piedad”. Esto es, de que no hay que dejar que la deuda técnica de tu software crezca antes de eliminarla, sino que hay que eliminarla en cuanto se detecte.
La pregunta es: ¿y qué pasa cuando tenemos toneladas de código legacy que necesitamos refactorizar y los refactors no son para nada triviales?
Lo primero: ¿qué entendemos por código legacy? La definición más sencilla es la que más me gusta: código sin test.
Lo segundo: ¿estamos seguros de que necesitamos refactorizar? Para esto hay que hacerse dos preguntas más: ¿es este refactor económicamente viable para el cliente? ¿qué valor le aporta? y ¿nos hemos planteado la posibilidad de reescribir el código desde cero?
Respecto al primer punto, habrá que hacer una primera exploración de la profundidad del refactor para estimar cuantas horas nos puede llevar completarlo y por cuantas personas. Y luego habrá que ver qué recibe el cliente a cambio de ello. También vale plantearse que obtendrá el equipo de desarrollo por realizar ese refactor. Si el equipo está siendo ralentizado por código sucio, quizá limpiarlo pueda hacer que futuros desarrollos cuesten mucho menos tiempo.
Para hacer una exploración del tamaño del refactor, funciona muy bien el crearte una rama en tu control de versiones, y ponerte a usar “extract method” como si no hubiera un mañana sin cubrir previamente de test. Al convertir todo en métodos pequeños, en seguida aflora tanto el Feature Envy como el Primitive Obsession. De ahí pueden salirte muchas clases nuevas, cada una con responsabilidades mucho más acotadas y hacerte una idea de qué hacía ese trozo de software realmente. Puedes descartar todos los cambios y borrar la rama, o reintegrar las nuevas clases creadas con la idea de utilizarlas cuando empieces el refactor de verdad.
Respecto a reescribir el código desde cero, si se trata de un código que siempre tuvo errores y que generaba failure demand me plantearía rehacerlo desde cero. Si se trata de una lógica no muy compleja y fácil de entender, también. El problema es que muchas veces estamos ante código sucio que ha sobrevivido al paso del tiempo porque al fin y al cabo cumplía con su función.
Con lo que llegados a este punto, hemos decidido que el refactor es economicamente viable tanto para el cliente como para la empresa que desarrolla el software y hemos descartado la posibilidad de reescribir el código desde cero.
Lo primero que hay que preguntarse es: ¿cómo vamos a probar el nuevo software? Porque como dice Michael Feathers en Working effectively with legacy code hay dos posibilidades: edit and pray or cover and refactor. Y el “cover” no vale con cubrir con tests unitarios, deberemos cubrir a nivel de integración y, sobre todo, funcional.
Para esto creo que es especialmente útil mantener el código anterior y el actual, y no empezar a refactorizar machacando el código existente. Dos técnicas nos pueden ayudar a esto: Feature toggles y Branch by abstraction.
Una vez que tenemos diseñada nuestra estrategia de probar para asegurarnos que todo va como debe y que el nuevo código, antes de añadir nuevas funcionalidades, va a hacer lo mismo que el viejo código, encontraremos muchos problemas a la hora de poder probar el código. La mayoría de problemas vendrán por no poder liberar al código de dependencias externas y probarlo de manera unitaria.
Una vez más Feathers nos da una serie de técnicas que describo aquí brevemente y que he agrupado libremente (sin seguir el orden del libro):
- aislar creando interfaces y luego crear doble:
- adapt parameter: que un parámetro no dependa de una implementación concreta sino de una interfaz
- extract implementer / extract interface: separar una interfaz de su implementación
- encapsulate global references: crear una clase que tenga todas las dependencias de variables globales de otra clase e inyectarsela.
- lidiar con static
- expose as static method: para poder testear un método sin instanciar la clase, hacerlo static.
- introduce instance delegator: crear un método no estático llamado por el método estático y con su lógica.
- machacar dependencia con un nuevo método:
- introduce static setter: settear una dependencia directamente.
- parametrize method: añadir un nuevo método que llame a otro existente, pero añadiendo un parametro que settee un atributo de clase.
- parametrize constructor: idem de lo anterior pero en el constructor.
- break out “method object”: una de mis técnicas preferidas. Si tienes una clase de 6000 lineas y quieres refactorizar un método de 600 lineas, saca el método a una clase nueva que no tenga nada más. Primero conseguirás ver las dependencias que tiene ese método del resto de la clase, y segundo sólo necesitarás instanciar/mockear esas dependencias para testear el método.
- subclass and override:
- extract and override method / override getter: para aislar un código y luego extender la clase para stubbearlo. Se puede usar en combinación de técnicas como replace global reference with getter. Lo mismo para factory methods.
- pull up feature / push down dependency: lo mismo pero para dependencias directas.
Por supuesto, lo ideal es leerse el libro de Michael Feathers para entender en profundidad las técnicas para romper dependencias, pero espero que publicar mis experiencias estos últimos meses con el refactoring ayude a alguien por ahí. :-)
» Leer más, comentarios, etc...
Koalite's blog
Más sobre el tutorial node.js + express + jquery
Diciembre 29th, 2011 - [Enlace local]
Cuando hace unas semanas escribí el pequeño tutorial de introducción a node.js no pensaba que se acabaría convirtiendo en uno de los posts más visitados de este blog.
Una de las cosas que hice fue dejar en el aire varios aspectos que no tuve tiempo/ganas de acabar y que resumía en el post de conclusiones y próximos pasos:
- No hemos escrito ningún test unitario (…)
- No hay ningún tipo de control sobre la sesión (…)
- No hemos tocado ninguna base de datos. (…), sería interesante probar MongoDB+mongoose (…).
- El sistema de asignación de rutas a funciones (…) es muy rudimentario. (…).
- Podíamos haber aprovechado las herramientas que brinda jQuery UI (…).
- Para la parte cliente, se podría haber usado alguna librería MVVM (…).
Pues bien, Albert Blasco ha creado un fork del código en github con unas cuantas de estas cosas y alguna más que no estaba en la lista. No dejéis de echarle un vistazo en: https://github.com/ablasco/Nodejs-Sample
Posts relacionados:
- Tutorial node.js + express + jquery (IV): Conclusiones y próximos pasos
- Tutorial node.js + express + jquery (III): Usando jQuery
- Tutorial node.js + express + jquery (I): Creando la aplicación
» Leer más, comentarios, etc...
Cuaderno de software
Walking skeleton versus Spike
Diciembre 28th, 2011 - [Enlace local]
Cuando planeamos un desarrollo siguiendo las reglas XP es importante planear los Spikes que se van a hacer y atender al Walking Skeleton. A veces, cuando se habla de ello, se confunden ambos términos, y es importante saber si se está haciendo una cosa o la otra.
Spikes
- no se desarrollan con tdd ni se atiende al diseño
- sirven para resolver cuestiones técnicas, explorar soluciones y eliminar incertidumbre
- mejoran las estimaciones y reducen el riesgo
- es bueno aplicarles un timebox para controlar el tiempo empleado y debe tener el 100% de la funcionalidad que se quiere desarrollar
Walking skeleton
- se desarrolla con, al menos, tests top-down de aceptación
- sirve para esbozar las clases que van a hacer falta, sus responsabilidades y su colaboración. Combina muy bien con las CRC-Cards.
- no es robusto y no le importan los errores (pero le importa tener una arquitectura para gestionarlos).
- buildable, deployable y testeable
- no se desarrolla funcionalidad que añada valor, o se hace a nivel muy pequeño.
» Leer más, comentarios, etc...
Variable not found
Adzure, la nube gratuita soportada por publicidad
Diciembre 28th, 2011 - [Enlace local]
Microsoft es una compañía que nos tiene acostumbrados a giros extraños en sus políticas de comercialización y distribución de productos, y está claro que la nube no iba a permanecer ajena a ellos.
Hace un par de días, ante el asombro de los presentes, Fred Swarm (cloud manager para la región EMEA) anunció la próxima apertura de Adzure, la edición gratuita del servicio Windows Azure soportada por publicidad.
Esto supone una auténtica revolución en el mundo de los servicios en la nube, que pasan del tradicional enfoque pay-per-use hacia un modelo de negocio basado en los ingresos publicitarios. Es decir, serán los anunciantes los que soportarán los costes de mantener en funcionamiento los roles e instancias de nuestras aplicaciones en la nube, la ocupación en disco, transferencia, uso de CDN, etc., sólo a cambio de que dejemos que se inserten anuncios publicitarios en determinados puntos de nuestros sistemas.
A cambio, no tendremos restricción alguna en cuanto al número de procesadores, memoria, ni ocupación de la infraestructura del gigante de Redmond. Podemos utilizar todos los recursos que necesitemos, y de hecho, se anima a que así sea: si una aplicación web debe escalar de forma brutal es porque tiene muchos visitantes… y visitantes es igual a impactos publicitarios, por lo que sería el escenario ideal para todos.
Una de las cosas más curiosas de este servicio es precisamente que la inserción de la publicidad se realizará de forma automática, los desarrolladores no tendremos que hacer nada al respecto: simplemente, los anuncios aparecerán en puntos donde la plataforma considere oportuno.
Esto es posible gracias a la nueva tecnología AdInsight®, que se encarga de analizar nuestro software una vez lo hemos desplegado en Adzure e inyectar en ellos la lógica de generación de anuncios publicitarios. Está claro que este automatismo a veces puede provocar pequeñas intrusiones como la que veis en la captura de pantalla adjunta, pero estaréis de acuerdo en que es un precio bastante razonable teniendo en cuenta el valor y potencia de la infraestructura que estamos usando de forma gratuita :-)
Según se desprende del documento de notas de la revisión, existen tres únicos puntos de inserción publicitaria automática:
- las páginas web generadas por un WebRole podrán ser modificadas de forma automática para incluirle código de script para la generación de anuncios contextuales.
- el servicio de almacenamiento blob para contenidos digitales (imágenes, html, PDF, PPTs, vídeos, etc.) podrá introducir contenidos publicitarios en el interior de estos archivos, aunque casi siempre de forma no intrusiva.
- los mails enviados y recibidos a través del servicio Adzure Mail Connector®, el motor que hay por detrás de Hotmail, también llevarán un mensaje publicitario contextualizado a la temática del mensaje.
Los anuncios se seleccionan de forma automática teniendo en cuenta la temática de la aplicación, el contexto en el que se insertan, el perfil del usuario conectado, y varios factores más. Sin embargo, en lugar de ser gestionados por la plataforma Microsoft Advertising, han preferido llegar a un acuerdo con Google e integrar la inteligencia de marketing de Adsense, bastante depurada, certera y que tantas alegrías nos da a sus usuarios.
Pero, ¿y qué ocurre con los ingresos generados por publicidad en las aplicaciones desplegadas en Adzure? Pues una nueva sorpresa: Microsoft los compartirá con los desarrolladores o propietarios del sitio en una proporción del 40% al 60% dependiendo del tráfico. Es decir, no sólo no nos costará utilizar la infraestructura de Adzure, sino que además podemos ganar dinero con ello :-)
Pues no sé qué os parecerá a ustedes, pero yo veo la idea interesantísima. Adzure permite el uso de todos los servicios de la nube de forma gratuita, lo que abre un campo enorme a pequeñas empresas y startups que necesitan disponer de la gran capacidad de la nube, pero sin incurrir en coste alguno, simplemente a cambio de permitir la inserción automática de estos anuncios publicitarios en sus servicios, lo cual en algunos escenarios no tiene por qué ser un problema grave; de hecho, Gmail lo hace y no nos quejamos demasiado ;-)
Además, el hecho de que aspectos infraestructurales como los servidores, anchos de banda, seguridad, etc., pasen de ser un coste a una fuente de ingresos me parece una vuelta de tuerca absolutamente necesaria.De hecho, ya he comenzado a migrar todos mis desarrollos a Adzure, y el resultado está bastante bien (podéis ver una captura en el lateral); sin tocar una línea de código, sólo desplegarlo en la nube, la publicidad insertada se integra perfectamente en los diseños e incluso diría que lo mejoran, y por no hablar de que en unos días ya he conseguido algunos centimillos que nunca vienen mal.
Por cierto, actualmente estos servicios están en fase de beta privada y sólo se puede acceder por invitación, pero tengo treinta invitaciones para repartir entre los lectores del blog que estén realmente interesados en probarlo. Simplemente poneos en contacto conmigo por la vía que os sea más cómoda (por ejemplo ésta) y os iré enviando la URL y password personal de acceso en riguroso orden de llegada.
Y si preferís esperar, el servicio se abrirá al público en general el próximo uno de abril.
Nota para despistados: obviamente la noticia no es real, se trata simplemente de una broma del Día de los Inocentes. Por tanto, lamento comunicaros a los (muchos) que estáis esperando una invitación que de momento no va a poder ser ;-P
Publicado en Variable not found.
» Leer más, comentarios, etc...
Arragonán
Mis objetivos para 2012
Diciembre 27th, 2011 - [Enlace local]
Pues nada, aquí estamos otra vez, un año más viejos y marcando objetivos de nuevo por culpa del Bonilla.
Primero un repasillo a lo que pienso más destacable de 2011:
- Veo que de todo lo que me planteé el año pasado, sólo he cumplido con volver a ir al gimnasio. Físicamente estoy muchísimo mejor de lo que me andaba sintiendo en los últimos tiempos.
- Laboralmente ha estado bastante bien. He trabajado en proyectos de largo y corto recorrido. El trabajo me ha llegado “sólo”, no he tenido que salir a vender. Supongo que algo habré hecho para adquirir cierto prestigio, me llegan proyectos por diversas fuentes y algunos los he pasado en mi red de contactos.
De todos modos, se ha hecho patente que gestiono fatal las expectativas de mis clientes, cosa que me ha llevado a tener algunos problemas y no todos han terminado bien del todo… - A principios de año un pequeño grupo de profesionales IT montamos Cachirulo Valley. Un grupo que poco a poco ha ido creciendo hasta un colectivo “core” de 7 personas (programadores, maquetadores y diseñadores); a cuyas actividades se acerca gente de perfil profesional diverso y donde pretendemos ayudar a madurar el ecosistema IT/emprendedor de Aragón a base de compartir conocimiento (bueno, y algunos lo usamos como excusa de irnos de cañas
).
- Ganamos el AbreDatos 2011 presentando elDisparate. Con un equipo un tanto atípico formado por Mamen, Agustín, Toño y el menda; el experimento no salió mal del todo
- Me hice el camino de Santiago en bici, desde Jaca. Una aventura de más de 800 kilómetros que tenía en mente hace tiempo, y este verano se dieron las condiciones para llevarla a cabo al fin.
- Aparte de asistir a muchos eventos y co-organizar algunos eventos y grupos locales; he participado como ponente en bastantes saraos: En el Spring IO, en una mesa redonda de Open Data en la EOI, en theevnt con 2 charlas, en un taller de cachirulo valley, en el Greach y en las Cachirulo Tech Talks (enmarcadas en la Libre Software World Conference).
Objetivos para el año que viene:
- Mejorar mi inglés
- Mejorar mi metodología de trabajo y venderme mejor. Básicamente interiorizar más “método” de trabajo a nivel técnico, organizarme mejor para ser más productivo, y quizás empezar a vender todo el conocimiento que he ido acumulando estos años en materia de creación de productos/servicios/empresas en internet.
- Sacar 2 o 3 sideprojects que tengo por ahí a falta de un empujón, que no darán rentabilidad pero que me apetece que sean públicos. Que como “artista” del software (que no artesano) me gusta enfrentar mis cosillas con “la crítica”
. - Conseguir tiempo y centrarme para sacar en un nuevo producto serio. Ando con varias ideas para desarrollar algo nuevo que pueda dar rentabilidad: desde temas de ecommerce hasta aplicaciones móviles, pasando por algún pequeño SaaS…
- Este año volver a trabajar como programador itinerante, una experiencia que desgraciadamente no he podido experimentar de nuevo en 2011.
Y como decimos en mi pueblo: Feliz an nou!
.
» Leer más, comentarios, etc...
Picando Código
Control de versiones: Madurar
Diciembre 27th, 2011 - [Enlace local]
» Leer más, comentarios, etc...
Cuaderno de software
Productividad personal: my two cents
Diciembre 27th, 2011 - [Enlace local]
La productividad personal tiene una cosa: que es personal. Todo lo personal require introspección: esto es, análisis y conocimiento de cómo es uno mismo y de sus patrones de trabajo. Por ejemplo, habrá gente que necesite ser más consciente del uso de su tiempo para ser productiva: trazarse un plan, una lista de lecturas, tareas o lo que sea. Otros conseguirán lo mismo saltando alegremente de link en link y dejándose llevar. Sin embargo, todos nos movemos en un escenario parecido:
- buscamos vaciar la mente, pudiendo centrarnos en una cosa. Para lo que necesitamos construir una memoria fuera del cerebro.
- las interrupciones nos hacen menos productivos: ¿qué me interrumpe mientras hago mi labor? ¿cómo puedo evitarlo?
- ¿por qué a veces me encuentro haciendo varias cosas a la vez y qué me impide centrarme en una sola cosa?
- ocurre lo mismo cuando cambias de contexto constantemente: ¿puedo agrupar mis quehaceres por proyecto? ¿quizá pueda agruparlo por contextos?(“respondo todos los emails pendientes a la vez”, “salgo al pasillo a hacer todas las llamadas que debo”, “pomodoro de 25 minutos de leer el google reader”)
Yo creo que nunca he seguido estrictamente ninguna metodología. En su momento lo intentaba, pero desde hace tiempo me gusta leer sobre ellas sólo para coger ideas. Las típicas son:
- pomodoros: pueden ayudar a aislarte, a centrarte y a gestionar tu descanso.
- inbox zero: una buena gestión del email puede ser clave.
- gtd y sus derivados: listas, prioridades, clasificaciones y filtros.
- personal kanban: visualización, visión de progreso.
Creo que lo importante es revisar periódicamente tu método, profundizar en lo que te funcione y eliminar lo que no sea útil. Yo he sufrido dos antipatrones típicos de las metodologías de productividad personal:
- pasarse el día cambiando las tareas de lista, de sitio o reetiquetándolas, etc…
- consumir siempre las más “prioritarias” agobiándote cada vez más por cómo aumenta la lista de “no prioritarias” sin hacer
- acumular estercoleros de tareas, links, ideas… estercoleros gigantes imposibles de abordar que acabas borrando sin leer
- intentar gestionar todo desde el mismo sitio y la misma manera: tus tareas del día, tus hitos de proyecto, tus links por leer o tus correos por contestar. Quizá en algún caso valga con una lista simple, y en otros con una gestión más complicada.
Herramientas… Ay, las herramientas… lo de siempre: ten un método y busca una herramienta que le de soporte… y no al revés. Las herramientas difícilmente te harán más productivo en si mismas, y fácilmente te distraerán con miles de opciones. No soy fan de usar el papel y el boli, y menos hoy en día teniendo móviles inteligentes, pero entiendo a quien huye de las herramientas de software para estos temas. Hay miles de herramientas de productividad porque son fáciles de hacer. Te va a vale casi cualquiera.
Yo uso Notational Velocity para organizarme. No tiene ninguna característica de herramienta de gestión de tareas. Como herramienta, es totalmente agnóstica a un proceso u otro, y me ofrece lo siguiente: búsquedas superrápidas y accesos rápidos desde teclado, sincronización en la nube de todos mis dispositivos y ligereza. La uso para la lista de la compra semanal, para la lista de tests que debo implementar para una clase, para las tareas que me van entrando durante el día o para apuntarme algunas ideas locas que tengo… La combino con el calendario. Puedo ponerme un aviso en el calendario que diga “NOTATIONAL comprar ropa”, que me recordará que en el notational tengo la lista de ropa que necesito, o “NOTATIONAL reunión javier” que me recordará que tengo reunión con Javier y las notas que había preparado.
Una de las claves me parece la simpleza del método que uno tenga (y su revisión constante y eliminación del desperdicio), y la otra adquirir una serie de costumbres. Las costumbres me hacen más productivo. Si todos los días antes de irme a dormir leo media hora, fácilmente me leo un par de libros al mes. Si por la mañana abro el correo antes de llegar al trabajo, y no lo vuelvo a abrir hasta después del café, consigo aislarme más fácilmente. Si mis compañeros se acostumbran a no interrumpirme si ven una banderita de pomodoro levantada, si reviso mis correos archivados antes de comer, etc, etc, etc.
Y estos son mis dos céntimos sobre productividad personal: analizarse en profundidad a uno mismo y su escenario, luchar contra aquello que intenta complicar el método y generarse unas buenas costumbres.
» Leer más, comentarios, etc...
Variable not found
Enlaces interesantes 65
Diciembre 27th, 2011 - [Enlace local]
Estos son los enlaces publicados en Variable not found en Facebook y Twitter del 18 al 23 de diciembre de 2011. Espero que os resulten interesantes. :-)
.Net
- Mono in 2011
Miguel de Icaza
Asp.net
- How to combine a Worker Role with a MVC4 Web Role into a single instance
Liam Cavanagh - ASP.NET MVC + Selenium + IISExpress
Stephen Walther - Model Binding with Dropdown List in ASP.NET 4.5
Abhijit Jana - Knockout 2.0.0 released
Steve Sanderson - Free eBook: OWASP Top 10 for .NET developers
Troy Hunt - Solving Duplicate Content with Distinct URLs Issue in ASP.NET MVC
Imran Baloch's - New Request validation features in ASP.Net 4.5
K. G. Sreeju Nair - Using CORS to access ASP.NET services across domains
Dave Ward - HttpRequestBase vs HttpRequest
Eduard Tomás - Debugging Application_Start and Module Initialization with IIS and Visual Studio
Rick Strahl - Rotate an ASP.NET Image Control using HTML 5 Canvas
Suprotim Agarwal - Retoques a MVC y Razor para proyectos grandes–Una recomendación
Lucas Ontivero - High-Performance ASP.NET Caching
Peter Vogel - Microsoft blogging platform gains 33% performance boost after adopting RequestReduce
Matt Wrocks
Azure / Cloud
- Azure Monitor for Windows Phone 7 is out!
Ibon Landa - Libro gratuito sobre Windows Azure (Parte IV): Diseño y herramientas
CampusMVP - SQL Azure Q4 2011 Service Release
Ibon Landa
Data access
- MongoDB Best Practices
Inés Sombra - Inserciones masivas en SQL Server CE vs SQL Server vs MongoDb (y II)
Josué Yeray - Raven DB VI, La hora de las consultas…
Unai Zorrilla
Html/Css/Javascript
- JavaScript as a First Language
John Resig - The output element in HTML5
Richard Clark - Excssive, herramienta online para comprimir archivos CSS
Zach Will (Vía desarrolloweb.com) - Meet the CSS4 selectors
Catalin Rosu - JavaScript for C# developers: calling functions and the ‘this’ variable
Julian M. Bucknall - Top 10 “Must Follow” JavaScript Best Practices
Salman Siddiqui - Online Javascript Compression Tool
BrightBit - The rise and rise of JavaScript
Dan North - Using the JavaScript Prototype Property to Structure and Extend Code
Dan Wahlin's - Multiple Attribute Values
Chris Coyier - The Seven Deadly Sins Of JavaScript Implementation
Christian Heilmann (vía @alegrebandolero)
Visual Studio/Complementos
- C# + ReSharper = Awesome: Tip #5 – Replace Constructor with Factory Method
Alvin Ashcraft - ReSharper 6.1, dotCover 1.2 and dotTrace 4.5.2 Performance Released
Hadi Hariri - C# + ReSharper = Awesome: Tip #4 – Convert Abstract Class to Interface
Alvin Ashcraft - C# + ReSharper = Awesome: Tip #3 – Convert Into LINQ Expression
Alvin Ashcraft
Publicado en Variable not found
» Leer más, comentarios, etc...
Escuela De Codigo
2011: lo aprendido y olvidado por un programador
Diciembre 26th, 2011 - [Enlace local]
Siempre es una muy buena tradición, que cuando el año esta por concluir hagamos una pausa, nos hagamos a un lado del camino y reflexionemos sobre lo ya recorrido, tomar un momento para alegrarnos de las lecciones aprendidas y analizar aquello que olvidamos hacer.
Este articulo trata justamente de eso, un recuento de las cosas que aprendí en este casi difunto año 2011, aquellas pequeñas pero, grandes cosas que ahora forman parte de mi repertorio de habilidades y las que por alguna u otra razón (excusa) no hice el tiempo para dominarlas.
En el 2011 aprendi…
- A crear una gema, con el desarrollo de un par de proyectos open source que he publicado acá, tuve que desarrollar un par de programas que al final termine desarrollandolos como gemas de ruby, algo que nunca había hecho pero, que finalmente me anime y me di cuenta que no es tan difícil como parece.
- A utilizar Amazon EC2, mucho se habla de Amazon en la nube y las grandes ventajas que implica si te dedicas a desarrollar un producto tipo SaaS, pues bien con el lanzamiento de un pequeño side project que tenia entre manos, decidi utilizar Amazon EC2 para desplegar mi aplicación, en lugar del clásico servidor dedicado. Hasta el momento los resultados y la experiencia ha sido mas que satisfactoria.
- Spring Roo, ya sobre lo ultimo del año, inicie un trabajo que me requería desarrollar una aplicación web rápidamente y que ademas estuviera escrita en Java, inicialmente opte por utilizar Grails pero, aprovechando el momento decidí aprender algo nuevo y fue así como me decante por Spring Roo y hasta el momento no me arrepiento de esa decisión.
- Mas Ruby, ya había tocado superficialmente este lenguaje pero, este año decidí trastearlo otro poco mas
- Redis, afamada base de datos NoSQL, preferia utilizarla sobre el clásico uso de MySQL. Es un cambio de paradigma completo y me ha costado un poco adaptarme pero cuando ya entiendes que todo se reduce a un par key-value, la vida se vuelve tan fácil.
- Android, me involucre en cerca de 3 proyectos de desarrollo de aplicaciones móviles para la plataforma de Google y prácticamente fui aprendiendo sobre la marcha, cometiendo muchos errores pero, siempre corrigiendolos, una gran experiencia tanto que pronto tendremos un sitio hermano de este dedicado exclusivamente al desarrollo de aplicaciones Android.
- Node.js, aunque inicialmente iba a utilizar esta herramienta para un proyecto personal que al final termine haciendo en otra plataforma, entendí bastante porque Node.js es maravilloso, fue tan fácil aprenderlo porque es Javascript de el lado del servidor, tiene una gran comunidad desarrollando módulos para extender su alcance y no cabe duda que tiene un gran futuro.
En el 2011 olvide…
- Aprender a profundidad HTML5, para desarrollar aplicaciones web para móviles, HTML5 es el rey de la selva, no flash, no ninguna plataforma propietaria. HTML5 es el futuro y lo mejor de todo ya es parte de nuestro presente así que haber pasado todo el 2011 y no dedicarle el tiempo suficiente a aprender completamente esta tecnología fue un completo error.
- Utilizar Rail en algún proyecto, mas que olvidarlo, decidí no hacerlo, decidí no utilizar Rails en ninguno de los proyectos personales que emprendí, un cierto temor me invadió (es una plataforma lo suficientemente madura para este tipo de aplicación? Si algo falla podré encontrar el error fácilmente? ) así que al final no lo utilice en nada. Se que Rails es una gran plataforma, muy madura pero, este año 2011 opte por el camino de mejor lo viejo conocido (Java).
- Ser un ninja de Git, increible que aun mi mente este tan anclada en el control de versiones como SVN y no le saque el máximo poder a Git, no pase de aprender los comandos básicos para subir un proyecto a GitHub, para clonar un repositorio y ese tipo de cosas de novatos. Git lo usan los profesionales y grandes en todo el mundo, espero no pasar otro año como este, sin ser de esos que son ninjas en Git.
- Aprender CoffeScript, el pseudo lenguaje de programación que hace la tarea de programar en Javascript mucho mas fácil, solo leí maravillas de esta herramienta en infinidades de blogs y jamas tome una noche para seguir un tutorial. Completamente mal.
Cuando repaso esta lista, siento que es tan pequeña, siento que han sido tan pocas las cosas que he aprendido profesionalmente que no deja de preocuparme ¿en que he invertido mi tiempo? ¿lo he mal aprovechado? ¿debería de concentrarme en otras cosas? ¿lo que aprendí en realidad no me servirá de nada en mi vida laboral?
Y cuando veo las cosas que deje de aprender me cuestiono ¿en realidad porque no las aprendí? ¿falta de capacidad? ¿no hice el tiempo suficiente? ¿considere que al final esas cosas no eran tan importantes?
Cuando el año se acaba, las personas se preocupan por hacer de los próximos 365 días venideros completamente distintos a los anteriores, yo en cambio prefiero retomar aquello que hice bien y hacerlo de nuevo, aquello que aprendí seguirlo aprendiendo y aquello que olvide volver a ponerlo en la lista de cosas por hacer.
Este año 2012 tiene que ser mejor que el anterior y si al finalizar el 2012 me vuelvo en un mejor programador sentiré que esa meta se habrá cumplido.
Te invito a que reflexiones tu también y hagas un recuento de aquellas cosas que aprendiste este año y aquellas que dejaste como deuda a tu cerebro y decidiste no aprenderlas.
» Leer más, comentarios, etc...
Picando Código
nVidia en GNU/Linux – X consume muchos recursos
Diciembre 26th, 2011 - [Enlace local]
Con cada actualización del driver nVidia en ArchLinux, notaba que durante el uso diario de la computadora, el proceso X (servidor xorg) consumía una cantidad importante de recursos. Si bien la aceleración gráfica funcionaba normalmente, estos problemas de rendimiento se daban constantemente.
No tuve que ir más lejos que la wiki de ArchLinux -esa fuente de conocimiento infinito que todo lo sabe sobre nuestro sistema- para encontrar la solución. En la sección de Troubleshooting encontré mi problema exactamente.
Tengo una nVidia GeForce GT 430, y el problema en cuestión describe lo siguiente:
Si estás experimentando picos intermitentes de CPU con una tarjeta serie 400, puede ser causado porque PowerMizer cambia constantemente la frecuencia del reloj del GPU. Para solucionarlo, hay que cambiar el ajuste de PowerMizer de Adaptive a Performance.
Para esto podemos agregar en nuestro archivo de configuración xorg.conf la siguiente línea en el apartado Device:
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"Podemos ver esta info también en el gestor visual de nVidia:
» Leer más, comentarios, etc...
Cuaderno de software
Libros que te han influido a la hora de desarrollar software…
Diciembre 26th, 2011 - [Enlace local]
… que no tienen por qué ser de software! Esa es la pregunta que lanzo a la comunidad, con la idea de montarme una lista de libros para el 2012 quizá no tan centrada en código como la del 2011.
Algunos ya han sacado un rato y me han respondido:
- The personal MBA
- Blink
- Drive
- Numbers rule your world
- 42 Fallacies
- Mindhacker
- Thinking Strategically: The Competitive Edge in Business, Politics, and Everyday Life
- Peopleware: productive projects and teams
- Clean Code
- Pragmatic Programmer
- Becomming a Technical Leader
Muchas gracias a ambos que sé que andan currando a tope y no les sobra el tiempo…
Pero la pregunta es un poco para todo el mundo: ¿Qué libros os influyen en vuestro día a día aunque no tengan que ver directamente con software?
Podéis mandarme un mail o escribir en los comentarios y prometo ir editando y completando la lista…
» Leer más, comentarios, etc...
Javier Pérez
Feliz Solidaridad 2011
Diciembre 25th, 2011 - [Enlace local]
Año 2011. Navidad. Tiempo de disfrute y excesos con familiares y amigos íntimos. No para todos. Hay quien en estas fechas no tienen un plato lleno de langostinos, ni un familiar cerca con quien compartir estos días, ni nada.
El altruismo, al contrario de lo que la mayoría cree, no significa “hacer el bien sin esperar nada a cambio“. Altruismo es “procurar el bien ajeno aun a costa del propio“, pero sí que se recibe algo a cambio, mucho, el enorme placer que supone haber ayudado a quien lo necesita. Y eso se puede conseguir con muy poco, no necesitamos ser el filántropo Bill Gates para procurar ese bien ajeno. ¿Tienes 50 €? Entonces puedes.
Voy a explicar los proyectos en los que participo, no para fardar de solidario, puesto que no me cuesta casi ningún esfuerzo, sino para hacerte ver que hay personas como tú que con muy poco consiguen aportar su granito de arena para procurar ese bien ajeno, y de paso, también el bien propio.
Kiva
Kiva es una plataforma de microcréditos a cero interés, otorgados a pequeños empresarios (normalmente emprendedores con una familia que depende de ellos) de países pobres o simplemente en estado de marginalidad. Tú eliges qué cantidad quieres aportar a un determinado emprendedor (como por ejemplo, a un señor de Ruanda que quiere comprar mercancía para luego venderla), y en los plazos acordados te irán devolviendo esa aportación, que puede ser cualquier cantidad a partir de $25 (unos 20€).
En esta ocasión ni siquiera tienes que desprenderte de tu pequeño capital, sino que simplemente lo prestas durante un tiempo, y una vez te han devuelto el crédito podrás elegir entre volverlo a prestar a otra persona o quedártelo. Sólo tienes el riesgo de que no te devuelvan ese crédito, por los motivos que sean, pero hasta el momento siempre me han devuelto hasta el último céntimo.
Con esto consigues que una familia pueda salir adelante, no regalándoles recursos, sino con su propio esfuerzo.
En esta plataforma creé el equipo Fundación Andelux, desde donde hacer esos préstamos en equipo. Te animo a que te unas.
Greenpeace
Según nuestra Constitución Española de 1978 (artículo 45), el medio ambiente es tanto un derecho (su disfrute) como un deber (el conservarlo), de todos. Pero, desgraciadamente, como otros tantos artículos de nuestra constitución, nuestros gobiernos ni lo cumplen ni lo hacen cumplir, prevaleciendo otros intereses siempre éticamente cuestionables.
Por eso existen asociaciones ecologistas, como Greenpeace, para procurar que el medio ambiente se conserve y que por lo tanto podamos ejercer ese derecho constitucional a disfrutarlo. No deberíamos tener que hacer una aportación extra para esto, porque el Estado que pagamos con nuestros impuestos debería encargarse de esto, pero el hecho es que nuestros gobiernos (sean del color que sean) son deficientes e incompetentes en esta materia. Tu aportación personal es necesaria.
Hay muchas ONG ecologistas, pero Greenpeace es la que más y mejor me ha demostrado que sus acciones tienen un efecto positivo. Los conocí hace muchos años cuando trabajaba de comercial (promotor), consiguiendo socios para Greenpeace. El hecho de que una ONG contratara a una fuerza de ventas (empresa de marketing) para conseguir socios me pareció, en un primer momento, poco ético. Después, una vez que conocí a Greenpeace desde dentro, entendí que la externalización que hacen de (casi) todo es lo que los hacía fuertes: contratan a los mejores para hacer el trabajo que se necesita. Paracaidistas, capitán de barco, submarinistas… todos ellos son profesionales contratados por Greenpeace, y casi todos, además, implicados personalmente en aquello que Greenpeace defiende. La democracia interna es también su punto fuerte, cualquier socio tiene derecho a voto e incluso a presentarse para los cargos electos.
Yo comencé a ser socio pagando una cuota de 1.000 pesetas al mes. No necesitas aportar demasiado de tu propio capital para conseguir ayudar a preservar el medio ambiente. Si no quieres ser socio, también puedes optar por hacer una aportación puntual.
Otras opciones para aportar tu granito de arena al espíritu navideño
Estos son otros proyectos en los que he colaborado puntualmente y/o me estoy planteando hacerlo:
- Médicos sin Fronteras: No hay mucho que explicar, MSF lleva salud allí donde escasea.
- Fundación Vicente Ferrer: Fundación del desaparecido Vicente Ferrer. Trabajan desde hace muchos años en mejorar la calidad de vida de los grupos más marginados de la India.
- Cruz Roja: Fui voluntario de adolescente, y la labor social que hacen es importantísima, al margen de la ideología política con la que a menudo se les asocia.
- RAIS: Esta fundación trabaja por la integración de personas en riesgo de exclusión social. El ayuntamiento de Madrid retiró hace meses las ayudas y recursos que venía destinando a estos menesteres, por lo que tu colaboración es muy importante.
Por último, te recomiendo que veas este documental: El caso 112. El caso de una mujer “sin techo”, que murió en la más absoluta soledad tras caerse por las escaleras de metro Callao (Madrid). Tras una investigación descubrieron que esa mujer tuvo una vida plena y de grandes éxitos, pero una serie de infortunios la llevaron a la indigencia. No pienses que eso nunca jamás te pasará a ti, piensa que eso le puede pasar a cualquiera, incluso a algún ser querido. Y obra en consecuencia.
¡Feliz Solidaridad!

» Leer más, comentarios, etc...
Blog de Federico Varela
Crónica San Felipe y Santiago 10K
Diciembre 23rd, 2011 - [Enlace local]
Cerramos el año con la tradicional San Felipe y Santiago, 10 kilómetros a pura rambla desde Carrasco a Trouville. El clima se presentó adverso, con lluvia hasta momentos antes de largar. Muchos optamos por resguardarnos del agua y hacer apenas algún movimiento en el lugar para entrar en calor y evitar comenzar la carrera empapados. En el momento que paró de llover nos acercamos al sector de
» Leer más, comentarios, etc...
Picando Código
Revenge Of The Titans v1.80.14 – El ataque de los Yetis
Diciembre 23rd, 2011 - [Enlace local]
Los creadores del excelente juego Revenge Of The Titans lanzaron en estos días la versión 1.80.14. Los que lo compramos en el Humble Indie Bundle 2, podemos ir al sitio de descarga y obtener la nueva versión. Sino, se puede descargar la demo desde el sitio de Puppygames o a través de Steam – hasta el 2 de enero se encuentra a solo U$S 4.99.
El ataque de los Yetis
Como especial de navidad, los desarrolladores incluyeron una nueva modalidad de juego: Yeti Attack! Entre el 19 de diciembre y el 8 de enero estará disponible este modo de juego. Incluye todas las armas, tecnologías y defensas del juego. El mapa se genera al azar, y el objetivo es sobrevivir 30 minutos al ataque constante de Yetis que nos invaden desde el norte. He jugado un par de veces pero todavía no he logrado vencer a los Yetis…
Si bien dejará de funcionar el 8 de enero, se está trabajando en un modo “Sandbox” en el juego, que permitiría agregar este modo de juego permanentemente.
Nuevas características
Además del modo de juego bonus, en esta versión se cambió completamente la forma de manejo del mouse. Ya no desplaza la pantalla al ir hacia los extremos como lo hacía antes. Ahora hay que usar los botones del mouse al estilo drag-and-drop (haciendo clic derecho o izquierdo sobre alguna superficie y desplazando). Personalmente me acostumbré a usar las teclas WASD para el desplazamiento, así que no me afectan directamente.
Por otro lado también se cambió el manejo de pantalla con el tema de la ventana de tamaño variable. Se supone que debería funcionar con más dispositivos que tenían problemas con los drivers de video. También hubieron algunos cambios en el manejo de animaciones y transiciones de pantalla. Personalmente noté mejoras en el rendimiento gráfico ni bien ejecuté esta nueva versión ![]()
Si todo sale bien, y resulta ser una versión estable y sin problemas mayores, el código mejorado irá también a los otros juegos de Puppygames: Ultraton, Titan Attacks y Droid Assault.
Comentario final
Tanto las mejoras como el nuevo modo agregan mucho valor a Revenge Of The Titans. Es un juego muy entretenido, y gracias a el ataque de los Yetis he vuelto a jugarlo por un buen rato (por lo menos hasta lograr vencer al último de los Yetis gigantes…). La modalidad de Sandbox que se está preparando probablemente extienda la vida útil de RoTT, incluyendo nuevas formas de jugarlo y un ambiente de desarrollo de mapas para los usuarios. Habrá que seguir atentos su desarrollo.
Dejo algunas fotos del nuevo modo de juego:
» Leer más, comentarios, etc...
El blog de pico.dev
Feliz navidad y próspero 2012
Diciembre 23rd, 2011 - [Enlace local]
Ha pasado un año completo para El blog de pico.dev y en febrero del 2012 este blog cumplirá el segundo aniversario. A punto de finalizar el 2011 llega el momento de hacer balance de lo que ha dado de si este año. En este 2011 he publicado 43 entradas, unas pocas menos que una media de una a la semana que me he fijado como objetivo desde hace un tiempo. Aunque aún el año no ha acabado este blog ha tenido cerca de 34.271 visitas, 25.251 visitantes y 55.280 páginas vistas, dicho así parecen muchas pero son «solo» cerca de unas 90-150 visitas diarias. Aún así son considerablemente más que el año 2010 (12.970 visitas, 9.758 visitantes y 20.946 páginas vistas) lo que es casi triplicar el tráfico del año anterior, el hecho de ir acumulando contenido en el blog se nota a medida que pasa el tiempo aunque muy lentamente. Seguro que otros blogs que publican cientos de entradas al cabo del año y tienen a varios usuarios publicando en él tienen bastantes más visitas, aunque mi objetivo no es publicar un gran número de entradas del estilo «Como instalar/actualizar el programa X por cada versión menor (X.X.1) en Ubuntu (u otra distribución)» o «Publicada la versión menor X.X.1 del programa X» que creo que aportan más bien poco sino escribir entradas que compartan alguna información más útil.
En cuanto a la temática de las entradas he escrito más sobre programación que lo que hice en el 2010 y eso creo que va a seguir siendo así aunque no dejaré de escribir de vez en cuando alguna más orientada a (Arch) Linux y software libre.
Si habéis llegado o suscrito recientemente a mi blog (y si aún no lo habéis hecho estáis invitados) os pongo aquí la hemeroteca de las entradas que he escrito durante este año:
Programación:
Unir Apache HTTPD y Tomcat mediante un reverse proxy
Enviar correos electrónicos mediante Java Mail
Implementación de un Comparator genérico en Java con ayuda de Groovy
Servidor web ligero Cherokee, instalación e integración con PHP en Arch Linux
Elegir herramientas para un proyecto Java
Instalar Symfony y Cherokee en Arch Linux
Hola mundo con Symfony 2 y Cherokee
Internacionalización a lenguajes con diferentes formas plurales en Java
Seleccionar el lenguaje (locale) según el dominio en Apache Tapestry
Comparar cadenas en Java ignorando acentos
Integración continua con Jenkins
Configuración de entorno en Java con ayuda de Groovy
Ejemplo sencillo con JavaCC de un analizador léxico y sintáctico
Formatear precios con símbolo de moneda en Java
Internacionalización (i18n) de campos con Hibernate
Convenciones para los literales en archivos .properties en Java
Tapestry:
Componente cache para Tapestry 5
Componente lista para Tapestry 5 (paginable y anidable)
Usar Apache Tapestry 5 con Groovy (u otros lenguajes de la JVM)
Motivos para elegir el framework Apache Tapestry
Peticiones Ajax en Tapestry
Peticiones Ajax en Tapestry (II)
Componente AjaxSpinner para Tapestry 5
(Arch) Linux:
Instalar Plymouth como arranque gráfico en Arch Linux
Poner en color pacman y yaourt
Obtener información del sistema en Linux (con inxi, lspci y hwinfo)
Añadir marcas de agua a imágenes con ImageMagick
Motivos para elegir la distribución Arch Linux
Personalizar GNOME (iconos, temas, extensiones, opciones)
Arte usando texto ASCII con FIGlet
Vídeo promocional sobre Arch Linux
El impuesto Windows
Como sería si Microsoft, Apple y Linux...
Otros:
Un día en la Euskal Encounter 19
Dicho lo cual solo me queda daros las gracias por ser parte de las visitas de este blog y desearos...

Referencia:
http://laventanamuerta.net/haz-llegar-la-navidad-a-tu-escritorio-con-los-fondos-navidenos-de-tux/
http://www.klowner.com/wallpaper/
http://www.youtube.com/watch?v=WdyplU0RVk8
» Leer más, comentarios, etc...
xailer.info (esp)
Actualización de Xailer 2.5
Diciembre 23rd, 2011 - [Enlace local]
¡¡Nueva versión de Xailer disponible!!
Ya está disponible la nueva versión de Xailer 2.5.1 que incorpora importantes correciones sobre la versión 2.5 y algunas mejoras:
- Correcciones varias en Intellisense
- Mejoras en la gestión de Plugins
- Al copiar controles, se duplicaban sus eventos en el .xfm
- Error al intentar borrar un ExplorerGroup
- Ajustes en el guardado de la propiedad oFont de los controles
- Error al copiar elementos con aItems que no eran objetos (p.ej. listbox)
- SQLite Editor: Nueva funcionalidad en editor para ejecutar procesos BATCH
- Debido a cambios internos en el sistema de Plugins es necesario reconstruirlos
- TOcx: No dejaba escribir caracteres acentuados dentro de un OCX
- TControl: Al hacer click fuera de un menu popup, siempre se disparaba la opcion por defecto. Usar nuevo parámetro lCanceled para conseguir misma funcionalidad
- TControl: Nuevo parametro lCanceled en ShowPopupMenu(), que se recibe por referencia y se rellena a .T. si el usuario ha cerrado el menu sin seleccionar una opcion
- TControl: Usar oFont del formulario si oFont = Nil y lParentFont = .F.
- samples\MetaControls\Office2007Buttons: Ejemplo de metacontrol que crea un boton con estilo Office2007 a partir de un TGlassBtn
- samples\Plugins\MoreOptions: Nuevas opciones y mejoras. Ahora utiliza un diálogo en vez de un menú
- samples\Plugins\HelloWord: Plugin basico para usar como plantilla o como punto de partida de otros plugins
- Actualizada a los últimos cambios
En esta ocasión no hemos habilitado el sistema de ‘Auto Update’ debido a los grandes cambios existentes: nuevo IDE, nuevas ayudas y nuevos ejemplos.
Un cordial saludo,
[El equipo de Xailer]
» Leer más, comentarios, etc...
Variable not found
¡Felices fiestas & 2012!
Diciembre 23rd, 2011 - [Enlace local]
Desearos a todos unas muy felices fiestas en las que podáis disfrutar de la compañía de todos aquellos que os importan.
Y ya de paso, desearos también que el próximo año 2012 venga cargado de alegrías, prosperidad y nada más que cosas buenas. Al menos a ver si es para todos un pelín mejor de lo que ha sido el año que ahora cerramos ;-)
Nos seguimos viendo por aquí.



