Construyo software.Lo opero.Lo protejo.

Soy Christopher. Desarrollo, infraestructura y seguridad desde Pachuca, México.

Baja ↓

Tres oficios, una persona

La mayoría de los equipos reparte esto entre tres perfiles. Yo escribo la aplicación, monto el servidor donde vive y reviso por dónde se la pueden tumbar. Por eso lo que entrego llega a producción y se queda ahí.

Construyo

Aplicaciones web, móviles y de escritorio: de una app de finanzas en Flutter a un panel en React y .NET o un motor gráfico en C++.

Opero

Servidores, virtualización, monitoreo y redes. Migraciones sin perder datos, respaldos que sí restauran y documentación que otro puede seguir.

Protejo

Auditorías con alcance acordado, endurecimiento de sistemas y respuesta a incidentes: contener, limpiar y dejar evidencia.

Proyectos

Desliza →

Captura de Tomín

Cada peso, a tiempo

Tomín

App personal para tarjetas de crédito: lee los estados de cuenta en PDF con IA, calcula cortes, fechas límite y meses sin intereses, y proyecta si el dinero alcanza hasta el siguiente pago.

  • Flutter
  • Supabase
  • PostgreSQL
  • Claude API

Auditoría con alcance obligatorio

TESSYRIUM

Plataforma de consola que orquesta nmap, ssh-audit y testssl. No escanea nada que no esté dentro del alcance firmado del proyecto, y guarda inventario e historial.

  • Python
  • Typer
  • Textual
Ver en GitHub ↗
Captura de Aether

Fondos vivos para Hyprland

Aether

Escenas animadas como fondo de escritorio, con motor propio, editor integrado al panel del sistema, una escena por monitor y mezcla de audio por programa.

  • C++
  • OpenGL
  • QML
  • PipeWire

RGB sin el software del fabricante

Alumbra

Control de iluminación para mis periféricos. Descifré el protocolo del hub observando el programa original y lo reescribí con una interfaz propia.

  • Rust
  • iced
  • USB HID

Todos los servidores en un tablero

Panel de servidores

Tablero interno para el equipo de infraestructura de una empresa: inventario tomado de Zabbix, métricas en vivo bajo demanda, accesos por rol con segundo factor y alertas por correo y Telegram.

  • React
  • .NET
  • Zabbix
  • TOTP

Catálogo de mayorista, en línea

Tienda en línea

Tienda en línea para una empresa de tecnología: sincroniza catálogo, precios y existencias con el mayorista, y lleva el pedido del carrito al pago.

  • Next.js
  • Fastify
  • Prisma
  • PostgreSQL

La red avisa antes que el cliente

Monitoreo con IA

Flujos que vigilan una red con más de mil equipos, agrupan las caídas por enlace y avisan por Telegram con contexto, en vez de cientos de alertas sueltas.

  • n8n
  • PostgreSQL
  • Telegram
  • IA

Antes de esto

  • 2025–26
    Inventarios y logística

    Control y movimiento masivo de inventario consumible y serializado, con auditoría de movimientos y reportes, dentro del sistema interno de una empresa.

    C# · ASP.NET · MySQL · JavaScript
  • 2025
    Detección de violencia en tiempo real

    Modelos de aprendizaje profundo entrenados para detectar violencia en video en vivo, con su frontend y backend.

    YOLOv8 · MobileNetV2 · BiLSTM · Flask
  • 2024–25
    EduSphere

    Plataforma web de gestión escolar para nivel básico y medio superior.

    PHP · MySQL · JavaScript
  • 2024
    Netwire AR

    App móvil para aprender redes con realidad aumentada, con modelos 3D propios.

    Unity · Blender

Casos

Tres problemas reales: cómo estaban, qué encontré, qué hice y cómo quedaron. Sin nombres de clientes.

[reparación]

El sistema de monitoreo que se caía solo

34×más rápida la lectura de disco

Cómo estaba

El sistema que vigila casi 4,000 equipos de red se colgaba cada día. La consola dejaba de responder, la base de datos registraba unos 270 errores diarios y los avisos de caídas se perdían: la red quedaba sin vigilancia justo cuando fallaba.

Qué encontré

Dos causas, una encima de la otra. La base de datos tenía índices corruptos en su historial. Y debajo, el disco de la máquina virtual usaba un controlador emulado antiguo: el hipervisor medía 1 ms por lectura, pero la base de datos esperaba 444 ms.

