Noticias Weblogs Foros Wiki Código
Sponsors:

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

Anunciarse aquí

PlanetaCódigo en inglés

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

Programacion, literatura y otras artes menores

Compatriotas malvados, hosting miserable

Febrero 29th, 2008 - [Enlace local]

Como les comenté ayer, he iniciado el proyecto CubaOpina, que pretende ser un foro abierto donde todos puedan dar sus opiniones sobre Cuba. Ayer también presenté este proyecto en la lista de linux de Cuba, y hoy por la mañana el sitio estaba inaccesible para la isla, luego de preguntar al servicio técnico de la empresa de hosting, me enviaron esta respuesta:

Hello,

Some abuser from Cuba has tried to flood your server. Blocking if Cuba IP range was the only way to solve the problem and keep the server online.

Best Regards,
Andy

Me imagino que el causante de esos ataques haya sido un pobre idiota aburrido, pues dado el carácter abierto del sitio, donde cualquiera puede registrarse y decir lo que le de la gana, lo mejor hubiera sido haber tomado el sitio por asalto y empezar a escribir todas las barbaridades que se le ocurrieran. Por lo que asumo que es un idiota que tenía ganas de joder, sin ningún tipo de tendencia política; o fue alguien que está en contra de en un debate abierto y conciliador, espero que sea lo primero.

Por otra parte la empresa que me brida el hosting quedaron aún peor, pues ¡ bloquearon a todas las IPs de un país por un solo atacante! es algo que me resulta inconcebible, estoy seguro que cada dia, o al menos cada mes, algún servidor de ellos recibe algún tipo de ataque, y entonces, si el ataque viniera de Canadá(la empresa es de EEUU) ¿ bloquearían todo el tráfico de Canadá? Estoy seguro que no, no quiero sacar conclusiones comspiranoicas, prefiero pensar que entraron en pánico y en su incompetencia les dio por eso…

Ya veremos como sigue este culebrón, que parece que están de moda, aun ahora en cuba no se puede ver el sitio.

Actualización: Ya hoy 2 de marzo el sitio es visible desde Cuba. Veré que medidas puedo tomar para que está situación no se repita.

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

Picando Código

509 Bandwidth Limit exceeded

Febrero 29th, 2008 - [Enlace local]

bandwidth.jpgÉste es como el tercer o cuarto mes seguido que tengo éste problemita en el sitio… Excedido el límite de consumo de ancho de banda.
El mes pasado me pasé a un plan más grande en el servidor, porque la transferencia del plan anterior se terminaba en los primeros 20 días del mes. Ahora volvió a pasar en febrero, ¡que hasta tiene menos días!

Estoy contento, porque tengo un crecimiento bastante estable en cuanto a la cantidad de visitas, lectores, etc., lo que implica el crecimiento en el consumo de ancho de banda. Estoy viendo qué medidas puedo tomar para disminuir la carga de la página. Por ahora, ya cambié el tema de Wordpress haciéndolo más liviano, y activé la protección contra hot-linking, por las dudas que hayan imágenes linkeadas desde otros sitios que me consuman ancho de banda. Acepto sugerencias de todo tipo.

De todas formas, el hosting respondió bien de bien y no estuvo más de unas horas caído. Gracias a Esteban y a Infranetworking por el soporte:


Web Hosting Profesional

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

Picando Código

Jeff Atwood: “Repito: No escuchen a sus usuarios!”

Febrero 29th, 2008 - [Enlace local]

Coding HorrorMenuda coincidencia, después del post sobre Usuarios, leí en Coding Horror un post titulado “I repeat: Do not listen to your users” (”Repito: no escuchen a sus usuarios”). Jeff Atwood es el autor, y como la mayoría de sus posts, no tiene desperdicio. Este en particular fue escrito a raíz de Listening to Users (”escuchando a los usuarios”) de Paul Buchheit. Tiene un enfoque más amplio y general que lo que yo escribí, pero sigue con el tema de la relación con el usuario.

Cito algunos fragmentos para agregar más al tema:

“Escuchar a los usuarios es algo tramposo. Los usuarios generalmente no saben lo que quieren, y aunque supieran, la comunicación probablemente se entrevere en algún momento entre ellos y ustedes. De ninguna manera deberías ignorar a los susuarios sin embargo. La mayoría de las personas se irá silenciosamente para siempre si tu software o sitio web no satisface sus necesidades. Los usuarios a los que le importa lo suficiente para darte retroalimentación merecen tu atención y respeto. Están esencialmente encargándose de diseñar tu producto. Si no escuchas atentamente y respondes educadamente a todo el feedback de los clientes, te estás preparando a tí mismo eventuales fallas.

Es mala educación no escuchar a tus usuarios. Entonces cómo reconciliamos esto con la primera regla de usabilidad– No escuchamos a los usuarios?

