jueves, 29 de septiembre de 2016

Idea para extension GeneXus - Instalador de User controls

Una extensión con la que me gustaría contar, seria una que permita ver una KB de un GXServer o un XPZ de una KB e identifique cuales son los User Controls o Patrones que utiliza y me los presente en una lista.
Desde dicha lista tengo las opciones de instalar alguno o instalarlos todos y hace automático el proceso de bajarlos del Marketplace (los que sean gratis) e instalarlos o actualizarlos en mi instalación de GeneXus, haciendo el GeneXus /Install y todo lo necesario para que me quede operativo.

El siguiente paso, es poder hacer esto por linea de comandos, con lo cual mucho de nosotros estaríamos mas contentos y con mas tiempo de pensar en cosas importantes.

miércoles, 28 de septiembre de 2016

Charla sobre codigo y objetos simples en el #GX26

A los que les interese la charla sobre Deuda Técnica y Código simple se puede ver aqui

El objetivo de la charla era plantear el tema de la forma mas fácil y menos técnica posible, para mostrar porque hay que prestar atencion a pequeños detalles que hacen a nuestro código menos claro y mas complicado de entender.

El concepto de deuda técnica, es sencillo: Cada vez que hago un arreglo y el mismo no lo realizo lo mejor que puedo, para salir del paso rápidamente, estoy incurriendo en una deuda, que tarde o temprano voy a tener que pagar.

El concepto de código entendible, es algo mas subjetivo y difícil de definir, pero se pueden identificar algunas características que el código simple o entendible tiene y a tratar que nuestro código cumpla con dichas características.

Hay mucho trabajo aun por realizar, pero creo que es bueno trabajar en el tema, si pretendemos que nuestra KB dure muchos años en el mercado.

Para facilitar la tarea que otras personas verifiquen nuestro codigo, estamos trabajando en el GUG (Grupo de Usuarios GeneXus) en armar una herramienta que me permita elegir los objetos cambiados por mi y enviarselos a un compañero para que los revise. Si todo esta bien, puedo pasar el cambio a produccion. Si me hace alguna recomendacion, debo hacer el cambio y volver a pedir la revision.

Aun esta en pre-beta y el nombre por ahora es GXCodeReview. Los fuentes se pueden encontrar en
http://svn2.assembla.com/svn/gxextensions/trunk/KBCodeReviewer/, aunque probablemente los mudemos a otro repositorio en un futuro cercano.
A quienes quieran participar el el desarrollo o en la prueba del esta extension, estan invitados, alcanza con hablar con Laura Aguiar o conmigo y los integramos al grupo de trabajo.


jueves, 22 de septiembre de 2016

Encuentro GeneXus #GX26 - Deuda técnica, código simple y revisión de código

En el Encuentro GeneXus 2016 de la semana que viene, estaré hablando sobre  código GeneXus simple y fácil de entender y como ayuda a bajar nuestra deuda técnica y mejora nuestra productividad, aunque no sea evidente en un principio.

Representado en una gráfica, la diferencia entre un arreglo rápido, que luego lleva mas mantenimiento y un arreglo cuidadoso, que es mas fácil de mantener en el futuro.
Aunque los números son ficticios, ayudan a ver que si tengo que mantener una KB por un tiempo prolongado, es conveniente dedicarle mas tiempo a hacer las cosas bien de entrada, pues sino vamos a gastar mas tiempo en el futuro.

Es un tema que en la comunidad GeneXus casi todos conocemos pero tenemos algo olvidado y hay oportunidades de mejora importantes.

También participo en una charla con Laura Aguiar de las tareas realizadas en el GUG Montevideo, sobre la búsqueda de buenas prácticas en Gestión de Proyectos. En dicha charla tambien hablaremos de una herramienta de revisión de código que estamos desarrollando para controlar y mejorar la calidad de código de la KB en una forma colaborativa. Es un proyecto en curso y estamos buscando interesado en colaborar con el mismo. 



viernes, 16 de septiembre de 2016

Problemas comunes en modularización de KB GeneXus

