Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

.: El Blog de Inwe :. » Programación

Reconocimiento facial

Enero 30th, 2009 - [Enlace local]

Como muchos ya saben, el nuevo iPhoto (ILife 09) incorpora el reconocimiento facil dentro de las fotos de nuestras fototecas, pudiendo así visualizar las fotos donde aparece cada persona. Hace poco que he probado esta nueva funcionalidad, y la verdad es que reconoce la gran mayoría de caras que aparecen en las fotos, pero no sólo caras, he aquí un ejemplo:

iPhoto

Entradas relacionadas

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Micromanagement

Enero 29th, 2009 - [Enlace local]

Hoy he caído por casualidad en una tira sobre micromanagement en Geek Hero Comic:



Está claro que esta tira no es Sinergia Sin Control, pero me ha hecho pararme a pensar si tengo un problema: me he visto reflejado con el tipo del peinado de el de Simply Red (o el Actor Secundario Bob, o Bisbal, o mi amigo Valle ^_^).

Tengo que admitir que soy muy maniático con muchos detalles que considero importantes, y, más que importantes, malos síntomas. Hoy mismo, en una presentación sobre metodología de desarrollo que he hecho para los compañeros, me he declarado un entrometido maniático, y les he pedido disculpas por anticipado al respecto.

Concretamente, soy MUY maniático con estos detalles (entre otros), que si seguís el blog ya habréis visto comentados:

Buscando al respecto del micromanagement he encontrado diversas opiniones y descripciones. En general se puede definir como gestionar intentando controlar todos los detalles, hasta el más pequeño, sin capacidad de delegación o de confianza.

Tengo que admitir que me siento bastante representado en unos cuantos puntos (la Wikipedia lo asocia a desórdenes obsesivos compulsivos, no sé si diría que tanto, pero casi), así que debo reconocer mi errores al respecto (alguno ciertamente grave). En mi defensa, diré que mi intención siempre fue intentar ayudar, pero está claro que no siempre fue de forma correcta.

Prometo esforzarme en mejorar :).

Una vez hecho este ejercicio de autocrítica...



¿Dónde está la barrera que separa el micromanagement del management y del mentoring? Parece claro que los tres son prácticas relacionadas. Diría incluso que el micromanagement es la perversión de la unión de los otros dos, es llevarlos al extremo. Pero ¿dónde comienza uno y empieza el otro? Creo que es algo subjetivo, que depende de los implicados. Lo que a una persona le puede parecer una ayuda, una sugerencia, a otro le puede parecer un entrometimiento. Seguramente llegar al punto de la confrontación es un síntoma, pero hay otros, como la falta de percepción de confianza, que no son tan fáciles de ver.



Sin embargo, ¿no son herramientas como Checkstyle una forma de micromanagement? ¿No lo es el Daily Scrum? Yo los veo como herramientas para mejorar la calidad del producto y uno mismo, pero esa es mi percepción...



¿Qué opináis? ¿Microgestionais? ¿Lo habéis sufrido alguna vez? ¿Creéis que con ciertas personas o en ciertos momentos puede ser necesario adoptar posturas así? ¿Cómo lo evitaríais?



Supongo que, como siempre, in medio stat virtus.



P.D.: a los compañeros que leáis esto, no dudéis en atarme en corto en este aspecto ;)

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Trazabilidad

Enero 25th, 2009 - [Enlace local]

Podríamos explicar la trazabilidad (bidireccional) en el contexto del desarrollo de software como "dado un requisito llegar a la línea de código que lo implementa, y al contrario, dada una línea, saber con qué requisitos corresponde"(a grandes rasgos, no cortapegéis esto para nada importante ;) ).

Esto tiene muchos matices y complicaciones, tanto teóricas como prácticas. ¿Realmente es importante? ¿Necesitamos bidireccionalidad? La trazabilidad es claramente una función no biyectiva: una misma línea probablemente corresponde con varios requisitos, y un requisito corresponde con muchos fragmentos de código dispersos.

Hasta hace poco siempre había visto esto como algo imposible de conseguir -a un coste razonable-. Los requisitos se registraban en un procesador de textos, las tareas en un diagrama de Gantt, y el código en un repositorio, todo desconectado. Los intentos que ví para solucionar esto eran añadir funcionalidad a estas herramientas para lograr lo que se necesitaba. Por ejemplo, hay (caros) plugins para Word que añaden "orientación a requisitos", permitiendo, por ejemplo, versionarlos. En las tareas del Project habría que meter los códigos de los requisitos. En los commits de código, los códigos de las tareas... Trabajo, trabajo, trabajo. Al final, se abandonaba.

