Proyectos
ZofIA
Una plataforma educativa orientada a ayudar a los estudiantes en su preparación para el examen de admisión a la universidad más prestigiosa de México. Obtuvo más de 10,000 seguidores en Instagram en aproximadamente tres semanas después de su lanzamiento.
Contamos con un flujo automatizado que produce videos que contienen texto, imágenes y audio donde presentamos una pregunta con su solución y explicación. Este contenido se genera con la ayuda de Large Language Models (LLMs), modelos text-to-image y modelos text-to-speech. Luego integramos estos elementos usando Python para crear el video final, que luego se publica en nuestras distintas redes sociales.
El backend de la plataforma está escrito en Rust, el frontend en React y TypeScript, la base de datos es PostgreSQL y el servidor está alojado en Heroku.
Puedes probar la plataforma aquí: ZofIA
Chip 8
Una simple implementación de CHIP-8, escrita en Rust y compilada a WebAssembly; utiliza un simple canvas para renderizar los gráficas.
Demo:
En el juego wipeoff se controla la plataforma con las teclas q y e.
Trueno
Un Ray Tracer multithreaded que hace uso de SIMD.
Soporta diversos tipos de materiales (difuso, metálico, dieléctrico), antialiasing, una cámara configurable (resolución, apertura, enfoque) y composición de escena.
Implementación basada en el libro Ray Tracing in One Weekend
FIRE
Un editor de texto modal escrito completamente en C, sin usar dependencias externas.
Fue escrito en un intento de desempolvar mi conocimiento de C y también para intentar aprender prácticas modernas, como el uso de tipos estándar (stdint.h), o para evitar usar malloc en favor de calloc, etc. Mi principal guía en este proceso fue la publicación de Matt Stancliff en el blog How to C in 2016, es una buena lectura para ponerse al día con las "prácticas modernas" de C.
Soy un muy fan de neovim y esta fue mi principal inspiración al construir FIRE, como pueden ver en el demo de arriba.
Principales características
- Modos Normal e Insert, como en Vim.
- Abrir, mostrar, editar y guardar archivos de texto.
- Búsqueda incremental del contenido del archivo.
El código y las instrucciones para compilar y ejecutar el proyecto están disponibles en el repo.
Interprete
La implementación de un lenguaje de programación dinámico, Lux, y su respectivo interprete. Soporta variables, control de flujo, funciones, un REPL y se le dio particular importancia a la presentación y contenido de los mensajes de error.
Se basa en las lecciones presentada en el libro Crafting Interpreters de Robert Nystrom.
Puedes probar el REPL compilado a WebAssembly aquí:
Perros Covid
Sitio web para la recolección, procesamiento y caracterización de muestras por PCR de COVID-19 para su posterior uso en el adiestramiento de perros para identificar muestras positivas. Parte de un proyecto colaborativo entre la SEDENA (Secretaría de la Defensa Nacional), la SRE (Secretaría de Relaciones Exteriores) y la UNAM (Universidad Nacional Autónoma de México).
Gaceta UNAM: Reconocimiento a la FMVZ por proyecto sobre Covid-19
Objetivo
El objetivo principal de la página es ayudar a agilizar el proceso de entrenamiento de los perros, esto al facilitar el registro de las muestras utilizadas, las respuestas dadas durante las pruebas, la identidad del perro entrenando, el resultado obtenido en cada sesión y de igual manera mostrar estadísticas generales respecto al progreso de un perro en específico y en general de todos los caninos registrados.
Muestras
Una muestra es el resultado de la prueba PCR más algunos otros datos relevantes del individuo en el que se realizó la prueba, como su edad, sexo, comorbilidades, etc. Esta información adicional es relevante pues puede ayudar a detectar sesgos o patrones dentro de las muestras seleccionadas por los perros en los entrenamientos (ej. los falsos positivos suelen ser muestras de personas que toman x medicamento).
Las pruebas son almacenadas y consultadas directamente en el sitio web.
Tech Stack
El frontend consta principalmente del stack básico: HTML, CSS y para añadir interactividad se utiliza TypeScript y un par de bibliotecas de JavaScript: Chart.js, Moment.js, Selectize.js y un poco de JQuery. El backend fue construido completamente en Rust utilizando el framework Rocket. Los datos se almacenan en una instancia de PostgreSQL.
Lamentablemente no cuento con la autorización para hacer público el código fuente ni el enlace a la página. : (
Reporstat
Es un paquete para el lenguaje de programación Julia que tiene como objetivo agilizar la consulta de información poblacional de instituciones como el INEGI, el CONAPO y el CONEVAL, ésta segregada por municipios y estados para que, en conjunto con datos de cualquier índole, se facilite la realización de análisis y reportes estadísticos al usuario.