Desarrollo de aplicaciones
#coding #c/c++ #cs50
La programación de aplic aciones es una de las áreas más apasionates de mi carrera, he estado desempeñando labores de este tipo desde hace aproximadamente tres años usando una aplicación llamada Ecava que nos permitía desplegar aplicaciones web locales para nuestros clientes, la desventaja principal con esta solución es que si bien era posible desarrollar aplicaciones rápidamente, es bastante restringido lo que se puede hacer ya que no es posible tocar el código principal del servidor web. A pesar de ello, desarrollamos aplicaciones basadas en HTML, CSS, JavaScript, PostgreSQL para el monitoreo de procesos y equipos con almacenamiento de datos históricos y generación de reportes.
Dada las limitaciones del software utilizado, comencé a enfocarme en el desarrollo de un servidor web, una primera versión la desarrollé en PHP 8, Bootstrap 5 y base de datos MySQL, posteriromente decidí migrar a Node.js y mediante el framwork Express.js he estado trabajando en un servidor web que permita el monitoreo de procesos industriales, almacenamiento de datos histórico en una base de datos PostgreSQL y una interfaz de usuario basada en React y usando componentes de Chakra UI que me han permitido crear dashboards vistosos para desplegar la información de las variables leídas desde los equipos de los clientes, principalmente, medidores de energía, controladores de generadores para respaldo de energía, medidores o transmisores de flujo, temperatura y/o nivel, variadores de frecuencia, etc. Todos esos equipos son típicos en la industria alimenticia, petrolera, manejo de aguas (residuales o potable), sistemas aislados de suministro de energía mediante grupos electrógenos (generadores eléctricos). Para poder recolectar los datos desde estos equipos nos valemos de distintos protocolos de comuniación típicos en la industria como lo son Modbus TCP o Ethernet/IP.
Mi formación en programación
De forma autodidacta he estado aprendiendo HTML, CSS, JavaScript, PHP, PostgreSQL, MySQL, React, Node.js. Sin embargo, he participado en el curso impartido por la Universidad de Harvard de forma online conocido como CS50 (https://cs50.harvard.edu/x/2024/), en este curso he aprendido aspectos importantes en el desarrollo en lenguaje C, tales como: manejo de memoria, tipos de datos básicos y estructuras de datos; adicionalmente SQL, HTML, CSS, JavaScript, Python y uno de sus framework Flask, un poco de ciberseguridad e Inteligencia artifical. Durante el desarrollo del curso no solo se enseñan los aspectos teóricos, existe una sección de problemas propuestos que el participante debe solucionar y enviar para su progresiva evaluación, de esta manera se va garantizando que se cumplen los objetivos del curso. Al final del mismo el participante debe plantear un proyecto final que permita dar solución a una necesidad, en mi caso he trabajado en el desarrollo de un programa en C qu permita comunicar en Modbus TCP y subir los datos a un servidor web a través del protocolo MQTT, para ello el he desarrollado un cliente Modbus TCP sencillo para la lectura de datos y mediante el uso de la librería Mosquitto, los datos adquiridos son publicados en un tópido MQTT para que el servidor web pueda recibirlos y publicarlos en una interfaz web.
Adicionalmente, estoy tomando un curso de desarrollo full stack avalado por la Universidad de Helsinki, Finlandia (Full Stack course) En este curso se desarrollan destrezas en React, Node.js, TypeScript, CSS, GraphQL, Contenedores, CI/CD y bases de datos relacionales, para su aprobación es necesario leer el contenido del curso y desarrollar las actividades que son subidas a Github y compartidas con el staff del curso para su evaluación.
De igual manera, he tomado diferentes cursos en la plataforma de Microsot learn en donde he aprendido el uso de Git y Github, Github copilot, Github Codespace, colaboración en Github, etc.
También he tomado los siguientes cursos de forma auditada en la plataforma de cursos de tipo MOOC Edx.