El problema era de planteamiento. Es inutil forzar el uso de herramientas para un fin ajeno a los objetivos del implicado: al programador no le da ningún beneficio el esfuerzo extra de añadir el código de la tarea. Al analista, el uso de herramientas más complejas que el word le supone también más trabajo. El gestor del proyecto probablemente no tiene ni tiempo ni ganas de actualizar o comprobar el diagrama de gantt...

La solución ha venido de forma conjunta a la adopción de técnicas ágiles y el cambio de herramientas integradas. Las tareas se añaden en el gestor de incidencias (Trac en nuestro caso). Esto, de paso, soluciona el problema del versionado. Además, al ser información estructurada, al estar en una base de datos, se pueden generar informes y vistas en función de las necesidades. Al programador se le da el Eclipse con Mylyn, que le da valor añadido. Indicar la tarea en la que está trabajando no sólo no es trabajo (hacer un click en ella), sino que le aporta valor añadido, ya que el entorno recuerda el contexto (la perspectiva, las vistas, los ficheros abiertos...), haciéndole más fácil alternar entre tareas. Al final, en el gestor tenemos los requisitos (con su histórico) y podemos ver el código relacionado.



¿Moraleja? Si tienes que forzar a tu equipo a algo, la culpa no es del que no te hace caso, sino tuya. Las herramientas adecuadas para las tareas adecuadas.

» Leer más, comentarios, etc...

jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo

Mis tropiezos con Google App Engine

Enero 24th, 2009 - [Enlace local]

Logo 'roto' de Google App EngineHace bastante tiempo que tengo en mente una idea para desarrollar una aplicación web y, cuando me decidí por fin a implementarla, elegí Google App Engine, a pesar de que no conocía Python, el único lenguaje que soporta ahora mismo (aunque ha sido una buena excusa para aprender) y a pesar de algunas limitaciones propias de un servicio gratuito y en pruebas.

Al fin y al cabo, esos inconvenientes parecían quedar ampliamente superados por las ventajas de usar la misma infraestructura que usa Google para sus propias aplicaciones: robustez, existencia de un entorno de desarrollo, APIs de gestión de usuarios, de almacenamiento de datos, etc.

Sin embargo, los primeros desarrollos han hecho que dos de esas limitaciones se conviertan en importantes barreras para desarrollar una aplicación que tiene que acceder a otros sitios web:

Esta limitación es especialmente restrictiva cuando la aplicación tiene que acceder a sitios web de terceros: las conexiones son lentas, los servidores tardan en responder, … Al final sólo se pueden visitar unas pocas URLs antes de que se produzca el timeout.

Es decir, Google App Engine no permite modificar esa cabecera en las peticiones, y Delicious parece bloquear las peticiones con la cabecera que envía. Un problema que parece poco importante en principio pero que tiene difícil solución.

Estos temas hacen que me esté cuestionando si, a pesar de sus incuestionables ventajas, Google App Engine fue una elección adecuada o no. ¿Tenéis alguna idea al respecto, o conocéis otras alternativas a Google App Engine?

Actualización 11-mar-2009

Buenas noticias. Ahora mismo parece que ya se puede acceder desde Google App Engine a la API de Delicious sin problemas, seguramente porque Delicious ha dejado de bloquearlas. Además, parece que está en los planes de Google, entre otras cosas, dar soporte a tareas planificadas y procesos en background.

Bien por las empresas que escuchan a sus usuarios y dan respuesta a sus necesidades.

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Calidad de Código

Enero 24th, 2009 - [Enlace local]

Practiques Integración Contínua o no, creo que tus scripts de compilación deberían ejecutar también unas cuantas herramientas de calidad de código. En mi opinión este tipo de herramientas es útil tanto para controlar (y mejorar) la calidad del código en sí como para formar al equipo en una mentalidad de mejora contínua.

Yo acabo de integrar las siguientes (y la lista probablemente siga aumentando):

A esto hay que añadir que Hudson integra también el seguimiento de las tareas abiertas (TODOSs, FIXMEs, etc) que también es fundamental.



¿Qué otras herramientas utilizáis?

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Colección de utilidades para desarrolladores de PHP

Enero 21st, 2009 - [Enlace local]

Smashingmagazine publica una serie de herramientas que nos facilitará la programación en PHP. La lista la conforman no sólo IDEs, sino también frameworks, herramientas online, debuggers, herramientas de pruebas y optimización, documentación, seguridad, manipulación de imágenes y gráficos, control de versiones, extensiones, clases, plugins para Firefox, etc.. como se puede comprobar es de lo más completo, sin duda indispensable para cualquier desarrollador de PHP.