Para descubrir qué diseño funciona mejor, observa a los usuarios mientras intentar realizar tareas con la interfaz de usuario. Éste método es tan simple que muchas personas lo pasan por alto, asumiendo que debe haber más en el testing de la usabilidad. Se concentra en las reglas básicas de usabilidad.
-Ver a la gente hacer
-No creer lo que la gente dice que hace.
-Definitivamente no creer lo que la gente predice que pueden hacer en el futuro.

Creo que Paul acertó, pero es fácil de errar. La frase relevante en el post de Paul es que vemos qué cosas trabajan, lo que implica medida y correlación. No hay necesidad de mirar directamente a los usuarios (aunque nunca hace daño) cuando tienes logs detallados mostrando lo que hicieron actualmente. Junta feedback del usuario, luego correlacionalo con la información de lo que esos usuarios están haciendo.

No solo implementes pedidos de funcionalidades de “representantes de usuarios” o “analistas de negocios”. La forma más común de errarle en la usabilidad es escuchar lo que los usuarios dicen en vez de realmente mirar lo que hacen. Las especificaciones de requerimientos siempre están mal. Debes prototipar los requerimientos rápidamente y mostrarle a los usuarios algo concreto para encontrar lo que realmente necesitan.

Es cuestionable actuar únicamente en el feedback de usuario. No importa con cuánta buena intención, estás adivinando. ¿Porqué adivinar cuando puedes tomar acciones basado en información fría y persistente? Actuar en base al feedback del usuario y métricas detalladas de uso para tu aplicación o sitio web — ese es el estándar dorado.

El post continua comentando ejemplos en las compañías de videojuegos Valve y Bungee, con ejemplos de datos reales y cambios aplicados a los productos finales en base a dicha información.
Finaliza con:

“Asegurate que tu aplicación o sitio web esté capturando la actividad del usuario en una manera útil y significante. El feedback del usuario es importante. No me malinterpreten. Pero nunca trabajen únicamente basado en el feedback del usuario. Siempre tengan algún tipo de información de la actividad del usuario para corroborar y apoyar el valioso feedback que están obteniendo del usuario. Ignorar el feedback de usuario puede estar aprontándote a un eventual fracaso, pero actuar ciegamente para cada requerimiento del usuario ciertamente es un fracaso.”

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

Navegapolis

Un trocito de la historia de mi ciudad

Febrero 29th, 2008 - [Enlace local]

boletin"Gobierno político de la provincia de Zaragoza. Por la adjunta proclama que acabo de dirigir á este benemérito cuanto heroico vecindario se enterará V.S. de la sorpresa que hizo la facción de Cabañero en la madrugada de hoy á esta capital.
Tan audaz empresa ha sido castigada cuan merecía: mas de 100 muertos y mas de 600 prisioneros han quedado en nuestro poder en menos de 4 horas...
"

El proximo miércoles celebramos en Zaragoza la "cincomarzada", y no me resisto a compartir con mis paisanos, y con todos los que gustáis de la historia, en este post "off-topic" la sabrosa descripción de la historia de esta ciudad, que relata "en directo" este documento que he encontrado ojeando la biblioteca noble de la empresa:  el boletín original que con carácter extraordinario publicó la Diputación Provincial de Huesca el 7 de Marzo de 1838 (!) con la proclama por la victoria de Zaragoza a la "facción compuesta de cuatro batallones mandada por el infame Cabañero que tuvo la osadía de penetrar por sorpresa en la capital de Aragón en la noche...."

Enlazo a esta imagen de la cabecera el boletín completo:

 boletin

 

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

niko's mini factory

Spring Integration

Febrero 29th, 2008 - [Enlace local]

read this in english

El nuevo miembro de la famila, Spring Integration, nos permite utilizar los famosos patrones de integración dentro de nuestra aplicación, sin alejarnos del modelo de programación de Spring.

Con una configuración tan sencilla como esta se logra leer ficheros de un directorio y procesarlos:


<?xml version="1.0" encoding="UTF-8"?>

<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/integration"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">

<message-bus/>
<channel id="fileInputChannel" />
<annotation-driven/>

<context:component-scan base-package="com.habuma.si.example" />

<file-source directory="/Users/wallsc/sucker"
poll-period="1000" channel="fileInputChannel"/>
</beans:beans>
----
package com.habuma.si.example;
import org.apache.log4j.Logger;
import org.springframework.integration.annotation.Handler;
import org.springframework.integration.annotation.MessageEndpoint;

@MessageEndpoint(input = "fileInputChannel")
public class FileSucker {
private static final Logger LOGGER = Logger.getLogger(FileSucker.class);

@Handler
public void suckAFile(String fileContents) {
LOGGER.debug(fileContents);
}
}


Pero todo no acaba allí. Los mensajes de entrada (los ficheros en el ejemplo anterior) se pueden enrutar hacia otras salidas: otros ficheros, colas JMS, servicios web o cualquier sistema del que dispongamos (o desarrollemos) adaptadores.
Del mismo modo, los mensajes de entrada pueden provenir de diversas fuentes.

