jueves, 30 de abril de 2009

¿Qué se dice de GeneXus en Twitter?

Ayer Armin escribió un artículo contando como usa Twitter para enterarse de las cosas que se dicen de GeneXus.

Pero entonces, ¿qué se dice de GeneXus en Twitter?

Se puede buscar el término "genexus" en Twitter Search, que además permite suscribirse a los resultados por RSS (ya lo hice), con lo cual es fácil monitorear lo que se está diciendo. La técnica sirve para cualquier otra búsqueda...

Los "twiteos" (gorjeos?) de la última semana, sacando los de los usuarios @genexus y @gxnews_:
horaciosoca: GeneXus (genexus.com) comunica novedades & soporte de productos en Twitter (un buen "enfoque" del asunto) http://tr.im/k4TW
about 6 hours ago
apanizza: Armin is tweeting gx news: @arminbachmann http://bit.ly/5p7u6 (expand), also check @genexus for news going into the XIX user meeting !
about 11 hours ago
arminbachmann: @arielmilani ... pq no trabajas con GeneXus X? es muuuucho mejor. hay una trial de la X con menos limites que la 9.
about 23 hours ago
jean_dreyer: Estudando GENEXUS!
1 day ago
asantibanez: dolor de cabeza con Genexus.. queriendo ir a casa..
1 day ago
arminbachmann: @arielmilani No entiendes algo de @GeneXus? puedo ayudarte?
1 day ago
arielmilani: Genexus... i hate you #caralhofilhadaputa
2 days ago
calcetin_huacho: yap, genexus time.
2 days ago
pedrogk: congreso de Genexus del 6 de mayo en Ciudad de México se pospone hasta nuevo aviso
2 days ago
ealmeida: Malhumorado, porque no logro un night build que funcione en la GeneXus X Ev1 (beta) y queria probar a fondo las K2bTools
3 days ago
apanizza: Late in a friday at the genexus office: http://bit.ly/o4wp9 (expand)
5 days ago
gxsoft: DBF+CDX to SQL Finished, ready to DBRet 1.2 (GeneXus Tool)
5 days ago
ealmeida: Jugando con MSBuilds Task y GeneXus X.
7 days ago

martes, 28 de abril de 2009

Montevideobus.com

Me acabo de enterar que existe el sitio Montevideobus.com que usa Google Maps para trazar el recorrido de los ómnibus de Montevideo entre dos puntos seleccionados.



Realmente está muy bueno, y por las pruebas que hice, me resultó mucho más usable y ágil que la Guía Digital de Montevideo, que casi nunca funciona.

Además permite ver el recorrido completo de las líneas de ómnibus.

¡Felicitaciones a la gente de Montevideobus.com!

martes, 21 de abril de 2009

Hackers and Painters

Estuve leyendo el libro Hackers and Painters de Paul Graham, que tiene varias cosas interesantes.

El libro es básicamente un conjunto de ensayos que no tienen demasiada conexión entre sí, que tratan mayoritariamente de temas relacionados al desarrollo de software.

Dejo los links de los ensayos que me resultaron más interesantes, en el orden que aparecen en el libro, por si alguien los quiere leer:
En Beating the averages, comenta sobre los lenguajes de programación y como hay lenguajes más avanzados que otros. También comenta que para alguien acostumbrado a un determinado lenguaje, es fácil ver cuales son los lenguajes menos potentes, pero que es muy difícil distinguir cuales son los lenguajes más avanzados, porque las funcionalidades que lo hacen más avanzado resultan desconocidas.

En Revenge of the nerds, dice:
We know that Java must be pretty good, because it is the cool, new programming language. Or is it? If you look at the world of programming languages from a distance, it looks like Java is the latest thing. (From far enough away, all you can see is the large, flashing billboard paid for by Sun.) But if you look at this world up close, you find that there are degrees of coolness. Within the hacker subculture, there is another language called Perl that is considered a lot cooler than Java. Slashdot, for example, is generated by Perl. I don't think you would find those guys using Java Server Pages. But there is another, newer language, called Python, whose users tend to look down on Perl, and more waiting in the wings.

If you look at these languages in order, Java, Perl, Python, you notice an interesting pattern. At least, you notice this pattern if you are a Lisp hacker. Each one is progressively more like Lisp. Python copies even features that many Lisp hackers consider to be mistakes. You could translate simple Lisp programs into Python line for line. It's 2002, and programming languages have almost caught up with 1958.
En el libro (no en el ensayo que está en internet de donde copié el texto) menciona también a Ruby como el siguiente paso entre Python y Lisp.

Entonces... ¿Lisp? ¿En serio? ¿No era un lenguaje funcional? ¿Alguien usa Lisp para hacer cosas "en serio"? Parece que sí.

En la facultad hice un curso de introducción a la programación funcional, que trabajábamos con Haskel. Como cultura general me pareció interesante, pero no parecía algo demasiado práctico...

Así que habrá que ver un poco que es Lisp y para que sirve. Si alguien tiene lectura para recomendar, se agradece. A Perl, Python y Ruby también les quisiera entrar, tendría que tener días más largos...

lunes, 20 de abril de 2009

GXPublic Applets