Enlace: 50 Extremely Useful PHP Tools

Entradas relacionadas

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Informática Corporativa

Enero 20th, 2009 - [Enlace local]

En muchas organizaciones, y muy notablemente en la Administración, se viene creando un departamento (o movimiento, o tendencia, o normativa...) de "Informática Corporativa". Procede de que la organización crece horizontalmente y la informática, que es transversal (ya que afecta y se desarrolla en todos los departamentos), se vuelve heterogénea en la organización. Esta heterogeneidad es vista como algo negativo, ya que en apariencia aumenta los costes:

Para dar forma a esta informática corporativa se establecen unos procedimientos (casi siempre a medida, síndrome NIH) que dan lugar a una arquitectura común para los desarrollos.

Esto, visto desde el punto de vista funcional, desde la organización se pretende interpretar como algo fantástico: durante uno o dos (o más) años estudiamos las tecnologías disponibles, para seleccionar la más mejor, especializarnos en ella, y utilizarla para todo.

En la práctica, lo que sucede es que las organizaciones tardan dos años en seleccionar una tecnología que ya está obsoleta para cuando se implanta por primera vez, y se pelea contra ella durante años. Los errores cometidos durante el estudio (todos nos equivocamos) en vez de solventarse se parchean, para mantenerse de forma supuestamente ortodoxa en la normativa. El personal de toda la organización se especializa (en el mejor de los casos) en herramientas que carecen de interés en muy poco tiempo, y se estancan en ellas. Por tanto, todo intento de cambio se percibe como una amenaza, una intromisión en su trabajo. Además, como la arquitectura se convierte en normativa, se prohíbe la instalación en la red interna de todo aquello que se salga de ella.

La informática cambia con mucha frecuencia. Y, aunque no cambiase, no hay balas de plata. Intentar hacer norma de una tecnología es una locura: no hay nada que sirva para todo (ni en metodologías ni en herramientas) y lo menos malo para todo lo es hoy pero no mañana.



No me gusta señalar problemas sin proponer alternativas. ¿Solución? Normaliza el cambio:

El cambio es bueno. ¡Esto no significa que cada mes tengas que hacer las cosas de forma diferente! Si tienes gente formada, y haces un estudio de viabilidad real, el cambio surgirá de forma progresiva y natural: se irán incorporando cosas nuevas, se sustituirán componentes mejorables... Incluso los "cambios radicales" (piensa en un primer proyecto con Python en vez de J2EE) parecerán normales, ya que, en el fondo, los conceptos son los mismos.



PD: mañana tengo que trabajar en mostrar que un cambio es positivo, ¡deseadme suerte! ;)

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Nuevo documento de texto en Leopard

Enero 19th, 2009 - [Enlace local]

Una de las cosas que más echaba de menos de Windows, era la posibilidad de añadir un nuevo documento de texto vía el menú contextual, y en el directorio sobre el que estamos en el Finder. Pero vamos, como dije antes echaba de menos, porque por fin di con la forma de hacerlo en Leopard, y es a través de los poco usados (al menos por mi, hasta ahora) AppleScripts.

Para ello, tendremos que hacer lo siguiente:

Pues bien, ahora ya sólo nos queda cerrar la sesión, y al volver, cuando en cualquier lugar del Finder, usemos el menú contextual, en Más > Scripts aparecerá nuestro Nuevo documento de texto, el cual nos abrirá una ventana donde introduciremos el nombre del archivo y el editor para que pongamos lo que queramos.

Entradas relacionadas

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Entorno de desarrollo de Android con Netbeans

Enero 19th, 2009 - [Enlace local]

Android en netbeans

El entorno normal para desarrollar en la plataforma Android es Eclipse, pero por suerte, todos aquellos que usamos NetBeans como IDE, también disponemos de un entorno para el desarrollo de aplicaciones de Android. Para ello debemos instalar varios complementos (3), que nos darán toda la funcionalidad necesaria para trabajar con esta plataforma.

El método más sencillo de instalación es a través del Administrador de complementos, para ello vamos a:

Herramientas > Complementos y ahí la pestaña Configuración

Le damos al botón Agregar, le damos el nombre que queramos y añadimos el siguiente enlace:

http://kenai.com/downloads/nbandroid/updates.xml

Automáticamente comprobará el sitio y en Complementos disponibles nos aparecerá Android, bajo la categoría Mobility. Con lo que ya sólo nos queda seleccionarlo y empezará la instalación de los complementos. Y así, tras reiniciar, ya podremos crear nuevos proyectos para esta plataforma.