El ejemplo anterior está amablemente copiado de Spring Integration: Meet the channel adapters. En el mismo blog de Craig Walls encontraremos mas información y ejemplos de utilización.

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

programania

Zend_Form: ejemplo básico

Febrero 29th, 2008 - [Enlace local]

Necesidades habituales de un programador al desarrollar formularios web:

  1. generar el html
  2. validar la entrada de datos
  3. filtrar la salida
  4. gestionar los datos por defecto, datos tras error de validación, etc.
  5. gestionar los mensaje en caso de error.

Os pego aquí un ejemplo básico de uso donde se puede ver como, además, con una simple línea cargo en un desplegable los dato de la BD:

$form = new Zend_Form();

$form->setAction(’/index/registrarse’)
->setMethod(’post’);

$form->clearDecorators();

$form->addDecorator(’FormElements’)
->addDecorator(’HtmlTag’, array(’tag’ => null))
->addDecorator(’Form’);

$decorators = array(
array(’ViewHelper’, array(’tag’ => null)),
array(’Errors’, array(’tag’ => null)),
array(’Label’, array(’tag’ => null, ’separator’=>’
‘)),
array(’HtmlTag’, array(’tag’ => null)),
);

$form->addElement(’select’,'usuarios’, array (
‘MultiOptions’=>Zend_Registry::Get(’dbAdapter’)->fetchPairs(’SELECT IdUsuario,Nombre FROM usuarios’),
‘label’ => ‘Elige usuario’,
‘validators’ => array(’NotEmpty’),
‘required’ => true,
‘decorators’ => $decorators
)
);
echo $form;

En éste ejemplo hago bastante hincapié en el uso de decorators. Que yo creo que es lo que peor está explicado en la documentación del Zend_Form.  Lo mejor es que uno puede cargar con Zend_Registry un array de decorators, en vez de declararlo cada vez como he hecho yo, de tal manera que si cambia el array, cambiará el HTML de todos los formularios. ¡máxima reutilización!

El Zend_Form ofrece una manera elegante de gestionar todo lo relacionado con la programación de formularios de manera muy sencilla.

NOTA: cada vez que copipasteo código PHP en el blog sale un chorizo. ¿algún plugin de wordpress para “embellecer” mi código?

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

{ Radamanthys }

Grupo PHP Costa Rica

Febrero 29th, 2008 - [Enlace local]

php cr

¿De que se trata?

Desde hace un tiempo nació la idea y necesidad de que los desarrolladores de PHP tuvieran un grupo para compartir sus ideas, experiencias e incrementar sus conocimientos acerca este lenguaje tan apasionante.

Primero que nada, este grupo no pertenece a una persona o empresa en particular, si agradecemos el apoyo de las empresas y las personas que contribuyen con el grupo. Para tener claro el propósito del grupo, se crearon la misión y visión del mismo.
Misión

Compartir el conocimiento y la experiencia de la comunidad de desarrolladores PHP en Costa Rica haciendo uso de diferentes medios de comunicación que faciliten el crecimiento a nivel profesional.

Visión

Mantener una comunidad activa reconocida a nivel nacional e internacional, que sea apoyo para mejorar el nivel de calidad y la eficiencia de los desarrolladores.

Como participar

Participar es muy fácil. El grupo tendrá reuniones mensuales en la noche, debido a que los desarrolladores en PHP trabajamos (si no tenés trabajo también estas invitado… de fijo conseguís ;) ). En estas reuniones estaremos hablando sobre temas que nos importan a todos relacionados con PHP. Si es importantísimo tener un lugar donde reunirnos, asi que si alguien (empresa o persona) desea aportar al grupo con un lugar para llevar a cabo la reunión, se le agradecerá muchísimo.

En primera instancia se desea tener una reunión mensual, la cual se llevara a cabo en la primera semana de cada mes. La locación donde se haga se estará anunciando, aunque se desea por mayor comodidad un lugar céntrico (Paseo Colón, San Pedro, etc).

Tambien se puede involucrar en el grupo de una manera mas activa, preparando temas y exponiendolos en las reuniones, escribiendo sobre temas importantes o contestando preguntas que otros usuarios puedan tener. También cualquier otra ayuda en alguna otra manera será mas que bienvenida.

Si quiero aclarar que este no es un grupo de enseñanza, es decir, no vamos a enseñar PHP, aunque si algun miembro es nuevo en el lenguaje va a encontrar este grupo de mucha ayuda para evacuar dudas y adquirir experiencia.

Gracias por visitar el sitio y espero que se una a esta iniciativa para mejorar el nivel de PHP en el país :)

Feliz PHP!

Por cierto, precisamente hoy(o ayer xD ) estuve en la charla que se dio en la ECCI, en la UCR, de la sede en San Pedro. Se abarcaron temas como: ‘Introducción a los Patrones de Diseño’ y se atendio un poco aspectos relacionados sobre la implementacion de medidas de seguridad que deben ser comtempladas en el diseño de sistemas de este tipo.

