Bio
Recientemente, me inscribí en el curso CS50-AI de Harvard para convertirme en ingeniero en IA. En el proceso, estoy aprendiendo Python, C y el uso de bases de datos vectoriales.
He trabajado en dos aplicaciones interrelacionadas: contabilidad agrícola, trazabilidad y seguridad alimentaria, bajo la modalidad de software como servicio (SaaS).
Cada aplicación admite múltiples inquilinos. Cada inquilino puede definir varias empresas. Cada empresa puede definir varias sucursales. En la aplicación de trazabilidad, cada sucursal puede definir varias unidades agrícolas o de producción. Senté las bases para incorporar el control de dispositivos o sensores IoT.
Equipé las aplicaciones con un módulo de aprendizaje automático para proporcionar datos, información contable y legal. En el caso de la trazabilidad, proporcioné información sobre nutrición, poda, cosecha, buenas prácticas agrícolas, entre otros temas.
Para lograr un impacto profundo en el usuario final, para el frontend opté por programar con TypeScript y Angular 14, utilizando bibliotecas de impacto como handsontable, summernote, angular forms y bootstrap como mi biblioteca CSS responsiva. Las aplicaciones están listas para ejecutarse en Nginx, contenedores Docker o pods de Kubernetes.
Diseñé una aplicación móvil con Ionic y Angular 18, ahorrando tiempo de diseño al utilizar los mismos componentes y servicios que ya utilizaba la aplicación principal. Para controlar todas las solicitudes del frontend, diseñé el backend con Jakarta EE 10, OpenJDK Azul Zulu 17, MicroProfile, MicroStream para gestionar bases de datos en memoria, Jakarta Persistence, JDBC y un conjunto de consultas SQL para responder y construir el módulo de aprendizaje automático.
Para la seguridad de los endpoints REST, diseñé un método para cifrar en el frontend utilizando cryptoJs y la clase correspondiente en el backend para descifrar los datos de seguridad.
El backend se divide en unos 20 microservicios que se ejecutan en el servidor de aplicaciones Payara 6. Payara 6 cuenta con un módulo MicroProfile que, junto con el archivo microprofile-config de la aplicación, permite definir variables que funcionan como @Profile de Spring, pero con mayor amplitud. Los endpoints REST producen y consumen objetos JSON. Si necesito comunicarme con otros servicios, utilizo interfaces de MicroProfile para lograrlo.
Cada microservicio está diseñado para ejecutarse en el servidor de aplicaciones o implementarse en un contenedor Docker con el entorno de ejecución de payra-micro o dentro de pods de Kubernetes.