Qué hice

  • Reparé la base sin perder la configuración ni el inventario de equipos.
  • Cambié el disco a un controlador moderno clonándolo, con vuelta atrás preparada.
  • Dejé una revisión de integridad semanal y respaldos que se prueban solos.

Cómo quedó

Cero errores desde la reparación, la consola responde en 0.02 segundos y se liberaron 866 GB. Todo quedó en una bitácora que otra persona puede seguir paso a paso.

Lectura de disco
antes444 ms
después13 ms
Errores de base de datos por día
antes270
después0

[incidente]

Un sitio caído que resultó ser seis sitios tomados

6sitios comprometidos, no uno

Cómo estaba

Me pidieron revisar un sitio web que había dejado de funcionar en un servidor de hosting compartido. Parecía una falla de WordPress.

Qué encontré

No era una falla. Un minero de criptomonedas llevaba 20 días usando el procesador al 186 %, había puertas traseras que se reinstalaban cada hora desde hacía más de un año y un complemento que robaba contraseñas al iniciar sesión. Eran seis sitios, y el servidor tenía 273 parches de seguridad sin aplicar.

Qué hice

  • Revisión forense en solo lectura, en cinco fases, guardando la evidencia intacta.
  • Lista de indicadores para detectar el mismo ataque en otros servidores.
  • Copia limpia de cada sitio, verificada en un entorno aislado antes de entregarla.
  • Informe para dirección: qué pasó, quién responde por cada sitio y el plan.

Cómo quedó

Los sitios afectados se reconstruyeron en limpio y la dirección recibió un plan con prioridades para reemplazar el servidor, en vez de un «ya quedó» sin explicación.

[automatización]

Demasiadas alertas para leerlas

16×más alertas que tiempo para revisarlas

Cómo estaba

El turno de noche recibía 859 alertas de red. Revisar cada una toma unos 10 minutos: hacía falta 16 veces el tiempo disponible. En la práctica nadie podía distinguir una caída importante entre el ruido.

Qué encontré

Medí 59 horas de alertas reales. La mayoría eran la misma caída contada muchas veces: cuando falla un enlace, avisa cada equipo que cuelga de él.

Qué hice

  • Flujos automáticos que leen el estado de la red cada minuto.
  • Agrupación por topología: si cae un enlace, se reporta el enlace, no sus cien equipos.
  • Un solo mensaje por incidente, con la causa probable y a quién afecta.

Cómo quedó

En la medición, 2,036 caídas confirmadas quedaron en 703 incidentes. El aviso llega con contexto y antes de que llame el cliente.

Avisos por las mismas caídas
antes2,036
después703

Cómo trabajo

  1. Entiendo

    Antes de escribir código o tocar un servidor, dejo por escrito qué hay, qué se quiere y qué queda fuera. En seguridad, nada se revisa sin un alcance firmado.

  2. Construyo en chico

    Entregas pequeñas que ya funcionan, con pruebas. Prefiero que veas algo real cada pocos días a una gran entrega al final.

  3. Lo pongo a andar

    Servidor, respaldos, monitoreo y vuelta atrás preparada. Un sistema no está terminado hasta que corre donde debe y avisa cuando algo falla.

  4. Lo dejo documentado

    Bitácora de lo que se hizo y por qué, para que cualquiera pueda mantenerlo sin depender de mí.

Credenciales

Arrástralas ✥

Con qué trabajo

Fuera de turno

Lo que hago cuando no hay nada que arreglar. Casi todo tiene que ver con paciencia y con poner las cosas en su lugar.

Piano
Lo estoy aprendiendo. Prueba el de abajo: suena mejor que yo todavía.
Arte
De todo tipo. Me detengo en lo que está bien hecho, sea un cuadro o una interfaz.
Pesca
Esperar sin desesperarse también se entrena.
Orden
En el escritorio, en los servidores y en el código.
Resolver problemas
Soy de los que no sueltan un error hasta saber por qué pasó.
Patinaje
Equilibrio y caídas: se aprende de las dos.
Videojuegos
Para desconectarme, y porque también son sistemas bien hechos.
Personalizar Linux
Mi escritorio en Arch y Hyprland lo armé pieza por pieza.

Escucho de todo: del dubstep a la música clásica, con bachata, metal y k-pop en el camino.

Toca una tecla También con el teclado: de la A a la L

¿Hacemos algo?

Si tienes una aplicación por construir, una infraestructura que ordenar o un sistema que quieres revisar antes que alguien más lo haga, escríbeme.