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

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

Garden Simulator with OpenGL and Qt

garden simulator screenshot

This project is simulator for a garden to eventually integrate with my smart home system (a little below). It uses C++ and OpenGL/Qt to create a real time rendering sytem with environmental condition monitoring. Lighting changes depending on the temperature, giving a cool to warm shift in tone with the same shift in temperature. This is really more of a proof of concept than a useful tool at the moment, but I'm going to add more plant types to mirror the actual garden that will be a part of my smart home system, with some added automated sprinklers based on soil moisture levels, also toggleable with a UI button. I'm planning on making the overall architecture more robust like my AR Catan project's when I add it to my smart home as well. The system also incorporates garden saving and loading, and the typical features you might expect like camera movement, plant deletion, etc. The sensors are mock sensors for now/ also have a slider to use, but once added this will eventually sync up with my sensors connected to RPi Picos and other microcontrollers.

Made With:

  • C++
  • OpenGL
  • Qt6
  • Assimp

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

Raspberry Party Cam

Project Pi Screenshot Project Pi Screenshot Project Pi Screenshot

This project repurposes an old camera into a fun way to capture memories, the idea being to use it at parties or events so guests could pass the camera around and have a way to view all of the pictures afterwards. It uses a Raspberry Pi inside, with a button glued to the camera's orignal capture button, and a Raspberry Pi camera glued in as well. The Pi runs a simple Python script, and when a picture is taken, it saves and uploads the photo to a DropBox folder, creating a fun way to take and share pictures. I also printed out a QR code with a link to the DropBox folder and taped it to the side of the camera, so that partygoers could easily acces the link.

The big dilemma with this and thinking about expanding it comes with finding a balance between keeping the original camera feel while integrating the modern touches, especially in terms of adding anything externally, which came into play when thinking about powering the device. Luckily, the camera had a section in the back with a removal piece of plastic. I was able to remove the plastic and feed a wire through to a power bank velcroed onto the bottom to make it portable, which didn't mess with the expeience too much, at least in my (somewhat biased) opinion. I think in the future, it'll probably be worth switching to a Raspberry Pi Zero W for this and using a smaller powerbank so that everything fits inside, and the integrity of the original camera is kept totally intact, but this does work well as is and tends to be a hit at parties.

Made With:

  • Raspberry Pi
  • Python

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

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

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

Bocce

Project Bocce Screenshot 1 Project Bocce Screenshot 2 Project Bocce Screenshot 3

I've been playing around with making some games in Unity recently, and this is a little bocce game, which was one of my first projects. It's relatively barebones right now, but it is meant for two players, red and blue, and spawns alternating balls which the playeres can toss towards the pallino using the mouse. Like in real bocce, the winner is determined by whoever gets closer to the pallino after all the turns. It's been a pretty good experience for figuring out how to dial down the physics in Unity specifially, and was pretty fun to make.

Made With:

  • Unity
  • C#

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