Para mas informacion puede visitar la pagina principal del grupo, acceder al foro y/o suscribirse a la lista de distribucion.

Mas Informacion: http://www.costaricaphp.org

ShareThis

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

Programacion, literatura y otras artes menores » Programación

Nuevo proyecto de caracter social

Febrero 29th, 2008 - [Enlace local]

Aparte de mi proyecto personal, que ya voy a decir lo que es, pa que tanto misterio, estoy haciendo un buscador de productos, ya lo tengo casi todo hecho, busca e indexa bastante bien, ahora estoy en la fase de diseñar el sitio como tal y agregarle funcionalidades “lindas”, que es otra manera de decir “valor agregado”. bueno ahí va eso, y desde ya me estoy comiendo las uñas pensando en el hosting, pues el proyecto va en java, inicialmente lo hice sobre glassfish(que es el que uso en la empresa y me gusta mucho), pero ya era demasiado así que lo migré a tomcat 6, no creo que falte mucho para presentarlo al mundo.

Pero no es de eso de lo que voy a hablar aquí, sino de CubaOpina, el cual es un proyecto que ha sido sencillo de implementar, pues no es más que un wordpress con inscripciones abiertas, pero cumplir su objetivo social si es un verdadero reto, pues pretendo que sea un foro donde todo cubano o no cubano, que quiera hablar sobre cuba, bien o mal, a favor o en contra del gobierno, pueda hacerlo, y además que lo haga con sobriedad y respeto, sin provocaciones o fanatismos, y quiero lograr todo eso sin censura de ningún tipo(solo al SPAM).

La idea nació en meneame.net a raíz de un debate con otro cubano que aun vive en la isla, bueno la idea es nuestra, ya veremos que sale.

Quien lea esto y tenga una mejor idea para implementar este sitio, que no sea wordpress, será bienvenido, sería genial algo más… flexible.

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

Najaraba.com: Software libre, negocios y más.

Los grandes programadores

Febrero 28th, 2008 - [Enlace local]

Hace unos años me regalaron (a mi y a Virginia, fue un regalo compartido de un jefe) un libro que leí con mucho interés. Ahora el autor del regalo, escribe sobre él en esta entrada del CES Digital: Los maestros programadores. El hoy arquitecto jefe de software de Microsoft, Ray Ozzie, se explayaba así: “los proyectos complejos de programación dirigidos por directores que no son

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

Picando Código

WebCómic: Garfield sin Garfield

Febrero 28th, 2008 - [Enlace local]

Una que descrubí de casualidad:

“¿Quién hubiera adivinado que cuando sacas a Garfield de las historietas de Garfield, el resultado es un cómic aun mejor sobre esquizofrenia, desorden bipolar, y la vacía desesperación de la vida moderna? Amigos, conozcan a Jon Arbuckle (Jon Bonachon en español). Riamos y aprendamos con él en un profundo viaje dentro de la torutada mente de un asolado y joven hombre común mientras lucha una batalla perdida contra la soledad y la adicción a las metaanfetaminas en un tranquilo suburbio americano.”

Realmente, quién lo hubiera imaginado… El cómic sin Garfield es totalmente diferente, y nos deja concentrarnos en la enferma mente de este pobre hombre, dueño del obeso gato come lasaña…

A continuación algunos ejemplos para que conozcan el retorcido humor de la gente de “Garfield minus Garfield” que comparto totalmente:

Derecho al feed reader…

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

Navegapolis

Scrumy

Febrero 28th, 2008 - [Enlace local]

scrumyNo es una herramienta de gestión, es más bien un juguete, una dirección divertida que uno no sabe si tomarsela a broma o si evolucionará hacia algo, pero tiene gracia. No hay que registrarse, es totalmente gratis. Para crear una pizarra de tareas basta con poner el nombre que queramos usar en la url tras http://www.scrumy.com por ejemplo: http://www.scrumy.com/navegapolis... y ya está.

Basta con añadir historias en la columna de la izquierda que se pueden priorizar hacia arriba o abajo, arrastrándolas con el ratón, y en la fila de cada una se pueden ir añadiendo "post-it" virtuales con descripcionesd de tareas y asignaciones.

En esta página y  vídeo los autores explican el proyecto, y en este vídeo se puede comprobar cuán serios y circunspectos son, y cómo un día mientras desayunaban una voz les iluminó para desarrollar esta herramienta :-)

 

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

programania

No hace falta casarse con el Zend Framework

Febrero 28th, 2008 - [Enlace local]

Lo explican bastante bien en éste artículo: no hace falta casarse con el Zend Framework para utilizarlo. Sus clases están pensadas para funcionar de manera individual. Una de sus mayores virtudes es que, mientras otros frameworks pueden obligarte a utilizar toda su estructura para poder aprovecharte de sus ventajas, del ZF puedes elegir sólo lo que te interesa.

