/desarrollo rápido para web
septiembre 23, 2007
Hace un tiempo baje de internet GeneXus, esto ante la insistencia de un familiar cuya empresa está montada en función de productos realizados con esta herramienta.
El me hablaba de las facilidades y la (innegable) rapidez de desarrollo que se logra usando Genexus.
Lamentablemente, y a su pedido, tengo que caer en esa costumbre uruguaya de decir, sin mencionar nombres. Y no me gusta, pero hago una excepción porque tiene que ver con el contenido de este post.
Sinceramente mas allá de reconocer las bondades del producto, una especie de metalenguaje que a partir de la modelización de una realidad genera el código de la aplicación, no logró entusiasmarme demasiado.
Principalmente porque no me gusta ver que todo se arma sin saber cómo, un sistemas de cajas negras, porque además modificar el código generado era una tarea engorrosa, y porque me gusta ver el proceso desde la cocina.
Prefiero invertir un tiempo en aprender paradigmas de desarrollo que me permitan generar mis bibliotecas, que después usaré como un puzzle de acuerdo a las circunstancias, pero que yo conozco, porque yo las generé, que algo armado por otro, y donde el conocimiento para realizar la aplicación no pasa tanto la lógica de los algoritmos, ingeniería de software, sino que está restringido a la lógica de negocio.
(El me decía que yo podría trabajar generando componentes para GeneXus más que desarrollando aplicaciones con esa herramienta).
Es una herramienta ideal para software de gestión (escritorio o web), pero cuando intentamos salir de esa trinchera, desarrollar con GeneXus es bastante mas complicado, o directamente imposible.
No lo considero viable para realizar procesamiento de imagenes o juegos, y actualmente estoy interesada en esas areas.
Tampoco me convenció demasiado que el diseño de la base de datos dependiera completamente de la aplicación. Y cuando modificamos el modelo automáticamente altera las tablas, si es necesario, dificultando su re utilización en otras aplicaciones.
Pueden generarse productos competentes en GeneXus, de hecho la empresa de este familiar, tiene éxito a nivel nacional y creciente en el exterior.
Pero es GeneXus dependiente, el mismo me dijo que apenas conocía la tecnología .NET (no lo necesita), o java, ya que la herramienta se lo da digerido. El es un gran experto en modelar problemas, asi que larga vida a GeneXus.
Es una herramienta ideal cuando son pocos empleados, y se necesita sacar algo rápido al marcado, y como en su caso que comenzó solo, le vino al pelo.
En la informática todo va rápido, y por ahora soy de la idea que mas vale conocer paradigmas, y ver qué lenguajes se adaptan mejor a uno u otro segun las circunstancias. Pero que esos lenguajes sean flexibles dentro de sus características, que me permitan controlar lo que hago, y para mi GeneXus no es flexible. Y ademas no quiero depender de un lenguaje en particular, si bien entiendo que por lógica llegamos a preferir uno mas que otro.
La forma que elegimos para trabajar, cuando podemos elegir, es la filosofía de vida que elegimos también, otra manera de interactuar.
Y bueno, prefiero lo menos pragmático quizás, para algunos, pero que me permite un conocimiento mas integrado, y control en otras áreas. Y con GeneXus me sentí restringida.
Además, por experiencia se, que cuando contamos con un conjunto de bibliotecas en el lenguaje que sea, creadas por nosotros, cualquier aplicación será de desarrollo rápido. Me pasa en mi trabajo para ORT.
Vi dos herramientas gratuitas para desarrollo rápido web xpotronix y SIUToba que me ‘recordaron’ a Genexus, pero me gustaron más por la libertad que permiten. A diferencia de Genexus, la base de datos se centra en su organización y no en la aplicación.
Aun las estoy probando, y no puedo decir mucho más, pero lo dicho recién le juega a favor.
/publicidad antitabaco
septiembre 23, 2007

La misma apareció el 11 de setiembre de este año en el Khaleej Times, un diario de Dubai.
“5.4 millones de personas mueren por año por causas relacionadas al tabaco, esto es 2000 veces 11/9″.
Claro, no es la única causa de muerte, ni lo único que conspira contra los habitantes de este planeta, sobre todo considerando algunas obras contra natura existentes en Dubai, como la isla flotante Palm Jumeirah (cosa de nuevo rico, plata + mal gusto, me recuerda al Conrad)
/paintbrush 4 everybody..
septiembre 23, 2007

