Ir al contenido principal

Inspiración + Trabajo = Magia

Hace algún tiempo que vengo trabajando con el generador para Smart Devices (iPhone, iPad, iPod touch, Android, BlackBerry) que es una de las principales nuevas funcionalidades de Genexus X Evolution 2.

Creo que no es necesario ahondar en lo importante de esta “ola” de los “Smart Devices”. No solo se trata de una “ola tecnológica” sino de modificaciones sustanciales en el comportamiento de los usuarios, sus expectativas respecto a las soluciones, accesibilidad de la información y operativas, etc. Pero en fin, dije que no iba a ahondar así que pueden buscar en internet o directamente ver algunas de las conferencias al respecto en el XX Encuentro GeneXus de Set/2010.

Volviendo al tema, si bien había hecho alguna aplicación de “ejemplo”, recién esta semana dejé una aplicación realmente en producción, se trata de la aplicación que maneja la agenda (Oradores, Conferencias, Salas) del VIII Encontro Genexus Brasil.
Es una aplicación bastante sencilla, el objetivo es facilitar el acceso a la agenda del Encuentro a través de estos dispositivos así como la posibilidad de agendar conferencias en el propio "device".

Quienes quieran la pueden instalar  desde aquí de acuerdo al dispositivo/SO que estén usando (Android, iPad, iPhone, iPod touch o BlackBerry, no disponible para WP7 aun) ¡es gratis!

Mi primera impresión

Con el “Smart Devices Generator” tuve un “deja vu”.

Hace +20 años empecé a trabajar con GeneXus, primero haciendo una aplicación para el manejo de flotas de vehículos y talleres en PC/DBase III Plus con DBFs (ambiente que dominaba) y luego haciendo una Solución Financiera para el AS/400 (iSeries) en Cobol (ambiente que desconocía totalmente).

Si bien para el sistema de flotas me sirvió mucho, lo diferente se produjo cuando desarrollé mi primera aplicación para Cobol/iSeries. Este ambiente solo lo conocía como usuario de una “terminal tonta” cuyo cable se perdía misteriosamente en un ducto y vaya uno a saber dónde terminaba. La habitación donde estaba aquella máquina misteriosa estaba vedada para todos los mortales y solo los cables y los semidioses llamados “Operadores” podían entrar a ella.

Sin tener más conocimiento que ese, mucha fe y ganas, logré poner mi sistema en producción. Ahí  sospeché que había algo grande, importante, diferente.  ¿Cómo yo un “pichón” de 20 y pico iba a hacer algo tan grande y atrevido? ¡Qué insolencia! ¡¿Qué magia era esa?!

Con el tiempo descubrí que no se trataba de magia sino de visión, ciencia y trabajo. En cualquier caso con el tiempo ratifiqué mi sospecha: realmente estaba ante algo importante.

Claro que hubo problemas, utilizaba la 1.2 de Genexus y luego pasé a la 1.4, para dar una idea: ¡no existían los “procedures”! No había modo de actualizar los datos de modo “batch”, lo cual en ese momento era “pecaminoso”. Escollos hubo, pero ninguno hizo que dejara de ver el valor de lo que tenía entre manos.

Hoy con el “Smart Devices Generator” tengo la misma sensación: estoy desarrollando aplicaciones para no una sino, por lo menos, tres plataformas (iOS, Android y RIM, proximamente WP7), todas diferentes pero con algo en común para mi: casi totalmente desconocidas y digo “casi” porque las conozco como el AS/400: simplemente  como usuario.

Seguro que hay y habrá escollos, como dice Gastón en su blog “Because our way to develop software is different, we focus on the model first and after we generate code.”,  pero la “magia” (como resultado de la visión y el trabajo) está nuevamente presente.

Por eso lo del “deja vu”, esa magia que me permite llegar con soluciones a mundos que no conozco, no domino y tal vez nunca llegue a conocer del todo antes de que, eventualmente, desaparezcan bajo otra ola.

Sobre la aplicación

