Hernán Calvo

Computer engineer · Systems, networks & automation · Heading into DevOps

Computer engineer working on Linux systems, network security and infrastructure, moving towards DevOps. At home I run NixOS on everything, self-host what I can on a Raspberry Pi, and build ergonomic keyboards.

Projects

What I'm building, and how each piece works.

Self-hosting · automation

Self-hosted assistant on a Raspberry Pi 5

A small always-on box to keep my week under control, with no ports open to the internet.

  • Syncs the university's ICS export into a dedicated Google Calendar every 30 minutes, upserting by UID. Running on the Pi since October 2026.
  • Deletions need two consecutive runs to agree, so a truncated feed never deletes anything.
  • Self-hosted ntfy alerts after repeated failures, reachable only through an outbound Cloudflare Tunnel with WAF and rate limiting. No open ports.
biggest challenge

The campus CDN answers non-browser clients with 403. A browser User-Agent fixes it, and the sync refuses to touch the calendar unless the body really starts with BEGIN:VCALENDAR.

  • python
  • systemd
  • raspberry-pi
  • google-calendar
  • cloudflare
Flow of one sync run: download the ICS, validate it, upsert by UID, guarded deletions, and an ntfy alert after repeated failures.
How it works

Final degree project, rebuilt

NILM Edge Platform

Taking my thesis from a research prototype to something reproducible and deployable.

  • Thesis: disaggregating whole-home power consumption into per-appliance estimates (C++, custom dataset, multithreading).
  • Rebuild goal: a Nix-pinned environment that runs the same on a laptop and on small ARM boards.
  • Currently designing the data pipeline and evaluation harness, before any model work.
  • nilm
  • edge
  • ai
  • mlops
  • python
  • nix

Infrastructure as code, at home

NixOS Dotfiles

Every machine I own, described in one flake.

  • One flake with per-host configs: desktop (in use), laptop and a future home server.
  • Shared modules in modules/common/, imported by every host (e.g. mDNS with avahi).
  • Custom nrs rebuild command that picks the host and stages new files automatically.
  • nixos
  • nix
  • linux
  • dotfiles
Flow of the nrs rebuild command: pick the host, check it exists in the flake, stage new files, run nixos-rebuild.
How it works

Other projects

Hobbies

What I do when I'm not at a terminal.

Writing

all posts → all notes →

About

Computer engineer working on Linux systems, network security and infrastructure, moving towards DevOps. At home I run NixOS on everything, self-host what I can on a Raspberry Pi, and build ergonomic keyboards.

This site is a notebook first and a portfolio second. No analytics, no comments and no third-party requests: fonts are self-hosted and pages ship without JavaScript.

At a glance
Based in
Madrid, Spain
Degree
BSc Computer Engineering, UPM
Exchange
Beihang University, Beijing
Studying
MSc DevOps (UNIR)
Languages
Spanish · English · Mandarin (B1)
Daily driver
NixOS with flakes
Keyboard
Ferris Sweep, 34 keys
Off-duty
TTRPGs, board games, video games