Si bien es cierto que con GeneXus X deja de existir, para quienes seguimos trabajando con GeneXus 9.0 GXpublic sigue siendo una herramienta muy valiosa.

A lo largo de los años, han ido surgiendo necesidades que son difíciles o imposibles de resolver usando solamente GeneXus, por lo que hemos ido desarrollando pequeñas (por eso lo de applets del título) aplicaciones que usan GXPublic y que resultan de utilidad en el desarrollo.

Algunas de estas aplicaciones son públicas y se pueden obtener de GXOpen, otras no, son desarrollos internos que nunca vieron la luz. Algunas se podrían llegar a necesitar también en GeneXus X, otras ya están integradas, no tienen sentido o hay una alternativa que ya existe.

A continuación detallo las que más uso...

KBQuery

KBQuery en una aplicación que permite ejecutar consultas SQL sobre una KB GeneXus.

Ya había escrito sobre esta herramienta acá, así que no voy a decir mucho más, salvo que me resulta sumamente útil.

GXLGenerator

En el ciclo de desarrollo que tenemos en Concepto, todos los cambios de programación que se hacen quedan asociados a una solicitud, y a su vez a una solicitud se le adjunta un GXL con los objetos modificados.

El nombre de la aplicación dice casi todo, lo que hace es generar un texto con formato GXL a partir de una lista de nombres de objetos y su tipo. Además chequea que el objeto exista en la KB, para que no haya posibilidad de que quede un objeto que no existe.


KVCVSP - Control de versiones (sin pretensiones)

Esta aplicación es parte de las KBTools. Tiene una interfaz gráfica, pero para KBs grandes no resulta práctica, porque demora mucho.

Lo que hace esta aplicación es distribuir en la noche (mediante un proceso batch agendado) todos los objetos modificados desde la última distribución, dejando el XML en un directorio determinado.

Cada archivo generado tiene la forma tipo_nombre_fecha.xml, por ejemplo: PRC_Prueba_200904201534.xml.

De esta forma, queda toda la historia de cambios de todos los objetos. Usando el comparador de distributes que viene con GeneXus 9.0, se puede comparar de forma muy fácil la versión actual de un objeto con una versión anterior.

Claro que para GeneXus X deja de tener sentido, porque ya tiene la historia de los objetos incorporada.

Neptuno.net

El origen del nombre de esta aplicación desconozco de donde viene, ya que la versión original no es mía. Neptuno estaba hecho en GeneXus/Visual Basic, y funcionaba con la versión 8.0 de GeneXus. Neptuno.net es una variante del programa original pero escrito enteramente en C#.

Lo que hace ese programa es mostrar un "call tree" a partir de un objeto dado, mostrando pintados de rojo aquellos objetos que hacen commit o rollback.

El objetivo es poder encontrar problemas de integridad transaccional a partir de un objeto, que es algo que para hacerlo "a mano" resulta muy tedioso.

Las cosas que toma en cuenta son:
  • que el programa tenga commit o rollback en el código
  • que tenga la propiedad commit on exit y haga algún cambio en la base de datos (procesa el sp0 correspondiente)
  • si ejecuta en una nueva UTL asume que está bien.
Tiene muchas cosas para mejorar, por ejemplo la interfaz de usuario, la performance, o podría tener un botón que recorriera el árbol en profundidad y se parara en el primer nodo con problemas. Pero para una primer versión, cumple con su función y resulta sumamante útil.


CodeReviewr

Esta es la última incorporación y todavía estoy tratando de decidir si sirve o no...

El objetivo es poder hacer code review de los últimos cambios (objetos modificados ayer) por parte de todo el equipo de desarrollo.

El programa busca en la KB los objetos con una determinada fecha de modificación, y usa los distributes generados por el control de versiones (KBCVSP) para comparar la versión actual del objeto con la versión inmediatamente anterior, usando el comparador de distributes de GeneXus 9.0.

La revisión de código no es algo que hagamos sistemáticamente, pero en las pruebas que he hecho sirvió para detectar algunas cosas...



viernes, 17 de abril de 2009

Diez años con GeneXus

Por estos días, se están cumpliendo 10 años que empecé a trabajar en Concepto (la primera vez) y por lo tanto con GeneXus.

En aquella época todavía era estudiante (estaba empezando 4º año en la Facultad de Ingeniería) y lo curioso es que en realidad no buscaba trabajo... fue algo que surgió la posibilidad, vine a la entrevista y quedé.

En realidad con GeneXus empecé un poco antes, a fines de febrero o principios de marzo del 99, porque antes de empezar a trabajar hice el curso.

La versión que había era la 6.1, que no tenía "syntax coloring" en eventos y subrutinas (no me acuerdo en las reglas) y hasta donde se no generaba web. Ni hablar de generar .Net que ahí ni siquiera existía...

Cuando arranqué trabajé un par de meses generando para AS/400, pero (por suerte) después pasé a trabajar con Visual Fox Pro y C/SQL para los procesos más complicados.

Y después de eso salté a la beta de la 7.5 (nunca pasé por la 7.0) y seguí haciendo beta-test de las siguientes versiones: 8.0, 9.0 y X. A la X ev1 todavía no le he podido entrar, pero ya le llegará la hora :)