¡No hay excusa para no usarlo!   ;-)

Via: developer tutorials.

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

Navegapolis

Scrum y XP desde las trincheras

Febrero 28th, 2008 - [Enlace local]

Burn downScrum and XP from de Trenches es un excelente libro con la visión práctica de la implantación de un patrón Scrum + Extreme Programming, y desde ya está también disponible la versión en español, gracias al estupendo aporte de Angel. Gracias!

 

 

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

Picando Código

Cita de la clase de ayer: El usuario

Febrero 28th, 2008 - [Enlace local]

Luis D. (profesor): “Vos sos el enemigo del usuario.”
Fernando (yo): “Totalmente.”
Luis D. : “Totalmente.”

Hoy(<ezquizofrenia>mensaje para mi yo futuro: “Cuando publiques esto, ya va a ser ayer”</ezquizofrenia>) llegué tarde a clases, ya que como había dicho el profesor en una clase anterior “a veces tenés que estar en 3 lugares al mismo tiempo”. En mi caso, tenía que estar en el trabajo arreglando un defecto que saltó en el software a raíz de una modificación, una reunión por el hosting de una página web, y la clase de taller de gestión…

Pero bueno, cuando llegué estaban hablando sobre las funciones de los distintos roles que participan de un proyecto de software: el cliente (el que pone la plata), el usuario (el que va a usarlo), el experto en el dominio (el que nos va a ubicar en el contexto del problema) y nosotros los desarrolladores.

A poco que entré el profesor dijo esta frase que disparó el reflejo en mí de decir en voz alta: “Totalmente”, lo que reafirmó.

Ahora, tampoco es tan así, ya que el usuario puede ser el peor enemigo, pero también el mejor aliado, ya que como nos dijo, es uno de los que va a vender el software. Vende más que alguien diga “este software anda bárbaro, vinieron los programadores, me lo explicaron, me respondieron las dudas de buena gana, y cuando hubieron errores vinieron a arreglarlo enseguida o a explicarme en qué me había equivocado”. Totalmente opuesto a : “Nah, este software se cae a pedazos, los tipos son unos culo rotos, y no vienen nunca son terribles chantas”

De la experiencia que he tenido, puedo decir que en general, cuando estemos desarrollando, va a ser el enemigo. Tenemos que pensar que el usuario es el ser más estúpido e improbable que existe. Por ejemplo: Uno puede pensar: ¿Porqué voy a controlar que la fecha de nacimiento sea menor a 2045? ¿Quién va a ser tan estúpido de poner eso? ó ¿Porqué en esta caja de texto de Nombre voy a controlar el máximo de caracteres para evitar un overflow? ¿A quién se le va a ocurrir ingresar tantos caracteres? ó ¿Quién va a clicquear de nuevo este botón cuando ya fue clickeado y hay una barra de progreso mostrando que el sistema está trabajando? Supongo que se habrán imaginado quién… De todas formas como que ésto se controla por un tema de calidad… o algo así supongo. Vas a querer que tu software controle ese tipo de cosas.

Tener que trabajar en esas “nimiedades”, sobretodo cuando estamos embalados en partes más interesantes del código, a veces puede resultar bastante tedioso, y generar pensamientos negativos contra el usuario final. De todas formas, hay que tratarlo bien, respetarlo, y buscar la forma de llevarse. Como se dijo en clase, se va a sentir amenazado por el programador: “Éste me viene a sacar el trabajo”, “Éste va a cobrar quinientos dólares por venir a hacer dos pavadas y yo cobro eso en dos meses….”, etc.

Es mejor si se consiguen usuarios más familiarizados con la tecnología, pero nunca va a faltar el que le tiene fobia a la computadora o piensa que internet se limita al MSN y las diapositivas sin sentido por mail (quien no conozca a nadie así que tire el primer comentario).
Pero es una de las tantas cosas que hay que aprender para convertirse en un buen desarrollador, a menos que podamos contratar a gente que lo haga por nosotos :)

Iba a dejar el post en la cita del diálogo “totalmente” nada más, pero me colgué escribiendo… Las clases vienen bastante dinámicas por el momento. Así que lo dejo por acá, seguimos en los comentarios del post.

<ezquizofrenia>Mensaje para mi yo futuro: “¿Viste que está bueno comunicarse entre los distintos yo a lo largo del tiempo? Hay que hacerlo más seguido. Respondeme en los comentarios.”</ezquizofrenia>

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

Pensamientos ágiles

Se ha terminado un ciclo

Febrero 28th, 2008 - [Enlace local]

Ayer, se terminó un ciclo en mi vida. Se que lo tenía un poco callado, pero ahora que ya es oficial lo puedo desvelar. He dejado esto:



Que era mi empresa y paso a: ¡Tener mi propia empresa! Pues sí, menudo cambio. Me he aguantado para no decirlo pero desde hace unas semanas que se puede decir que soy empresario. La empresa está ya registrada en Irlanda, pero me perdonaréis que no desvele detalles todavía, hasta cerrar unos cuantos flecos que tengo abiertos.

