Tuesday, April 24, 2007

2 PATRONES BIZARROS

En esta oportunidad incluimos una muestra del libro de Mario Baracus "Chaotic Patterns with Bizarro"

Situacion: estan en medio de un ciclo de testing, los lideres nerviosos y los usuarios incisivos, el programador encerrado en un callejon de culpas por bugs de su disenio, se ve obligado a ocultar una excepcion que saltearia todas las capas hasta llegar al frontend y ecupirle al usuario en la jeta !!!

Que se le ocurre hacer ?, (total el problema de datos se originará mucho mas tarde, y se comprobará en otro modulo que hoy no testean...) Que hace ?, aplica un "Silenciador."

Veamos el ejemplo:

try {
// codigo explosivo
// ..
} catch (Throwable e){} // <-- "silentrace"

Resultado: Nadie se dio cuenta del problema, una vez mas los enganiamos a todos..
-------------

Situacion: una mezcla de nostalgia por las bondades de la programacion estructurada (tal vez por la decada de los 80s, la musica, el arte) genera pereza y pocas ganas de pensar en concurrencia. El problema ? muchos usuarios simultaneos conectandose sobre una aplicacion sin disenio: en datos ni codigo. Que hace el programador ?, con una lagrima de melancolia aplica un "Retro"

Veamos el ejemplo:

synchronized (ClassLoader.getSystemClassLoader()) {
// mucho codigo y una stack que crece sin limites...
}

Resultado: nuestra aplicacion es monotarea, al fin volvieron los 80s !!!!

Espero que les haya gustado :D ...

Sunday, October 01, 2006

Metodologia: La Ira del Dragón



Cuando Ramundhana Bermut Rosó, un arquitecto SemiPseudoSenior de Bizarro, volvió de su reclusión en los picos de la china, presento al mundo una metodología que ha adquirido mucho peso en los ultimos tiempos. Esta metodologia es conocida ampliamente por los pasillos de Bizarro Logia Labs SRL como "LA IRA DEL DRAGON"
Al parecer, rondando el año 2002, Ramundhana conoce en su decimoquinto foro de discusión y nebulización al gran maestro Coda, un hombre que durante esa reunión se burló de las metodologías utilizadas actualmente, emitiendo silbidos cada vez que se nombraba XP y flatulandose sobre las masas congregadas ante la mención de RUP. Ramundhana, asombrado por su habilidad para generar caos, decidió cederle la palabra. Fue entonces que una nueva metodología surgió, de las épocas milenarias orientales.
En la antigua china, se conocía por el nombre de la ira del dragón a una técnica marcial, capaz de dar vuelta el curso de una cascada. Inspirada en esta hermosa fuerza natural, el maestro Coda creó la metodología que consiste de los siguientes pasos:

1 - El programador recibe los requerimientos directamente del cliente. De esta manera, se resguardan terribles problemas relacionados con el "teléfono descompuesto".
2 - En base a ellos, se comienza rapidamente la codificación y anotación de los resultados de las pruebas. Tras varias iteraciones, se ha demostrado que las pruebas han dado mejores resultados cuando son los mismos programadores los que las realizan.
3 - Una vez terminado el código, toda documentación relacionada con diagramas de diseño es desarrollada al instante mediante distintas herramientas de ingeniería reversa.
4 - Una semana previa a la entrega, el Project Manager se encarga de ver qué se ha hecho, enterarse de que se trata el sistema, y generar todos los casos de uso en base a lo que ya está hecho.

Se ha probado tras varias repeticiones de esta metodología que se llega a tener algo funcionando mucho tiempo antes de lo que otras metodologias permiten, razon por la cual se la ha apreciado más en los ultimos tiempos.
También se recomienda que durante la primer etapa de trabajo, en la que los programadores se encargan de hacer el producto terminado, se incentive la creatividad de los mismos, permitiendole tomar una gran cantidad de cerveza durante almuerzos, y otorgandoles amplias instalaciones para defecar.

Thursday, July 13, 2006

DestrActions: MVC incorporado en Bizarro



DestrActions: Aplicación de MVC

En varios lenguajes como Java o PHP existen diversos frameworks que ayudan a implementar el patrón MVC. Muchos de ellos están basados en el framework Jakarta Struts.

Struts permite mapear URLs a clases de tipo Action que pueden realizar cualquier tipo de operación antes de despachar la URL deseada.

En principio, era necesario mapear una URL a un único Action. Con esto se tenía una inmensa cantidad de Actions, lo cual resulta impráctico. Con las versiones posteriores de Struts, fue posible asociar más de una URL a un mismo Action a través del uso de un parámetro que indicaba qué método de la clase Action debía ejecutarse.

Bizarro llevó esta característica al extremo (basado en principios de Bizarro Extreme Programming o BXP). Incorpora en su lenguaje el manejo de MVC al estilo Struts, con la ventaja de que sólo hace falta un Action (llamado DestrAction) que maneja toda la aplicación.
No hace falta configurar nada. Sólo implementar una clase que extienda de DestrAction, y el framework nativo se encarga de eso.

