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
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.
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.
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.
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.
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.
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>
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.
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;
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.