Build
Web, mobile and desktop applications: from a finance app in Flutter to a React and .NET dashboard or a graphics engine in C++.
I'm Christopher. Software, infrastructure and security from Pachuca, Mexico.
Most teams split this across three roles. I write the application, set up the server it lives on and check how someone could take it down. That is why what I deliver reaches production and stays there.
Web, mobile and desktop applications: from a finance app in Flutter to a React and .NET dashboard or a graphics engine in C++.
Servers, virtualization, monitoring and networks. Migrations that lose no data, backups that actually restore and docs someone else can follow.
Audits with an agreed scope, system hardening and incident response: contain, clean up and leave evidence.
Scroll →

Every peso, on time
Personal app for credit cards: it reads PDF statements with AI, works out closing dates, due dates and interest-free installments, and projects whether the money lasts until the next payment.
Audits with a mandatory scope
Console platform that orchestrates nmap, ssh-audit and testssl. It scans nothing outside the signed scope of the project, and keeps inventory and history.

Live wallpapers for Hyprland
Animated scenes as desktop wallpaper, with its own engine, an editor built into the system panel, one scene per monitor and per-app audio mixing.
RGB without the vendor's software
Lighting control for my peripherals. I worked out the hub protocol by observing the original program and rewrote it with my own interface.
Every server on one board
Internal dashboard for a company's infrastructure team: inventory pulled from Zabbix, live metrics on demand, role-based access with a second factor and alerts by email and Telegram.
A wholesaler catalog, online
Online store for a technology company: it syncs catalog, prices and stock with the wholesaler and takes the order from cart to payment.
The network reports before the customer does
Workflows that watch a network of over a thousand devices, group outages by link and report on Telegram with context instead of hundreds of loose alerts.
Control and bulk movement of consumable and serialized inventory, with movement auditing and reports, inside a company's internal system.
C# · ASP.NET · MySQL · JavaScriptDeep learning models trained to detect violence in live video, with their frontend and backend.
YOLOv8 · MobileNetV2 · BiLSTM · FlaskWeb platform for school management at primary and secondary level.
PHP · MySQL · JavaScriptMobile app for learning networking with augmented reality, with my own 3D models.
Unity · BlenderThree real problems: how they were, what I found, what I did and how they ended up. No client names.
[repair]
34×faster disk reads
The system watching almost 4,000 network devices hung every day. The console stopped responding, the database logged about 270 errors a day and outage alerts were lost: the network went unwatched exactly when it failed.
Two causes, one on top of the other. The database had corrupt indexes in its history. Underneath, the virtual machine disk used an old emulated controller: the hypervisor measured 1 ms per read while the database waited 444 ms.
Zero errors since the repair, the console answers in 0.02 seconds and 866 GB were freed. Everything went into a log someone else can follow step by step.
[incident]
6compromised sites, not one
I was asked to look at a website that had stopped working on a shared hosting server. It looked like a WordPress fault.
It was not a fault. A crypto miner had been using the processor at 186% for 20 days, backdoors had been reinstalling themselves every hour for over a year, and a plugin was stealing passwords at login. It was six sites, and the server had 273 security patches pending.
The affected sites were rebuilt clean and management received a prioritized plan to replace the server, instead of an unexplained "it is fixed".
[automation]
16×more alerts than time to review them
The night shift received 859 network alerts. Reviewing each takes about 10 minutes: that needed 16 times the time available. In practice nobody could tell an important outage from the noise.
I measured 59 hours of real alerts. Most were the same outage counted many times: when a link fails, every device behind it reports.
In the measurement, 2,036 confirmed outages became 703 incidents. The alert arrives with context and before the customer calls.
Before writing code or touching a server, I write down what exists, what is wanted and what is out of scope. In security, nothing is reviewed without a signed scope.
Small deliveries that already work, with tests. I would rather show you something real every few days than one big delivery at the end.
Server, backups, monitoring and a rollback ready. A system is not finished until it runs where it should and reports when something fails.
A log of what was done and why, so anyone can maintain it without depending on me.
Drag them ✥
Cisco Networking AcademyCCNA: Introduction to Networks2023
Cisco Networking AcademyCCNA: Switching, Routing, and Wireless Essentials2024
FortinetFortinet Certified Fundamentals in Cybersecurityuntil 2027
FortinetNSE: Introduction to the Threat Landscapev3.0
FortinetNSE: Technical Introduction to Cybersecurityv2.0
Cisco Networking AcademyPython Essentials 12024What I do when nothing needs fixing. Almost all of it is about patience and putting things in their place.
I listen to everything: from dubstep to classical music, with bachata, metal and k-pop along the way.
Play a key Also on your keyboard: A to L
If you have an application to build, infrastructure to put in order or a system you want reviewed before someone else does it, write to me.