Entrevista con Teo Fonrouge

Esta entrada se publicó originalmente en Harbour Magazine, mi publicación sobre el lenguaje de programación Harbour.

En esta nueva entrevista Teo Fonrouge nos cuenta sus inicios en la programación, su participación en el proyecto Harbour y nos da su visión acerca del proyecto.

Hola, mi nombre es Teodoro Fonrouge Orozco, nací en la Ciudad de México, aunque por azares del destino en mi registro de nacimiento dice que vi la primera luz el 26 de octubre de 1966 en la ciudad de Acayucan en el estado de Veracruz, y en realidad siempre he preferido pensar que mi tierra es Veracruz … 🙂

Actualmente vivo en un poblado en la periferia de la ciudad de México, donde creo que se vive en forma más tranquila que en la vertiginosa y apretada ciudad, de mis hijos; tengo 4 chicas y 3 chicos…

Mi relación con las computadoras se remonta a 1985 cuando apenas iba a cumplir 19. En una ocasión, acompañé a mis padres a una tienda departamental grande, de esas que te venden desde un kilo de verduras, hasta lo último en tecnología… y en efecto, lo que ví en ese momento me causó una gran impresión: una computadora Commodore 16, fué amor a primera vista … 🙂 , aunque un amor un poco extraño, ya que en ese momento yo no tenía idea para que me podía servir una computadora, si yo no tenía intenciones de enviar un vehículo tripulado a Marte ! … ya que en ese entonces, eso era lo que yo pensaba que era lo único para lo que servían las computadoras …. jajaja

En la escuela obtuve mi mejores calificaciones en matemáticas, y algo me decía que quizá, con un poco de suerte, podría hacer que una computadora sirviera como apoyo a estudiantes para el aprendizaje de cálculo, álgebra, o al menos para enseñar sumas y restas, o quizá para mantener una conversación con ella … 😀

Así que le rogué a mi padre que me comprara esa cosa para estudiarla detenidamente en casa, lo cual logré eventualmente después de estar todo un mes haciendo méritos para que él así lo hiciera … Ahora me siento inmensamente tonto, pero lo primero que hice al tener la computadora en casa, fue escribir una pregunta en ella: ‘cuando descubrio Cristobal Colon America ?” y darle <return>, y para mi asombro luego leer su respuesta:

? SYNTAX ERROR

READY.

bueno, a partir de ahi, de algún modo esa es la respuesta que mas frecuentemente he obtenido de todas las computadoras con las que me he topado … jajajaja

Al cabo de varias semanas, logré escribir un pequeño programa que hacía figuras geométricas en la pantalla y las enviaba a una impresora ENTEIA (compatible con Epson) con una mezcla de código en Basic y lenguaje ensamblador 6502, al cabo sólo tenía 16kb de memoria RAM disponible que tenía que compartir para el programa y los datos de los dibujos, que básicamente se guardaban en un segmento de memoria que representaba la imagen gráfica en el monitor, bueno en la televisión de mi madre en ese entonces … Con ese programa me presente en las oficinas de la empresa que en ese entonces comercializaba las computadoras Commodore, tuve suerte de que me atendiera el director y le mostré mi creación … me dijo “cuanto quieres ?” y le dije “quiero trabajar aqui…” ese fué mi primer trabajo formal, un par de años después dejé la compañía y puse mi oficina como consultor independiente.

Mi primer contacto con el lenguaje Clipper fue con una de las compañías a las que yo daba consultoría, tenían un pequeño programa escrito en Clipper para controlar inventarios, el cual requería algunos cambios y extensiones, ya que el programador a cargo abandonó el proyecto, mi primer contacto con Harbour fué por 2004, y en realidad fue con xHarbour su pícaro hijo :-), al principio pagué por utilizar el servicio de xharbour.com y poco después empecé a utilizar Harbour, y ya no ví razón para pagar el servicio.

Desde el momento en que empecé a utilizar xHarbour, y después Harbour, me involucré a poco con la comunidad de usuarios, haciendo preguntas y en ocasiones, proporcionando respuestas.