No se si es la sobre abusada Web 2.0 o qué es, pero la idea está buena, algo asi como, “a ver que sale entre todos”. Eso es drawball, un proyecto colaborativo donde cualquiera puede dibujar en un lienzo virtual.
La participación diaria del usuario está limitada a aproximadamente 1/10,000 de la superficie, esto es porque el mayor espacio está reservado a los anunciantes y otras comunidades online.
Pueden hacer zoom sobre un área específica de la obra para ver con mas detalles los diferentes dibujos entramados.
Este video con aceleración de imagenes para sintetizar las diferentes etapas del proyecto de manera mas didáctica, condensa las transformaciones de este mural participativo durante un año.
(Demora la carga, puede ser lento, mi velocidad de conexión es 10024/128kb)
vía haha.nu
/identificando memory leaks
septiembre 22, 2007
Por cuestiones de performance, me vi obligada a chequear los memory leaks de una aplicación desarrollada en Visual C++. Esto es, identificar aquella memoria que fue pedida a demanda (mediante new) y el programa ya no usa, y no se ha liberado (no se realizó el delete correspondiente). O sea algo asi como ‘crear’ nuestro garbage collector.
Las consecuencias de este consumo indebido de memoria pueden ser varias, desde enlentecer el rendimiento de la aplicaciónla hasta provocar comportamientos erráticos en otras aplicaciones abiertas o en la propia aplicación.
Buscando info en la web, vi que esto no solo se aplica a C/C++, sino que además puede darse en C# lenguaje con su propio garbage collector.
El administrador de memoria puede recuperar la memoria que quedó fuera del alcance del sistema o fuera de uso, pero no puede liberar aquella memoria que aun permanece al alcance o potencialmente en uso (y no lo está).
El alcance de la memoria se define cuando hay referencias directas o indirectas a ella. Y mientras las haya el administrador de memoria las ignora.
Ejemplo: agregar items a una lista, y olvidar quitarlas (borrarla de memoria) cuando terminamos el procedimiento. El administrador no podrá saber si esa entrada será referenciada nuevamente a menos que algo en el código del programa lo indique.
Este artículo de msdn explica en mas detalle los memory leaks en memoria no administrada bajo C# (viene con código).
Remitiéndome a mi problema en C++, y particularmente Visual C++, encontré una función que indica en una ventana si tenemos ‘memoria colgada’ o no liberada.
Para habilitar las funciones de heap al debug, hay que agregar al programa, y en este orden:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
crtdbg.h, mapea las funciones malloc y free con las versiones de las mismas en el depurador, _malloc_dbg y _free_dbg respectivamente, las cuales registran la memoria pedida y liberada. (Este mapeo sucede al depurar)
#define mapea la versión de las funciones del heap (CRT) correspondientes con las versiones de las mismas en el depurador. (No es necesaria, pero si la omitimos la información obtenida será menos descriptiva)
Agregadas las sentencias previas, en el programa hay que incluir la siguiente sentencia:
Cuando el programa se corre desde el debugger _CrtDumpMemoryLeaks muestra información sobre la memory leak en la ventana de salida.
Me basé en la siguientes referencias codeguru (con ejemplos), msdn2.microsoft
Para Delphi, existen las siguientes opciones (no probé ninguna) :
- memCheck (freeware con código) la versión actual 2.75 es para Delphi 5.1, Delphi 6, Delphi 7, Delphi 2005 and Delphi 2006 (aunque no ha sido probada en las dos últimas). Ofrece una unidad (unit, simil de header para los que usan C/C++/C#) con funciones para el chequeo de memoria.
- euroekalog, componente que se integra al ide (versión de prueba)
Aplicaciones independientes de cualquier compilador/IDE
Hay entornos de desarrollo o compiladores que no ofrecen esta facilidad, por lo tanto debemos recurrir a aplicaciones que nos dan esa información.
Esta es una lista de aplicaciones razonablemente completa y descriptiva sobre alguna de ellas.
De las mas conocidas (y probadas por mi) está IBM Rational Purify (solo para Windows) que puede descargarse en versión de prueba, (o bueno, está eMule o algun cliente torrent).
Realiza un análisis en tiempo de ejecución sobre los siguientes características de un programa: corrupción de memoria, memory leaks, rendimiento de la aplicación, cheque del registro de windows.
Para Linux existe una aplicación gratuita, Valgrind.
/"error" con el debugger de Visual C++ (aplicación de consola)
septiembre 22, 2007
Aunque el título es bastante descriptivo, entro en detalles.
Caso: crear una proyecto vacío para consola con Visual C++ (Visual Studio 2005), por vacío me refiero a: proyecto sin main, ni bibliotecas incluidas por defecto.
Lo que yo hacía: crear un .cpp .h, salvarlos, Build solution (compilar, linkeditar archivos ) me daba 0 error, 0 warning. El “proyecto” compila los archivos pero al intentar depurarlos (Debug F5) me salía el siguiente error:

Mi error: consistía en asumir que esa compilación se hacía para los archivos del proyecto, y no era así, porque éstos no habían sido incluidos en el mismo.
Solucción: Agregar los archivos al proyecto, hay dos formas:
1) Project -> Add New Item (seleccionar el tipo de archivo a crear)
2) Project->Add Existing Item (agregar archivos ya existentes, que fue lo que yo hice)