Enlace: Android plugin for Netbeans

Entradas relacionadas

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

X enlaces de esta semana

Enero 18th, 2009 - [Enlace local]

Unas cuantas cosas que me han llamado la atención esta semana:



La LOPD y el Cloud Computing



Interesante artículo sobre las implicaciones legales de externalizar los datos.



100 Interview Questions for Software Developers



Preguntas que debes hacer (o para las que te debes preparar) en una entrevista de trabajo.



Getting ready for the cloud



Desplegar una aplicación Java existente en Amazon EC2.

» Leer más, comentarios, etc...

design-nation.blog/es

Keep Your Word 1.4

Enero 14th, 2009 - [Enlace local]

Keep Your Word 1.4 acaba de publicarse. Las nuevas funcionalidades más importantes son:

Aquí están las release notes completas, y la aplicación puede descargarse de aquí.

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Conectando los puntos

Enero 13th, 2009 - [Enlace local]

Esta mañana, uno amigo me ha pasado por Google Talk un enlace a un vídeo que Steve Jobs dió en la Universidad de Stanford (hace un par de años). En un principio, como no tenía ni idea de que iría, pensé en verlo sólo por la presencia del “Dios” de todo maquero (nuevo o viejo), esperando ver si dice algo interesante… y ya creo que lo hizo. Jamás hubiese pensado que me llegaría tan adentro, es sin duda uno de las mejores interpretaciones que he escuchado sobre cómo afrontar la vida y con qué actitud.

Aquí os dejo el vídeo, espero que os sirva tanto como a mi:

Entradas relacionadas

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Buenas prácticas: Tratamiento de Excepciones

Enero 13th, 2009 - [Enlace local]

Entrada rápida que resume algo que ya he escrito en otros sitios, y que me gustaría tener público (¡y recibir comentarios!).



Criterios a tener en cuenta al tratar excepciones en Java:

Contraejemplos (ejemplos de cómo no se deben hacer las cosas):

Ejemplos válidos en otras circunstancias:

Actualización 0901131738: este es un tema del que se pueden encontrar infinidad de fuentes, como en java.net, con más detalle, en inglés.

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Reunión del GUM Murcia

Enero 12th, 2009 - [Enlace local]

Bueno, este sábado es la reunión del GUM (Grupo de Usuarios de Macintosh) Murcia, y la verdad es que estoy bastante ilusionado, ya que es mi primera “kedada” dentro del mundillo Mac, y que mejor que hacerlo con los que están más cerca :-) . Por si hubiese alguien interesado, la reunión es el próximo 17 de enero, a las 10 horas en el salón de actos de la Facultad de Informática de la Universidad de Murcia (Campus de Espinardo).

Más información en la web de GUM Murcia

Entradas relacionadas

» Leer más, comentarios, etc...

.: El Blog de Inwe :. » Programación

Usabilidad de los sistemas operativos

Enero 12th, 2009 - [Enlace local]

Hace poco recibí un correo muy interesante sobre un estudio que hicieron en no sé que univeridad, sobre el nivel de usabilidad de los sistemas operativos más usados (Windows, Linux, Mac OSX) según las taréas más comunes que se realizan. Estos fueron los resultados ;-)

Niveñ de usabilidad de los sistemas operativos

Entradas relacionadas

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Dos enlaces de esta semana

Enero 11th, 2009 - [Enlace local]

Uno de morralla comercial y otro de programación:



SOA ha muerto. Larga vida a los servicios



¿Qué significa "SOA ha muerto"? ¡Nada! Lo único que consiguen grupos como Burton con declaraciones como estas es cambiar las conversaciones de enteradillos que los directivos que no saben de qué están hablando mantienen entre reuniones. Igual, siendo malpensado, consiguen también redirigir inversiones: ya han conseguido vender su consultoría acerca de SOA, ahora tienen que conseguir vender otra, y ya sabemos que este es el año del Cloud Computing...



Lead developer, Are Yoy Mentoring?



Un buen artículo sobre cómo reintegrar a un programador negativo. En vez de quejarse, tener iniciativa, preguntarle, utilizar herramientas de análisis estático...

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Introducción a Seam

Enero 8th, 2009 - [Enlace local]

Como apoyo para una próxima sesión de formación he preparado una modesta presentación/resumen de lo que es Seam, muy por encima. Las principales fuentes son el manual de referencia y "Seam in Action", así que si quieres conocerlo en profundidad, nada como las fuentes originales, mucho más detalladas y sin mis gazapos (ni tonterías de mi cosecha ni relación con trabajo previo mío).



» Leer más, comentarios, etc...

Información legal y técnica