Rafael Cristino

Rafael Cristino

MSc in Informatics and Computing Engineering student finalist @ FEUP

Erasmus+ semester @ Technical University of Vienna

Interned as Full-Stack Software Engineer @ JetBrains (2022) and Critical Manufacturing (2021)

Experience as Teaching Assistant (2021, 2022) and Junior Researcher (2022, 2023) @ FEUP


A selection of academic and personal projects


Stream Processing for Spatially-Distributed IoT Systems

Implementation of a data processing pipeline from the Kafka spout to the Storm topology, storing the results from the stream computations in Redis, and finally feeding to a Spring backend that prepares and communicates the data to the frontend through WebSockets, where it is displayed in real-time.


BeepLearning Autonomous Vehicle

An autonomous driving solution for a 1:10 scale car to compete in a track where the car had to drive itself while respecting lane markings, traffic signs, traffic lights, and crosswalks while also being able to execute maneuvers such as intersection navigation, overcoming a static car, and parking on a free parking stop. Won the "Best New Participating Team" award at the Bosch Future Mobility Challenge 2022.

Java-- to JVM Bytecode Compiler

Implementation of all stages of a compiler: parsing the Java-- code, generating the abstract syntax tree, performing semantic analysis, creating the symbol table, generating the intermediate representation (OLLIR), performing optimizations (registry allocation with liveness analysis and graph coloring, constant propagation, and more), and generating the final Jasmin code. The Jasmin code is then translated to Java bytecode by the Jasmin assembler.


TasteBuds Cooking Social Network

A social network for cooking recipes supporting expected functionality: visitor feed, user and administrator accounts, profile visibility control, personalized user recipe feed with advanced filtering, full-text search with GIN indexes, real-time messaging, recipe reviews, groups, banned accounts, and more.

Tic Tac Toe

A Kotlin Multiplatform (server + frontend) implementation of the Tic Tac Toe game in a 10x10 grid, supporting single-player mode against the computer powered by Monte Carlo tree search heuristic search algorithm.

3D Engine

An experimental - significantly underperforming - build of a 3D engine meant to solidify Computer Graphics theory understanding and implement classical algorithms such as Z-Buffer, Constant Shading, and Backface Culling.


IoT Temperature Monitoring System

A real-time temperature monitoring system using Thingy52 devices as temperature sensors that communicate their readings through Bluetooth Low Energy to an edge node, the ESP32, where they are aggregated and transmitted, through an MQTT broker, to the ThingsBoard dashboard.

Distributed Backup Service for the Web

A peer-based distributed backup system. Each peer can request a file backup and specify a certain amount of local disk space to store other peers' files. Each file is stored with a certain replication degree in multiple peers. The Chord algorithm was implemented to look up the peer that should keep each file, requiring only average log(n) hops.

Three Dragons game

A 3D rendering implementation of the Three Dragons board game. A Prolog server controls the game logic (valid moves, single-player mode against the computer with different difficulties), and the graphical interface displays the game scene with custom 3D objects, animations, and shaders and allows the user to interact with the board using the mouse, undo plays, and more.

Match the Tiles game

Implementation of a single-player game supporting hints and computer solutions powered by heuristic state space search algorithms like A*, iterative deepening, and greedy and by a deep reinforcement learning model.

Breakout game

An implementation of the Breakout game with Java and Lanterna, a text-based GUI library. This project aimed to effectively utilize and adapt design patterns to suit our specific requirements. Additionally, we focused on developing comprehensive unit and property-based tests to ensure the game's robustness and reliability.

Past Explorer

A Chromium extension that uses Arquivo.pt's API (similar to Wayback Machine, but for Portuguese websites) to fetch older versions of the current page and allows their viewing side by side, by text differences, and in a new separator.