La solución me averguenza por lo trivial, pero ese Build Project, me confundió bastante, ya que compila archivos “de proyecto” que aun no han sido incluidos.
Dejo la solución, porque una vez más la encontré en foros de MSDN en inglés y no en foros en español..(los yanquis – y yo- seremos mas nabos). De todos modos vi en diversos foros posts mencionando ese error, y muchas veces se apuntaba a un error de instalación de Visual Studio, o del debugger, o de tocar claves del registro, o bien registrar la siguiente dll: mscordbi.dll.
En mi caso, no estaba registrada, y sin embargo pude depurar el código sin problemas bajo Windows en C++ o C#. Y eso me hacía pensar que habría una solución mas simple.
Antes de comenzar a tocar nada, verifiquen si el compilador funciona en otras circunstancias. La solución evidentemente era mas fácil.
/taller de Programación y Arte
septiembre 15, 2007
Hoy recibí de Aldo un mail con información sobre este taller de próximo comienzo en la Facultad de Ingeniería (2da semana de octubre). El mismo está orientado a alumnos de Bellas Artes, Arquitectura e Ingeniería.
Este taller fue armado por Etienne Delacroix, un docente francés proveniente del cyber punk que anda por el mundo ofreciendo su taller a las facultades interesadas.
Segun decía en el mail, Ingeniería fue la única facultad que aceptó su propuesta después de haber sido rechazada por Bellas Artes (no se mencionan motivos).
Actualmente se lleva a cabo en unos ‘laboratorios’ armados en los entrepisos del sector de “sala de máquinas”, al fondo de la facultad.
El cupo del taller es limitado, y el criterio de selección no parece ser tanto el orden de inscripción, sino mas bien las inquietudes que motivan a los interesados a realizarlo.
Uno de los requisitos es enviarle una carta al docente encargado señalandole las motivaciones que nos hacen querer tomar ese taller. El grupo parece estar formado en función de los perfiles de los ‘postulantes’ que mejor se adecuen a los objetivos del taller.
(Para estudiantes de Ingeniería no tiene materias previas, y otorga 3 créditos ).
Actualmente el TAP no está bajo la dirección de Delacroix, sino de otros docentes, segun se citaba, con sus ventajas y desventajas.
” …..la idea del taller es que el alumno aprenda a re-utilizar porciones de harware y software para construir otros implementos. se aprende a reutilizar parches de java y html para construir páginas web y pequeños programas gráficos, o a usar elementos electrónicos básicos para construir desde instalaciones interactivas a instrumentos musicales. cuando fui vi muchas cosas interesantes: pequeños teclados, pequeños robots que se movian siguiendo reglas básicas, videos hechos con fotos y programación java, programitas de dibujo muy sencillos pero efectivos y pasibles de ser “colgados” en la web… html es el lenguaje de progrmación de páginas web, y java es un lenguaje orientado a objetos que permite dibujar y hacer animaciones, muy similar a actionscript (de hecho es su base). El grupo de estudiantes es heterogéneo. Se trabaja en conjunto con estudiantes de ingeniería capacitados para realizar cosas complejas para las que probablemente se necesite mucho más información que la que el TAP proporciona, por lo que a veces para un lego puede ser frustrante, pero si se va con ganas de adquirir elementos básicos de programación y trabajo en equipo interdisciplinal, es una muy buena oportunidad.”
Quedé entusiasmada por participar de un taller donde se redefinen conceptos, y se experimenta con ellos extapolándolos a otra áreas. Y sin duda, que interactuar en esta experiencia con gente proveniente de otras orientaciones condimenta mis motivos. Me encuentro evaluando horarios de facultad y trabajo para ver si puedo formar parte…veremos.
En la web del Taller encontrarán mas información, aqui les dejo el programa, y particularmente destaco, aunque también está en la web, este texto imperdible de Pierre Lévy acerca de “La inteligencia colectiva”.
/language is a virus – anymails
septiembre 13, 2007
Anymails es el proyecto de tesis de Carolin Horn (diseño & concepto) y Florian Jenett (código) realizado en Flash/Processing, para el Dynamic Media Intitute Boston (2007). El mismo traza una metáfora visual del contenido de los emails recibidos con un ecosistema de organismos (que se mueven como si nadaran, forman grupos, cambian de tamaño, de color, formas, etc).
El objetivo es ver el mundo de nuestros emails desde otra experiencia.
Los emails individuales se representan por un microbio, las edades (su antiguedad) por el tamaño y opacidad (los mas nuevos grandes y opacos, los mas viejos chicos y transparentes). Así mismo podemos ver colonias de microbios, agrupados por ‘familia’, ‘propaganda’, etc. Los diferentes mails se categorizan por colores y tamaños.
Hay una barra horizontal que representa el tiempo, podemos navegar a través del tiempo para ver los diferentes tipos de mails, es interesante la posibilidad de encontrar patrones de comportamiento en diferentes momentos.
Tanto la tesis como el código pueden descargarse desde el propio sito.
Hay mas imagenes y videos (muy buenos) aqui pueden ver uno, es necesario QuickTime.
Mi envío de mails se ha restringido, el spam y las cadenas me resultan tediosos, los mails sin copia oculta también, todo suma y hace que cada vez más limite mis mails , o al menos a dar mi email fácilmente. Este proyecto plasma, sin ser su propósito quizás, algo tangencial, el (sobre)abuso de info y de ‘vínculos’ que nos exceden más de lo que probablemente podemos digerir. En la idea de este proyecto sobrevuela, al menos creo yo, un replanteo de su uso.
vía notcot
/Symbaloo, otro sitio web2.0 (?)
septiembre 13, 2007

