Computer Science and Mathematics student

Luis Saenz

Who am I?

Double degree in Computer Science and Mathematics, Universidad Autónoma de Madrid. Erasmus year at TUM Munich.

I am in my final year of the double degree and I cannot leave alone what sits underneath: I wrote an MNIST classifier in NumPy before touching PyTorch, and the server this page runs on is mine to look after. I am after an internship where I can keep building things like that.

Portrait of Luis Saenz

What I use

Grouped by what each thing is for.

Languages

  • Python
  • Java
  • C
  • C++
  • SQL

Machine learning

  • NumPy
  • PyTorch
  • Pandas
  • Matplotlib

Systems and tooling

  • Linux
  • Docker
  • Git
  • Bash
  • Poetry
  • LaTeX

Data

  • PostgreSQL
  • SQLite
  • Nginx

Work

Three things I built whole, start to finish.

28 × 28 px7

Click to change the digit

2024

MNIST classifier in NumPy

95% test accuracy

A neural network written from scratch. Forward pass, backpropagation and gradient descent implemented by hand with NumPy, no frameworks involved, to understand what every operation does before delegating it.

  • Python
  • NumPy
Read the code

2026

Automatic driver assignment

Technical design and MVP

A proposal for the transport company MoMo: first a technical analysis and design document, then a Python MVP. The algorithm matches drivers to jobs while minimising the total cost of the assignment.

  • Python
  • Poetry
  • LaTeX
Read the code
immichphoto library
nasbackups
webthis page
n8nautomation

2025

Home server

Self-hosted at home

The machine serving this page. Linux and Docker containers for everything running at home: Immich for the photo library, a NAS for backups and a reverse proxy with HTTPS in front plus other services.

  • Linux
  • Docker
  • Nginx
No public repository

Utilities

Utility programs I use.

Claude Code skills

My own instructions teaching the agent how I work: how to review code, how to deploy to the server, and a tutor mode that explains instead of solving.

  • code-review

    Reviews a diff for real bugs before touching anything about style.

    wget https://raw.githubusercontent.com/LSM-git/claude-skills/main/code-review/SKILL.md
  • deploy

    Automates deploying this portfolio to my home server.

    wget https://raw.githubusercontent.com/LSM-git/claude-skills/main/deploy/SKILL.md
View repository

Utility scripts

Short command-line programs for what I repeat every week: server backups, clearing downloads and spinning up work environments.

  • backup.sh

    Copies the server’s databases and Docker volumes to the NAS.

    wget https://raw.githubusercontent.com/LSM-git/scripts/main/backup.sh
  • clean-downloads.sh

    Sorts and clears out what has been piling up in Downloads for weeks.

    wget https://raw.githubusercontent.com/LSM-git/scripts/main/clean-downloads.sh
View repository

Dotfiles

My Linux setup under version control — window manager, terminal and editor — so a fresh machine is ready in minutes.

  • hypr/

    Window manager configuration: keybindings, animations and monitors.

    wget https://raw.githubusercontent.com/LSM-git/dotfiles/main/hypr/hyprland.conf
  • nvim/

    Neovim configuration: plugins, keymaps and LSP settings.

    wget https://raw.githubusercontent.com/LSM-git/dotfiles/main/nvim/init.lua
View repository

Get in touch

Here you can find all of my contact information. Message me wherever suits you best.

Download CV