Decidí que mi mejor forma de aportar a la comunidad Harbour era por medio de algún proyecto que la comunidad pudiese aprovechar, así que en 2006 empecé a escribir wxHarbour (https://sourceforge.net/projects/wxharbour/), un port simple de http://wxwidgets.org un GUI multi — plataforma para Harbour.

También hice una exploración para utilizar Qt como plataforma GUI para Harbour (qtHarbour), pero pronto me dí cuenta de que más bien debía orientar esfuerzos para simplificar la lógica de detrás de las estructuras de datos de mis aplicaciones, además de que Qt no es para nada liviano.

En 2012 inicié el proyecto OORDB en sourceforge.net, después lo moví a GitHub ( https://github.com/tfonrouge/oordb ), con la finalidad de manejar tablas de bases de datos relacionales en una forma orientada a objetos, ya que pienso que esto puede simplificar enormemente al diseño, desarrollo y mantenimiento de estructuras complejas de datos, actualmente utilizo este esquema en un proyecto extenso de planeación y control de Producción para compañías manufactureras, esta aplicación esta corriendo actualmente y contiene estructuras complejas de datos como asociación de tablas de datos con estructuras de listas de componentes, operaciones de manufactura, centros y áreas de trabajo, emisión de ordenes de producción/ordenes de trabajo a partir de una programación de entregas de pedidos a clientes, adicionalmente mantiene información de monitoreo industrial de la maquinaria en tiempo real, utilizando Arduino’s conectados a estaciones corriendo con hardware Raspberry Pi, la información se puede consultar en tiempo real por internet utilizando un web service:

sin lugar a dudas, OORDB me ha permitido simplificar la programación de este proyecto de una manera estructurada, manejando clases que representan documentos (una orden de trabajo, un elemento de inventario, etc) que permiten crear subclases para especializar un tipo especifico de documento, adicionalmente, permite que se mantenga la descripción de campos, descripción de índices, y descriptor de relaciones master <-> child entre las tablas.

Así que ahora no necesito un GUI multi — plataforma para la interface de mis aplicaciones, para eso utilizo simple java script (AngularJS) haciendo peticiones a un servidor de datos utilizando un modelo RESTful donde se intercambian documentos JSON entre cliente y servidor.

Desde hace poco mas de dos años, he estado haciendo preparativos para migrar mis bases de datos xBase a un contenedor mas robusto, y con más prestaciones, por lo que elegí MongoDb, así que empecé a escribir un port del MongoDb C Driver para Harbour (https://github.com/tfonrouge/hbmongoc) y he estado integrando el driver a mi OORDB.

Actualmente estoy en proceso de migrar mis estructuras de datos de xBase a MongoDb utilizando OORDB con muy buenos resultados, y migrar el entorno de desarrollo de esta aplicación de manufactura de Harbour a Java. Para ello ya he creado en Java una aplicación integrada al excelente IDE IntelliJ (https://www.jetbrains.com/idea/) que me permite generar automáticamente el código de los descriptores de tablas, indices, relaciones para replicar mis estructuras y lógica de datos de Harbour OORDB a Java, es una version de OORDB que estoy escribiendo para Java.

Mi propósito es mover el desarrollo de esta aplicación de manufactura a Java / MongoDb.

Harbour es un excelente lenguaje de programación, sin embargo tiene algunos inconvenientes que son críticos en mi estructura de negocios, creo que el principal inconveniente es la falta de core-developers (creo que se cuentan con los dedos de las manos) para resolver problemas, bugs en el compilador e implementar mejoras. Y a veces uno tiene que invertir tiempo para resolver algunos de los problemas, cuando lo que se requiere es enfocar en el desarrollo de la aplicación.

Un IDE como IntelliJ no estaría de más 🙂

Una más extensa y unida comunidad no estaría de más, tenemos Harbour y xHarbour…

Conozco, y he programado en muchos otros lenguajes de programación para mis clientes a lo largo de mi actividad laboral, pero últimamente he estado haciendo centralizando mas de mis proyectos en Java / JavaScript.

Aunque creo que me falta tiempo para desarrollar algunas otras áreas, como por ejemplo Sistemas Expertos con IA …

En fin… en algún momento estoy seguro que sucederá.

Un abrazo a toda la comunidad Harbour/xHarbour