Dejando la parte “mágica” y yendo a los resultados, como decía al principio, la aplicación maneja la agenda de un evento, donde existen Oradores que dan Conferencias en diferentes Salas y esas son las tres entidades.

Si lo quieren ver como un diagrama de tablas:

primer-app-diagrama-tablas.PNG

Su desarrollo se trató básicamente de la definición de esas entidades y el ajuste de los patterns a aplicar sobre ellas, para lograr algo como:

emu1.PNG

emu2.PNG

emu3.PNG

emu4.PNG

(perdón por las imagenes, son del emulador del Android)

Igual es un poco tarde para profundizar sobre el tema, pido disculpas a quienes dejé con "sabor a poco" pero creanme que lo importante es lo que digo acá, el "cómo" prometo profundizarlo en futuros posts.

Comentarios

  1. No solo magico, sino tambien adictivo como el dulce de leche

    todo bien con los que siguen laburando a manopla, pero bue los picapiedras eran felices con la traccion a pata .)

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Abrir links con aplicaciones nativas y no el browser (deeplinking)

El problema que tengo con algunas aplicaciones Android/iOS es que cuando recibo un link por algún medio (mail, tweet, etc) al abrirlo me lo abre con el browser, en lugar de abrirlo con una aplicación nativa asociada a ese “contenido”. Por ejemplo, si recibo un link a un tweet espero que lo abra con alguna aplicación de twitter que tenga instalada y no con el browser. De modo análogo si recibo un mail con una nota de prensa de un medio X y tengo la aplicación de ese medio X instalada, espero que el link lo abra con la aplicación nativa y no con el browser. Lo mismo quisiera con mi aplicación de "banking" o cualquiera que tenga instalada y sepa manejar ese "contenido" (link). Los motivos son bastante obvios pero los resumo en: la experiencia de usuario es mucho mejor en la aplicación nativa que en el navegador. Parte importante del tema es que el mismo link sea válido tanto para ver el contenido en el browser como para verlo en la aplicación, porque como prove

¡A la salud de mi KB!

Es bueno, especialmente en "bases de conocimiento" (KB) que han pasado por varias versiones de Genexus, chequear su "estado de salud". En este sentido KBDoctor  es una herramienta que ayuda mucho, principalmente desde el punto de vista del "modelo" Genexus (atributos, calls, definiciones de variables, etc) representado en una KB. También es útil revisar la salud de los archivos que lo soportan. Hasta la 9.0 eran archivos C-tree (los famosos .DAT) que tenían indices (los famosos .IDX) y teníamos en "rebuild -y" que mejoraba esos archivos y sobre todo reconstruía los indices. A partir de la X las KBs se almacenan en MS SQL Server por lo cual la administración de la misma pasó de ser un "file server" a un "database server". En este sentido algo que me ha dado muy buenos resultados es el "CheckKnowledgeBase".

Rocha:Constantes tipo fecha

En la Rocha se soportan constantes del tipo fecha o fecha-hora con formato ANSI/ISO (AAAA-MM-DD HH:MM:SS).  Tecnicamente (Sintáxis): <date>::=    [0-9]{1,4}"/"[0-9]{1,2}"/"[0-9]{1,2} | [0-9]{1,4}"."[0-9]{1,2}"."[0-9]{1,2} | [0-9]{1,4}"-"[0-9]{1,2}"-"[0-9]{1,2} <hms>::=    [0-9]{1,2}[ap] | [0-9]{1,2}":"[0-9]{1,2}[ap]? | [0-9]{1,2}":"[0-9]{1,2}":"[0-9]{1,2}[ap]? <constant> ::=   "#"<date>"#" | "#"<date> <hms>"#" | "#"<hms>"#" Funcionalmente Se pueden utilizar esas constantes en las reglas, eventos, propiedades, etc (todo lugar donde se utilice el parser): Algunos ejemplos básicos: &FechaInicial=#2007-01-01# &FechaHoraInicial=#07-1-1 11:15a# &HoraInicial=#11a# Me parece bueno no tener que escribir funciones (CTOD, TTOC) sobre constantes tipo char para lograr una fecha y mucho mejor aun en