Ruben Cano Diaz

Software and Hardware engineer

Contact

Address
Barcelona, Spain

Education

2020
MASTER IN INNOVATION AND RESEARCH IN INFORMATICS: HPC
Polytechnic University of Catalonia (UPC)
Catalonia, Spain
2018
BACHELOR OF INFORMATICS ENGINEERING: HARDWARE
Polytechnic University of Catalonia (UPC)
Catalonia, Spain
2017
Summer School: Computer Vision and Chinese
Beihang University (Beijing University of Aeronautics and Astronautics)
Beijing, China

Misc

Participant in SC18 Student Cluster Competition
Parallel Programming & HPC
Performance Analysis
CUDA
C++23
Software Architecture
Embedded Systems
FPGA
Xilinx Vivado
Low Level Programming & Assembly
RISC-V
Familiar with Driver Development
Processor Interfacing
Memory Management
Unix Systems
Container Technologies
Docker
CI/CD Pipelines
Reproducible Builds
Agile Methodologies
Monitoring & Tracing
Nix Language
Reverse Engineering
ex-Board Member of video games development association (VGAFIB)
Game Development

Languages

English

Spanish

Catalan

About Me

    I'm a highly passionate and motivated engineer, in all my years as a computer entusiast, I've developed a quite broad set of skills,
which usually means that I'm able to tackle a wide range of problems, from low level programming to high level programming. I'm always
looking for new challenges and I'm always eager to learn new things and I love to have ideas to work on.

At the same time, I enjoy teaching and sharing my knowledge with others, so I ocassionally perform training sessions.
    

Experience

2018-2022

Barcelona Supercomputing Center (BSC) | Jordi Girona, 29, 08034 Barcelona

R&D Engineer

OmpSs@FPGA + CUDA + CL (public):

- Coherency layer between any number of virtual or physical memory spaces. - Framework that allows to execute the asynchronous-tasks once the data is ready on the device. - Baremetal RISC-V tasks protocol and integration with OmpSs-2 runtime. - Support for execution of tasks in FPGA accelerators for OmpSs-2 runtime. - Support for CUDA and OpenCL CUDA Kernels for both, discrete and unified memory. - Runtime CUDA-Loader that self-reads the elf file and loads the CUDA kernels into the device.

European MEEP project (public):

- Experience with Alveo U280 and U55C cards using vivado software. - QEMU remote pci-forwarder device and AXI bridge for verilator. - Simulated UART over PCIe bar and baremetal UART-Lite drivers. - 1st-stage bootloader for RISC-V which with a memory viewer/editor. - U-BOOT Port to our custom RISC-V core. - Linux-boot on our custom RISC-V core. - Linux Kernel dma-api implementation for our RISC-V architecture - Shared memory between PCIe host and RISC-V core residing in FPGA. - Ethernet over shared memory host/riscv-fpga. - PCIe ethernet device driver for "verilog-ethernet" IP. - Interfacing of RISC-V cores with interconnects/devices and DRAM/HBM memory on FPGA.

European Legato project (public):

- VSCode/Eclipse plugin for OmpSs autocomplete. - Cloud-Based integrated IDE based on Eclipse Che.

2022-2025

Wordline Iberia SAU | PERE IV, 291, 08020 Barcelona

Software Engineer

- Modernize C++20 codebase by using modern C++ features and best practices.
- Modernize and unify scripts using Python to replace legacy bash scripts.
- Analyze performance bottlenecks and create traces to identify the root cause.
- Introduce new tools and methodologies to improve the development process.
- Create and maintain CI/CD pipelines for the projects.
- Lead a team to develop a development environment for (~400 developers) using Nix language and containerization technologies.
- Perform code mentoring and training sessions on Container Technologies, Nix and C++20.
- Work in client-related projects to develop new features in a financial application.

Side Projects

2024

Port Super Mario 64 and other apps to LG Smart TV

view more
Port N64 Super Mario 64 decompilation project, PICO-8 Emulator FAKE8 and some web-apps to LG Smart TV.

2024

Maintain several packages on Nixpkgs

view more
I maintain several packages on nixpkgs of my interest, some of them are:
- devcontainer
- flatito
- construct
- smtp4dev

2023

Port Nix Language to compiler-explorer

view more
Allows to run Nix evaluations on compiler-explorer, a web-based compiler that allows to see the assembly code generated by the compiler.

2021

Pokemon Fire Red multiplayer

view more
Reverse-Engineering of Pokemon Fire Red using IDA Pro, adapting m-GBA emulator to support hooks on arbitrary memory addresses, reading memory related to the game and offering a simple web-interface to control the actions of the AI.

2020

MiniRun runtime

view more
Minirun is a minimalistic task-based runtime that doesn't require compiler support. 
It's written in C++ and it's very simple to use and header-only, which does not require any compiler extensions and could be used in any C++ project.
Supports tasks dependencies with sentinels and etherogeneous devices like CUDA, OpenCL, etc.

2019

WSLD

view more
WSLD is a simple tool to manage WSL distributions, it allows to import/export, backup and restore WSL distributions using docker images as the base.

2010-2024

Several small projects

Designed new quests and systems for MMORPG private-servers, in both, server and client.
Created new systems for MMORPG private-servers
Cheat-detection systems on MMORPGs
Reverse-engineering and cheat development
Maintenance of MySQL databases 
FreeBSD sysadmin
Personal programming professor
Telegram bots
Chromium web extensions development

And many more...