Street.
Plataforma profesional, en producción. Frontend Angular, backend .NET sobre AWS Elastic Beanstalk, assets servidos desde S3. Trabajo cloud-native — provisioning, costos y deploys automatizados son parte del problema, no un detalle posterior.
Licenciado en Ingeniería de Software por la Universidad ORT Uruguay, cursando la tesis para recibirme de Ingeniero. Construyo software para producción y doy clase de Teoría de la Computación en la misma facultad.
Soy Ayudante de Ingeniero y Licenciado en Ingeniería de Software por la Universidad ORT Uruguay, en el noveno semestre encarando la tesis para recibirme de Ingeniero en Sistemas. En paralelo, doy clase como profesor práctico de Teoría de la Computación en la misma facultad — la materia donde se desarman lenguajes y evaluadores desde adentro: χ, IMP, máquinas de Turing, cálculo lambda.
Me interesa el software bien hecho: arquitectura clara, código que otros pueden leer, decisiones técnicas que se justifican. Trabajo con .NET, Angular, AWS y el stack alrededor; me siento cómodo bajando a temas de redes, concurrencia o estructuras de datos cuando hace falta. Vivo en Uruguay y estoy listo para sumarme a un equipo que tome el oficio en serio.
Plataforma profesional, en producción. Frontend Angular, backend .NET sobre AWS Elastic Beanstalk, assets servidos desde S3. Trabajo cloud-native — provisioning, costos y deploys automatizados son parte del problema, no un detalle posterior.
Proyecto profesional real, en producción. Frontend en Angular, API en .NET y base de datos relacional. Cliente real, deadlines reales, decisiones de arquitectura que viven en internet todos los días.
Predicción probabilística del Mundial 2026 construida desde los cimientos: tres modelos estadísticos (Elo con decaimiento temporal, Bivariate Poisson y Dixon-Coles) combinados en un ensemble calibrado por backtest, con el torneo entero simulado por Monte Carlo. Sin cuotas compradas a una API ni oráculos opacos — cada número es reproducible, auditable y honesto sobre su propia incertidumbre. Caja de cristal, no caja negra.
Migración de un monolito a microservicios y despliegue real en AWS. El trabajo no era solo dividir servicios: era sostener cada decisión arquitectónica con RNFs concretos y medibles. Seis microservicios independientes (User, Account, Opportunity, Notification, Audit en .NET, API Gateway), Clean Architecture en cada uno, comunicación asíncrona con SNS/SQS, workers sidecar, base de datos propia por servicio y frontend Angular en S3. Desplegado en ECS Fargate con ALB, observabilidad centralizada en New Relic y CloudWatch, pruebas de carga con K6 que validan p95 < 300ms bajo 2400 req/min, CI con GitHub Actions y cumplimiento explícito de los 12 factores. Infraestructura real, costos reales, decisiones reales.
Proyecto académico de Big Data. Pipeline completo de ingesta, procesamiento y análisis: datos cargados con NiFi a HDFS, exploración y limpieza con PySpark en JupyterLabs, modelado normalizado con claves primarias únicas, almacenamiento en Hive y visualizaciones con GeoPandas, Bokeh y SuperSet. Cuatro datasets de salud (depresión, enfermedades cardíacas, salud mental, tabaco y drogas en jóvenes), cinco preguntas analíticas cruzadas y una propuesta alternativa sobre stack Azure cloud-native.
Proyecto académico de ML con dos problemas. Problema 1: clasificación binaria de opiniones sobre películas — feature engineering desde cero (20 variables derivadas), cinco clasificadores (Regresión Logística, Árbol de Decisión, Random Forest, Gradient Boosting, Redes Neuronales en tres arquitecturas), validación con Hold-Out, Repeated Hold-Out y Cross-Validation estratificada. Modelo final: Gradient Boosting con F1 de 0.75, validado en competencia Kaggle. Problema 2: NLP para predicción de género cinematográfico — pipeline de texto con NLTK, lematización, TF-IDF y GridSearchCV sobre ~8700 combinaciones.
Prueba de concepto de gobernanza descentralizada sobre EVM. Smart contracts en Solidity con tokens ERC-20, staking con recompensas, votación on-chain ponderada por stake, multisig y mecanismo de pánico. Frontend en React con Ethers.js, desplegado y verificado en Sepolia Testnet. 77 tests, 98.8% de cobertura de statements, 100% de funciones y líneas.
Arquitectura completa de un sistema de gestión de comidas congeladas. El trabajo no era construir features: era tomar decisiones de diseño justificadas y sostenerlas. Arquitectura modular con API central (api-yagni), seis subsistemas desacoplados (Kitchen, Fridge, Logistic, Client, BackOffice, Payment Gateway), tres bases de datos con roles distintos (MongoDB, MySQL, Redis) y vistas formales en UML — descomposición, uso, C&C y despliegue. Cada decisión sostenida con ADRs y atributos de calidad como criterio, no como decoración.
Cuatro iteraciones sobre una base de código con deuda técnica real. Kanban con WIP limits, Trunk-Based Development/gitflow, pipelines de CI con GitHub Actions para backend en C# y frontend en Angular, BDD con Cypress, TDD para corrección de bugs, métricas DevOps (MTTR) y retrospectivas DAKI. No era un proyecto verde: era entender qué pasa cuando el código ya existe, tiene problemas, y hay que organizarse para no empeorar lo que está roto mientras lo arreglás.
Sistema de gestión de edificios. API REST en .NET con frontend Angular. Aplicación rigurosa de SOLID, patrones GoF y GRASP, modelado en UML2 y métricas de calidad de código como criterio de diseño, no como adorno.
App de viajes compartidos. El foco no era el dominio: era resolver concurrencia real, paralelismo y comunicación con protocolos de red de bajo nivel. Sockets, sincronización, threads — el plomería del software distribuido.
Obligatorio de Sistemas Operativos. Cuatro ejercicios que cubren el espectro: shell scripting con manejo de archivos y validaciones en Bash, sincronización de hilos con semáforos en C (pthreads), concurrencia con tareas y rendez-vous en Ada, y orquestación de servicios con Docker Compose + Nginx + Flask. No es un ejercicio de dominio — es entender cómo el sistema operativo maneja procesos, memoria y comunicación entre ellos.
Implementación de un modelo híbrido para redes informáticas. Trabajo de capas, encapsulado y comportamiento de protocolos — entender qué pasa por debajo cuando un paquete viaja.
Implementación desde cero de estructuras de datos y algoritmos avanzados. Sin librerías, sin atajos: árboles, grafos, hashing, complejidad. Los fundamentos que aparecen en cada decisión técnica más adelante.
Trabajo académico de IA aplicado a problemas complejos. Búsqueda, heurísticas y representación de conocimiento — entender la materia desde adentro, no como cliente de una API.