Bizarro cuenta con un preprocesador (parseador de código fuente previo a la compilación) que soporta hasta 10.000.000 de líneas de código por clase, lo cual en principio alcanza para codificar al DestrAction.
De todas maneras, se está pensando en incrementar esta capacidad, puesto que si dentro del DestrAction se aplica el patrón "Repeat" (será explicado en otra ocasión), el código puede alcanzar fácilmente las 100.000.000 de líneas en una aplicación entreprise.

En resumen, con esta característica, Bizarro permite:
  • Aplicar fácilmente el patrón MVC
  • Eliminar el uso de excesivas clases Action, encapsulándolas en un DestrAction
  • Alivianar la tarea del ClassLoader (sólo tiene que cargar una clase principal)
  • Permitir que los desarrolladores no tengan que conocer numerosas clases Action (sólo necesitan conocer DestrAction)
  • Tener gran parte de la aplicación en una clase robusta de miles de líneas (total las compila el compilador, no el humano)
  • El tamaño de la aplicación resulta ínfimo al lado del tamaño al que crecerá la clase DestrAction

Tuesday, July 11, 2006

Metodología: Pattern of the Week

The Bermudez Pattern




Por su tenacidad a la hora de desacoplar las reglas del juego y generar Caos en el equipo contrario, este es el patrón de la semana. Este patrón es lo contrario del Strategy Pattern ya que siempre rompe con ella. Este es un Behavioral Pattern y generalmente se lo usa como Iterator -de faltas- y como Visitor de piernas contrarias.

Monday, July 10, 2006

Fit, el retorno del auto fantastico. Usará Bizarro.

Kenji Takashi, vocero de la firma Films du Nippon, aseguró que la realización de la serie televisiva, 素晴らしい車は戻る(Fit, le retour de la voiture fantastique) utilizará efectos especiales programados con Bizarro 3D. Takashi comenta que la elección del lenguaje fue difícil, pero que Bizarro 3D sobresale a la hora de imprimir los subtitulados en la pantalla. Los benchmarks realizados por la empresa fueron contundentes, se imprimen 10 veces más rápido que utilizando JasperReports, y utilizando Verdana, Bizarro 3D es 100 veces superior que Borland JavaScript for Enterprise Applications. Además, declara, que Fit ahora es mucho mas inteligente que su predecesor (Kitt, el de la serie americana) y todo esto gracias a Bizarro for Brute-Intelligence Companion.


En la página del diario Kawasaki Times, Takashi comenta lo siguiente:


私達は幸せであり新しいTV ショーをする。Bizarro 3D は顕著な、終わる性能である。私の英国は錆ついた、忘れられているよくない、私のプログラミングの知識y 非常にでない。私はVisualBasic を知っている。しかし、私達は映画が良い行っていること確信している。特殊効果のためのBizarro 3D 及びBizarro 3D の事実上のsupramachine oustanding 、私は前により同じを繰り返している。そう私は、BYE うんざりする。

Ultimo momento: Chaotic Patterns with Bizarro



Nos ha llegado, de zopetón, un libro que queremos compartir con uds. El señor Mario Barakus, ex Brigada A, cuenta como superó su crisis, por haber rebotado el casting de Brigada Cola, gracias a la programación. Su vida -cuenta el- cambio rotundamente cuando en un viaje por Bangladesh conoció al pieich-dí Balaaditya Purushottam Madhusudhana.

Mas adelante, comentaremos capitulos de este libro.


Curso de Randómica del Caos

Debido a que mucha gente me ha preguntado por la Randómica del Caos, el gran pieich-dí ha decidido realizar una serie de cursos con respecto a este tema.

Precio del curso: 100 Euros.

El curso consta de 1 día y está conformado de la siguiente forma:

Día 1:

9.00hs – Introducción al Caos y a la Randómica. Lugar: Hotel Buró, Budapest.

11.00hs – Desayuno. Lugar: Ciputra Hotel, Jakarta.

12.00hs – Ejemplos de cómo funciona el Caos y no nos damos cuenta. Lugar: Scandic Hotel Marski, Helsinki.

13.00hs – Almuerzo. (Nombrando al gran pieich-dí, Happy Hour de Perro al Escabeche) Lugar: Itaewon Hotel, Seoul.

14.00hs – Ejemplo de cómo en la Randómica del Caos, los lugares pueden repetirse (claro Ejemplo). Lugar: Hotel Buró, Budapest.

17.00hs – El grán Balaaditya Purushottam Madhusudhana se despide-desde su casa- con un fuerte abrazo a todos.

18.00hs – Entrega de diplomas, y gran cena show. Lugar: Ambassador Hotel Hargeisa, Somalia.

Thursday, July 06, 2006

Métodos Randómicos


Muchas veces sucede que tenemos que invocar un método de forma no secuencial, no asincrónica sino, más bien, randómica. Todos lenguajes de programación nos permiten generar números aleatorios. Con estos números podríamos, en un bucle, hacer llamadas a dicho método.


Por ejemplo en Java haríamos lo siguiente:


Random random = new Random ();
for ( int t=0; t <>

fooClass.fooMethod ( paramValue1, paramValue2 );

}