La principal razón para crear una empresa es que cambio de modo de trabajo. Ahora paso a trabajar como IT Contractor, o vamos, lo que llamaríamos autónomo, o Freelance en España. Un aspecto peculiar de la industria irlandesa es que de unos pocos años hacia aquí, es bastante común el crear tu propia compañía para hacer este tipo de trabajos, especialmente si vas a pasar más de seis meses trabajando para la misma empresa, ya que bajo la ley irlandesa, un juez podría decidir que eres a todos los efectos empleado de dicha compañía, y esto potencialmente la expone a problemas jurídicos.

La razón secundaria, pero no por ello menos importante, es que tener mi propia empresa me permite abrir unas cuantas posibilidades en las que estoy trabajando. Una es jLibrary, con el que se podría abrir una línea de soporte, aunque esto es sólo especular; y otra es ... bueno, eso por ahora es secreto :-)

Pues eso, con un poquillo de suerte mi primer contrato se cerrará a la vuelta de unas mini vacaciones en España que empiezan hoy. Así que no tendréis noticias mías estos días, pero no os preocupéis que daré muchos más detalles en breve.

¡Nos vemos en unos días!

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

niko's mini factory

Links for 2008-02-27 [del.icio.us]

Febrero 28th, 2008 - [Enlace local]

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

Picando Código

Lanzamiento de fav.or.it - Nuevo servicio web 2.0

Febrero 27th, 2008 - [Enlace local]

Fav.or.itDe la mano del programador Nick Halstead, llega éste revolucionario sistema web 2.0 que comienza su beta privada. Seguramente una nueva y divertida forma de leer nuestros feeds:

Hoy comenzamos la beta de fav.or.it,
fav.or.it es un producto único que no solo permite que leas contenido a través de la blogósfera sino que también puede interactuar con ella sin dejar el sitio. Esto es importante para que podamos enfocarnos a una nueva audiencia que no tienen el entendimiento técnico de los actuales productos del mercado.

Las características clave de fav.or.it:

Para más información sobre fav.or.it visita el sitio el cual incluye capturas de pantallas del producto y estará añadiendo screencasts en los próximos días.

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

Najaraba.com: Software libre, negocios y más.

Scrum y XP desde las trincheras castellanas

Febrero 27th, 2008 - [Enlace local]

No puedo dejar de recomendar y agradecer la traducción que se han trabajado en Proyectalis del magnífico libro publicado en InfoQ Scrum and XP from the Trenches. Ahora tenemos este libro en un primer borrador traducido a castellano en: Scrum y Xp desde las trincheras . Si eres de los que le da pereza leer en inglés, ya no tienes excusa.

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

Variable not found

Ojo a los antipatrones

Febrero 27th, 2008 - [Enlace local]

Bonito plato de spaghettiSabemos que los patrones son plantillas reutilizables que podemos usar para solucionar problemas habituales en el proceso de desarrollo de software. Así, permiten utilizar soluciones fiables y bien conocidas a problemas concretos, aprovechando experiencias previas como base para la consecución de mejores resultados en los nuevos desarrollos.

Pues bien, justo en el lado opuesto se encuentran los antipatrones, que definen situaciones y comportamientos que, según experiencias anteriores, nos conducen al fracaso en proyectos de desarrollo de software, es decir, son soluciones o planteamientos que se han demostrado incorrectos.

Y es ahí donde radica su interés: la observación y conocimiento de los mismos puede evitarnos resultados desastrosos, o actuar como alertas tempranas ante decisiones o dinámicas incorrectas, permitiéndonos prevenir, evitar o recuperarnos de estos problemas.

Al igual que en los patrones, su descripción está relativamente formalizada y suele recoger los siguientes aspectos:


Por ejemplo, un resumen del clásico antipatrón que reconoceréis muy rápidamente, el llamado spaghetti code:

Nombre:Spaghetti Code
Tipología:Desarrollo
Problema:Existencia de una pieza de código compleja y sin apenas estructura que dificulta enormemente su mantenimiento posterior
Síntomas y consecuencias:
  • Tiempo de mantenimiento excesivo debido a la necesidad de estudio del código
  • Código no reutilizable
  • Aparición del temido "es mejor reescribirlo"
  • Métodos y funciones muy extensas
  • Abuso de variables globales
Causas:
  • Inexperiencia de desarrolladores
  • Reutilización de código de prototipos rápidos
  • Ausencia de diseño previo a la implementación
  • Desarrolladores trabajando en solitario
  • Falta de revisiones de código
Solución positiva:
  • Aplicar refactorización mientras se programa
  • Usar disciplinas de desarrollo específicas, métricas y buenas prácticas
  • Realizar y desarrollar el diseño del sistema antes de implementar

Según según la Wikipedia, los antipatrones se clasifican en los siguientes grupos, atendiendo a las áreas a las que afectan:

