Raphael Russo

About Me

Hi! I'm Raphael, an MSCS student from Boston, MA. I enjoy building interactive and fun software, whether it’s related to augmented reality, graphics, IoT, or mobile and web apps. I'm passionate about bringing innovative ideas to life with solutions that are scalable and maintainable. I’m always excited to learn new technologies and collaborate on meaningful projects. You can check out some of my favorite work below!

GitHub LinkedIn

Projects

Graphics Engine and Model Renderer

Loading...

A custom graphics engine built from scratch in C (no external libraries like OpenGL, Vulkan, etc.). This includes all related mathematical functions, Bresenham's line drawing algorithm, scanline and barycentric filling, graphics primitives, and more. The engine also includes a hierarchical modeling system, scene graph traversal, supports PLY model imports, and implements shading techniques like Phong, Gouraud, Gooch, and Cel shading. The model viewer on the left was created by compiling the library to WebAssembly and using a WebGL canvas for the pixel values returned from the engine. You can also check out my full graphics portfolio below with a little more of an in depth description.

Made With:

  • C

OpenGL cube with IMU Control

IMU OpenGL Screenshot

This project is a real-time 3D visualization system that combines embedded systems with modern graphics programming. It uses a Qt interface with OpenGL to render a cube, controlling the orientation with an IMU. The IMU is connected to a Raspberry Pi Pico W for wireless sensor data transmission over TCP/IP. Sensor fusion algorithms (complementary, Madgwick, Kalman filters) were implemented to process the IMU data for smooth motion tracking. I'm currently working on implementing the main application on a Pi 4b as well.

Made With:

  • C++
  • OpenGL
  • Qt6
  • Pico W
  • TCP/IP
  • I2C
  • Linux

Augmented Reality Catan

Project 2 Screenshot

This project is an object-oriented, full stack augmented reality version of Settlers of Catan using an MVC architecture and coded in C++. The idea came from both wanting to keep track of game history and player stats, and also to provide a cool way to display a live game to anyone watching. It was created using a combination of OpenGL, OpenCV, Qt6, and SQLite.

3D game pieces get mapped onto the 2D video stream through OpenGL and OpenCV rendering strategies depending on the object. You can use different camera sources, whether your computer's web camera or stream from another device. For example, I found it useful to use a Raspberry Pi placed above the table with a simple Flask server to stream video to the app. The code uses a variety of design patterns and handles multithreading for video input, frame processing, and GUI operations.

The image on the left is an example of the GUI and the 3D object for the ore resource.

Made With:

  • C++
  • OpenGL
  • OpenCV
  • Qt6
  • SQLite

GreenThumbs

Project 2 Screenshot Project 2 Screenshot Project 2 ScreenshotProject 2 Screenshot Project 2 Screenshot Project 2 Screenshot

GreenThumbs is full-stack mobile application for gardeners with a Firebase Realtime Database. It includes a drag and drop garden planning UI, social media aspect with a friends system, profile pages, and messaging system, weather updates (using National Weather Service API) and plant recommendations based on location, and plant progress tracking. My personal contributions included the garden UI, social media side, and some work on the main dashboard. It was coded using Java and Android Studio.

Made With:

  • Java
  • Android Studio
  • Firebase

IoT Smart Home

IoT Virtual Assistant Picture IoT GUI Picture

An IoT smart home and virtual assistant using Raspberry Pi 4's, Pico Ws, and a Discord bot coded in Python. The bot is hosted on Heroku and communicates with the Pi's via HiveMQ and MQTT for remote commands and real-time alerts. A Pi hosts a local Mosquitto server for communication between all the different devices locally. It uses various sensors (e.g. temperature, moisture, motion) to keep an eye on environmental conditions and trigger automated actions using Sonoff devices flashed with Tasmota. Data is stored locally with SQLite.

One Pi also connects to the OpenAI API to create the pictured virtual assistant that can execute commands and output speech through audio and visual waveforms on a small display to simulate computer interaction. Currently, I'm working on an developing MVC based dashboard application using C++ and Qt6 for the system.

The GitHub link has a diagram of the system, and a couple example videos.

Made With:

  • Python
  • C++
  • MQTT
  • Qt6
  • SQLite

Simple Model Viewer

A lightweight npm package for displaying 3D models using Three.js. This is meant for people without a coding background to quickly add some models to their websites. For example, someone with a 3D modeling portfolio or looking to add some visual flair to their landing page. It can easily be embedded like on the left which uses the below code. Click and drag on the model to move it around.

<div class="project-demo" id="my-model-viewer">
<script src="https://unpkg.com/simple-model-viewer@1.0.4/dist/browser/model-viewer.browser.umd.js"></script>
<script>
const viewer = new ModelViewer({
containerId: "my-model-viewer",
modelsDirectory: "/glb_models/",
models: ["sheep.glb", "chalice.glb"],
showGui: true,
backgroundColor: 0xffffff,
width: 400,
height: 400,
});
</script>
</div>

Made With:

  • JavaScript
  • Three.js

Raph's Dashes

Project 2 Screenshot Project 2 Screenshot Project 2 Screenshot

A personal dashboard with a to do list, contacts, and custom-built calendar. Uses a React front end and Django Rest Framework for the backend.

Made With:

  • React
  • Django Rest Framework
  • HTML, CSS, JS
  • Python

UniDB

ERD

A normalized relational database for a sample university in BCNF. A Python script generates test data, and R and SQL are used to populate a local SQLite database. Has a variety of sample SQL queries from simple to advanced with CTEs and window functions and uses views, triggers, and indexes for optimization.

Example query to get the students with the top ten GPA's per major if they have at least 3 grades reported:

                
                WITH MinClasses AS (
                    SELECT student_id
                    FROM Enrollment
                    WHERE grade IS NOT NULL
                    GROUP BY student_id
                    HAVING COUNT(*) >= 3
                )
                SELECT 
                    student_id AS 'StuID',
                    email AS 'StuEmail',
                    gpa AS 'StuGPA',
                    major_name AS 'MajorName'
                FROM (
                    SELECT
                        m.major_name,
                        s.student_id,
                        s.email,
                        s.gpa,
                        DENSE_RANK() OVER (PARTITION BY sm.major_id ORDER BY s.gpa DESC) AS stuRank
                    FROM
                        Students s
                    JOIN StudentMajors sm ON s.student_id = sm.student_id
                    JOIN Majors m ON sm.major_id = m.major_id
                    WHERE
                        s.GPA IS NOT NULL
                        AND s.student_id IN (SELECT student_id FROM MinClasses)
                ) TopStudents
                WHERE stuRank <= 10;
                
                

Made With:

  • SQL
  • SQLite
  • R
  • Python

PixMix++

An object-oriented and MVC based command line image editor with various filters and transformations such as sharpen, blur, sepia, silver tone, and more Coded in C++ and adapted from a version developed in Java for class using Swing GUI complete with full JUnit testing.

Made With:

  • C++
  • Java