El ejemplo anterior obtiene un valor aleatorio y llama al método fooMethod de la clase fooClass tantas veces como el valor que se obtuvo. La desventaja de este código es que si además se desea que la llamada sea, de vez en cuando, asincrónica hay que escribir mas código y este puede tornarse engorroso algunas veces.


Bizarro provee algo llamado Randómica del método (en inglés algunos autores lo llaman Chaotic Random Method Call). Un método random o caótico se puede definir en tiempo de ejecución o por medio del keyword randomic.


Por ejemplo, usando el keyword:

Class FooClass {

randomic vacuity fooMethod1 ();
randomic asynchronic vacuity fooMethod2 ();

}


Observen que en este ejemplo el método fooMethod1 esta declarado para que se ejecute varias veces. La cantidad de veces a ejecutarse va a depender del caos con el que se haya implementado la máquina supravirtual.


Si el método se declara como en el ejemplo, solo basta llamar al método de la forma habitual. La máquina supravirtual se encarga del resto.

Por el contrario, si tenemos un método que no esta declarado de forma randomica hay que utilizar lo que en Bizarro se llama inyección del caos. La Inyección del caos puede usarse en varios aspectos, no solo a los métodos.

Un simple ejemplo de este uso es el siguiente:


fooClass.fooMethod ()<-injectChaos.onMethodCall( RANDOMIC | ASYNCHRONOUS );


Conclusión:

Esto presenta varias ventajas a la hora de programar un método. Por ejemplo programando para la Tela por Todo el Mundo (World Wide Web según algunos autores) no hace falta tener un JavaScript para realizar varios request al servidor de aplicaciones. Utilizando Bizarro es sencillo definir la misma funcionalidad en un solo lugar. De esta forma estaríamos desacoplando la lógica en un solo lugar.


Wednesday, July 05, 2006

Charlas con el Creador - Parte 1


Balaaditya Purushottam Madhusudhana, el creador de Bizarro, es un pieich-dí, titulo supremo dentro de los venerados desarrolladores bengalíes. Es un prodigio desde que nació. Su madre, Manjula Vijayalakshmi Radha, comenta que –a los dos años- le leía revistas importadas, entre ellas la conocida Users Code (edición Tucumana).


Aquí adjunto una de las varias entrevistas que mantuve con el venerado pieich-dí:


1. Que es bizarro?

No se que significa bizarro, solo sé Bizarro. Bizarro es el esfuerzo de los frutos al caer. Es imaginación pura puesta al servicio de la creación.

  1. Entonces?

Es un lenguaje de programación orientado al caos. Ya tuvimos la programación con tarjetas perforadas, programación secuencial, programación procedural y la programación orientada a objetos. En todas hubo caos. El caos es divino. Por eso he creado algo divino, basado en el Caos.

  1. Que ventajas tiene este nuevo paradigma?

No es un paradigma sencillo de asimilar. Una vez que un desarrollador alcanza un alto grado de Caos, este paradigma fluye sobre ese desarrollador como el aire que respira. Programa y juega con el Caos a su antojo y para esto Bizarro es ideal.

  1. Que otras areas, además del desarrollo, se beneficia con Bizarro?

Yo me atrevería a decir que todas las areas. En nuestra metodología Bizarra, a las areas las llamamos Chankras Potenciales de Caos. En todas se genera un Caos divino. Más adelante me gustaría profundizar estos temas, pero me gustaría poner en claro que para que todo fluya correctamente entre las areas, debe de haber un alto grado de Caos en el Chankro Venereo Gerentil, que es –comunmente hablando- el area Gerencial.

El comienzo de la Historia

Hace unos años empecé a trabajar en una consultora en la cual aprendí cosas que jamás pensé en aprender. La metodología que usaban nunca la había visto y en cuanto a los lenguajes de programación, los clásicos C++, Java, Pitón. Pero lo que más me soprendió es el uso de un lenguaje multi propósito, creado y desarrollado por un Pieichdí (monje sánscrito-tibetano) bengalí nacido en China. Este lenguaje, llamado Bizarro, no lo usan todos los desarrolladores de la consultora. Solo lo usan algunos elegidos. De hecho yo no tuve conocimiento de Bizarro hasta el día que me notificaron la inclusión al Grupo.

La etapa de integración al Grupo fue una de las más difíciles de mi carrera profesional. No porque la gente del Grupo me tratara mal. Todo lo contrario. Ellos me querían porque sabían que tenía potencial para usar su metodología y su tan preciado lenguaje. Lo difícil de esta etapa fue dejar a mis viejos compañeros de trabajo ya que me miraban con recelo. Algunos hasta dejaron de hablarme porque no les quería contar como era el Bizarro. Sinceramente les hubiera contado, pero el Grupo era estricto en este sentido y no permitía que se filtre ninguna información.

Hoy, después de varios años de arduo trabajo en la mejora del lenguaje, el Grupo accedió a liberar Bizarro al mundo. Este cambio no fue fácil. Me ha llevado mucho tiempo de predicas y discusiones dentro del grupo. Al final dio sus frutos. El mundo tiene a Bizarro.