Por no hacer el post eterno sólo he recogido unos cuantos, aunque existen cientos de ellos, y con una gran variedad temática: antipatrones para el desarrollo guiado por pruebas (TDD), antipatrones de manejo de excepciones, para el uso de arquitecturas orientadas al servicio (SOA), de rendimiento, de seguridad, centrados en tecnologías (p.e., J2EE antipatterns) o según el tipo de software (sistemas de gestión, tiempo real, videojuegos, etc.).

Y como conclusión personal, decir que me he visto reconocido en multitud de ellos, lo cual significa que muy descaminados no andan. Es más, si hiciera una lista con patrones y otra con los antipatrones que utilizo o he utilizado, la segunda tendría más elementos que la primera... ¿quizás es momento de reflexionar un poco?

Publicado en: http://www.variablenotfound.com/.

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

Pensamientos ágiles

Y yo que creía que conocía todos los tratamientos

Febrero 27th, 2008 - [Enlace local]

Pues como toda la vida, ¿no? Señor, señora, señorita, Mr., Ms., Miss., ...

Pues va a ser que no. Por aquí, al menos a la hora de buscar seguro de coche con Quinn Direct hay más formas de tratamiento:



Y es que aquí están en todo!

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

programania

¿Por qué no usamos Java EE 5?

Febrero 27th, 2008 - [Enlace local]

Acabo de reeler un artículo Antonio Goncalves y me ha llamado mucho la atención, van a hacer 2 años desde que se acabó la release version de Java 5 EE, pero ¿en cuántos proyectos se usua Java 5 EE? La respuesta es en casi ninguno. Veamos las razones que da Antonio, la realiadad es que Java 5 es más una ruptura que una continuación, por otro lado hay un montón de empresas que han invertido mucho en la JDK 1.4, y hacer un cambio tan grande no siempre es sencillo. Otra importante razón puede ser que la mayoría de los servidores de aplicaciones no han importado Java 5 EE, el número uno en grandes proyectos WebSphere no es Java 5 compatible, JBoss tiene su versión 5 en fase Beta, Weblogic ha sido comprado por Oracle y sólo Dios sabe que puede pasar, así que la gente no se ha arriesgado en absoluto.

Sun por su lado ha apostado abiertamente por Java 5 EE haciendo indispensables las annotations para EJB 3.0, aunque siendo sinceros, la nueva nomenclatura utilizada por Sun no es que ayude mucho a su comercialización, el hecho de que los hayan llamado EJB hace a los programadores recordar las viejas pesadillas con las interfaces remota y local típicas de los EJB 2.1, o que una vez más los hayan llamado Entity Beans, como a los Entity Beans de EJB 2.1. EJB 3.0 no está ni mucho menos extendido, ya que en parte, esta nomenclatura asusta a los programadores, cerrando una posible vía de difusión de Java 5 EE.

Otro fallo de Sun ha sido la nomenclatura utilizada para sus plataformas JDK 1.4, Java EE 5, JDK 1.5, Java 5, Java SE 5. El desarrollo ha sido rápido y no se ha respetado ningún criterio así que nadie sabe exáctamente de qué se está hablando porque es un lio. Una persona puede ir a una entrevista y decir que es un experto en Java 5 EE y alguien se volverá hacia él y le comentará que está obsoleto ya que ellos usan Java 6 y no Java5.

Mi experiencia personal al respecto ha sido corta para intensa, cuando se migró en mi anterior empresa de WebSphere 5 al Rad 6 (WebSphere 6), que incorporaba la JDK 1.4 en vez de la 1.3, un cambio a priori no muy traumático, me pasé un mes enfrascado migrando todos mis proyectos y el cambio no fue fácil ni mucho menos. Me gustaría saber vuestra visión y vuestra experiencia personal.

Os dejo el artículo original para que le echéis un vistazo:

http://java.dzone.com/articles/why-are-we-not-using-java-ee-5

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

Mal Código

Evaluación Perezosa

Febrero 27th, 2008 - [Enlace local]

Hoy quisiera hablar de una de las características de Haskell más fascinantes, la evaluación perezosa. Y me han entrado ganas de hablar de ello al ver la utilización que se da a la evaluación perezosa en el problema repMin de Richard Bird. El problema viene a ser el siguiente: reemplazar los valores en los nodos de un árbol por el mínimo valor de este mismo árbol, y solo recorriendo el árbol una

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

Arragonán

Integrar Spring y Struts

Febrero 27th, 2008 - [Enlace local]

Hace ya algún tiempo que ando tocando algunas cosas de Spring framework. Un framework que simplifica el desarrollo de aplicaciones J2EE, que entre otras cosas nos permite desacoplar partes de nuestro código gracias a Spring IoC.

A raíz de un post en programania, en donde explican dos formas de integrar spring con struts, voy a aprovechar para explicar aquí las otras dos alternativas para hacerlo.

