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
Portfolio
A selection of academic and personal projects
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.
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.
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.
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.
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.
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.
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.
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.
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.