Software and Hardware engineer
English
Spanish
Catalan
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.
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.
2024
Port Super Mario 64 and other apps to LG Smart TV
view morePort 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 moreI maintain several packages on nixpkgs of my interest, some of them are: - devcontainer - flatito - construct - smtp4dev
2023
Port Nix Language to compiler-explorer
view moreAllows 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 moreReverse-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 moreMinirun 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 moreWSLD 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...