Soy promotor de la modularización de KB Genexus, pues ayuda en muchos aspectos mejorar  la salud de la KB y de la aplicación.

Al tener la KB modularizada, se puede entender mas rapido, y por lo tanto, se pueden hacer cambios mas agiles y con menos riesgos.

Algunos de los patrones de problemas comunes que aparecen en KB que he estado modularizando son:


Tengo un objeto que recorre una tabla privada de otro modulo y ejecuta código utilizando objetos del modulo B, por ejemplo actualizando o haciendo inserts.

En este caso, conviene sacar la logia del Object1 y crear un nuevo objeto en el ModuleB

De esta forma el ModuloB pasa a tener un nuevo servicio que puede ser usado por otros modulos y la tabla queda como privada.

Caso 2: Se intenta recorrer una tabla privada de otro modulo, y luego se ejecuta logica propia del modulo en el que estoy. 

Una posible solución es hacer un Data Provider que devuelva los datos de la tabla privada y utilizar los elementos del SDT en ven de los atributos. 


 Estos son dos caso bien sencillos de algunos de los problemas que aparecen al modularizar una KB. 

Al terminar el trabajo de modularizacion, tenemos tablas privadas y tenemos la tranquilidad que nadie desde fuera de nuestro modulo podra modificarlas o recorrerlas. 

Para facilitar la tarea de modularización, agregue un opción a KBDoctor que permite seleccionar un Modulo y arma una lista con todos los objetos del modulo, mas todos los objetos que referencian a algun objeto del modulo mas todos los objetos que usan tablas del modulo. De esa forma, es mucho mas rapido el proceso de modularizacion, pues nos evitamos muchos Rebuild all que hoy son necesarios pues GeneXus no se da cuenta cuando una objeto cambia de modulo o pasa de publico a privado. Lo voy a liberar en los próximos días. 

El Sordo

Hace unos dias, falleció Luis Eduardo Gonzalez, popularmente conocido como "El Sordo". Me tocó trabajar con él en el año 1987, en mi primer trabajo. Yo era estudiante de Facultad de Ingeniería y Alberto "Tito" Gonzalez, recién llegado de su exilio, me ofreció trabajar como digitador en una de las empresas derivadas de Equipos consultores, que se llamaba Pro-Medios y se dedicaba a la medición de audiencia de radios y televisión.

Me tocaba trabajar de noche, en la casona de Bvar. Artigas (**), donde funcionaba Equipos. Digitaba las encuestas del día, en computadoras de dos disketeras, donde perder datos, era cosa de todos los días. Obligado, tuve que aprender de FileSystems, y como recuperar datos de diskettes dañados, para recuperar la digitacion de un dia.

Ahi me cruzaba con Cesar Aguiar, Agustin Canzani, Juan da Rosa,  el Sordo y otras personalidades que luego serian bastante mas conocidas.

En ese trabajo, aprendí muchísimo de estadísticas aplicadas, de metodología de encuestas, de como se hacen los estudios de mercado y pruebas de producto.  Me encantaban las charlas de cocina/comedor,  pues como sucede cuando se esta con personas que saben mas que uno, se aprende mucho.

Recuerdo que a pesar que yo era el mas pinche de todos, se tomaban el tiempo para contestar mis dudas y explicarme en detalle. Solo una vez tuve que trabajar con El Sordo, ayudando a procesar una encuesta que estaba atrasada. Tuve que acostumbrarme a la forma de trabajo y a las reuniones, pero lo recuerdo con un sentido del humor muy aceitado.

También recuerdo que una noche rompí un termo cuando lavaba mi taza de café y resultó que era el termo del Sordo. Al otro día, fui a su oficina y le ofrecí comprarle uno nuevo y me saco corriendo.  Nunca me quedó claro si era porque estaba enojado por haber perdido el termo o porque no pensaba que debiera pagar yo dicho termo, pero no me dejó pagarlo.

A la familia de El Sordo, mis sinceras condolencias. Lo vamos a extrañar.

(**) Es donde hoy tiene las oficinas MontevideoCOMM