Con Symbaloo la primera impresión que tuve fue curiosidad, ‘jugar’ con la web, no se si la convertiría en mi página principal (dudo), pero el proyecto en sí me pareció atractivo por la comodidad de su estética.
El planteamiento es sencillo, lograr un espacio con los servicios que más usamos al alcance de la mano.
Tiene botones estéticamente agradables, que podemos desplazar mediante drag&drop, agregar o eliminarlos. Cada uno de ellos se asocia a un servicio, widgets, blogs, feeds, buscadores, etc.
La web es configurable a nuestro placer, ya sea en tamaño, como en los servicios que le agregamos.
Ya viene con algunos servicios por defecto: Wikipedia, Last.fm, flickr, Gmail, Feeds (como Bloglines), y otros que los invito a experimentar
vía notcot
/google earth …el infinito y mas allá
septiembre 12, 2007
Google Earth 4.2 tiene unas características no menos que curiosas, menciono solo algunas:
- explorar el cielo a partir de un punto basado en nuestra ubicación en la tierra
- explorar galaxias, nebulosas
- observar el ciclo de las estrellas
- ver información geográfica compartida por usuarios mediante .KML (formato de archivos de Google Earth)
- acercarnos a las imagenes vistas por el telescopio espacial Hubble.
- superposiciones de imágenes propias
- mayor cantidad de datos geográficos, etc, etc
Un ejemplo basta (inglés)
(Descargar aqui versión gratuita)
vía haha.nu
/backup de drivers para Windows
septiembre 12, 2007

DriverMax es una aplicación que encuentro bastante util para evitar cargar CDs y CDs de drivers y ahorrar su búsqueda en internet (cuando los perdimos o la computadora vino sin ellos, algo mas frecuente de lo deseable).
Con DriverMax podemos exportar los drivers que elijamos a un archivo compactado o una carpeta (mediante su sistema Export Wizard).
Es aconsejable respaldar aquellos que funcionen correctamente
Para saber cuales son los que están andando correctamente, ir a Mi PC, con botón derecho (o secundario del mouse, yo soy zurda y ta al reves :p), ir Propiedades. Luego seleccionar la pestaña de Hardware:
Seleccionar Administración de dispositivos, clickear donde aparece el signo ‘+’, verificar que no haya controladores con un símbolo ‘?’ amarillo. Si lo hubiera, eso indica que hay conflictos con ese controlador.

De ese modo sabremos cuáles drivers exportar.
Después de cualquier reinstalación basta importar el archivo en donde hicimos el respaldo para recuperar y reinstalar todos los drivers en pocos minutos.
Un reporte nos aporta la información de todos los drivers instalados en el sistema (versión y fecha de release), y verifica las actualizaciones de los mismos.
DriverMax es una aplicación gratuita para Windows XP y Windows Vista, desarrollada por Innovative. Solo necesitamos un e-mail para registrarnos, que es a donde nos enviarán el número de serie para poder instalarlo.
(Aqui hay información sobre el sistema de drivers de Windows, util para entender algo mas esta herramienta)
Sinceramente, cómodo y util.
vía dotpod