La pega que surge al delegar el manejo de los Actions a Spring con DelegatingRequestProcessor y DelegatingActionProxy, es que hay que definir en el beans.xml nuestros actions de struts. En el primer caso, en el struts-config definiremos (como siempre) nuestros actions, por lo que deberemos mantener las mismas actions en dos XML diferentes, sólo cambia que definimos:

controller processorClass = “org.springframework.web.struts.DelegatingRequestProcessor”

mientras que en el segundo, para cada action de struts-config le pondremos el type DelegatingActionProxy:

type = “org.springframework.web.struts.DelegatingActionProxy”

En conclusión, es recomendable delegar el manejo de las acciones a spring aunque tengamos que mantener dos XML diferentes, ya que la integración es más transparente y además tendremos la opción de utilizar Spring AOP. Mientras que extender de ActionSupport resultaría útil para utilizar varios contextos de spring distintos.

Para encontrar una explicación mucho más detallada y con ejemplos, en developerWorks hay un artículo disponible.

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

Pensamientos ágiles

Ryanair da una lección de como no lanzar un sitio web

Febrero 27th, 2008 - [Enlace local]


Hace unas semanas, Ryanair anunció que iba a actualizar su sitio web para introducir un nuevo sistema de reservas y adaptarlo a algunos requisitos de la regulación europea. Como consecuencia de dicha actualización, anunciaron que su sitio web no estaría disponible durante todo un fin de semana, desde las 10pm del 22 hasta las 11pm del 25, o sea antes de ayer.

La verdad es que en un momento en el que el downtime se cuenta en horas, resulta un poco rocambolesco que un sitio de la magnitud de Ryanair anuncie que todo su sistema de reservas via web y su sistema de reservas telefónicas no estará disponible durante 3 días. Este tipo de cosas son admisibles en negocios tradicionales de lunes a viernes y de 9 a 5, pero en Internet, donde cada minuto de downtime es dinero perdido, resulta un poco chocante.

Pues bien. Para compensar las molestias, a alguien de product management (perdón por la asunción, pero no creo que a los responsables técnicos se les haya ocurrido esto) se le ocurrió el poner 2 millones de asientos a 10 euros. La consecuencia es que el pasado Lunes había una horda de caza-gangas probando ya desde primeras horas de la madrugada a ver si el sitio web estaba disponible y se podían realizar las reservas.

¿Se os ocurre mejor cosa para estrenar un sitio web que darle la bienvenida con millones de visitas? El resultado es que hoy parece que todavía la web sigue sufriendo muchísimo para simplemente darte una tarifa para un vuelo. A mi me ha tardado unos 10 minutos en responder, y la mayoría de los usuarios ha reportado tiempos de respuesta similares, además de haber reportado otros errores como tarifas que se alteran con refrescos o emails de confirmación perdidos en el limbo.

Los medios de comunicación ya se han empezado a hacer eco de estos problemas. CNN comentaba sin más que el sitio web estaba sufriendo algunos glitches. Computerworld también señalaba que la compañía estaba teniendo problemas "debido a la fenomenal demanda". Ayer por la noche, Ryanair pidió paciencia a sus usuarios por la lentitud del sitio web, escudándose en que el sistema ha estado despachando unas 20.000 reservas a la hora (5/sec.).

Independent.ie ha filtrado que otro de los problemas ha sido que Ryanair ha realizado la migración simultánea del frontend y del backend, lo que habría contribuido a agravar todavía más la situación.

El resumen es que la mala planificación de la migración de Ryanair ha traido muchas malas noticias a la compañía. Primero la pérdida de ingresos durante todo un fin de semana de parón, después el estar varios días con continuas quejas de los usuarios y con un sistema realizando menos reservas de las que se esperan, y para poner la guinda que las consultoras financieras como Davy rebajen la valoración de tu compañía ya que las consecuencias de la migración puede que impidan a la compañía llegar a su objetivo anual de 100 millones de pasajeros.

Photo via Tom Raftery@flickr que por cierto es Irlandés y tiene un muy buen blog.

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

The New Cult of Dead Cow » desarrollo

403, un dia sin Internet Explorer

Febrero 27th, 2008 - [Enlace local]

Via Accessibilidad y Usabilidad, me entero de una campaña por lograr un dia sin Internet Explorer. Esta campaña tiene como fin, tratar de concientizar a los usuarios de ese navegador ( sobre todo de la version <= 6 ) que usen algun otro navegador que sea mas respetuoso de los estandares web.

Para colaborar con este evento, he sacado un plugin para wordpress que evita el acceso al blog a los usuarios de IExplorer. Pero no se preocupen solo es por ese dia :D.

Aca les dejo el link de mi plugin ( nada del otro mundo ). Para instalarlo, solo cambienle el nombre por 403.php y subanlo a su carpeta de plugins de wordpress. Luego se van al modulo de plugins y lo activan y listo.

Wordpress Plugin 403 IExplorer

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