Hello world! 👋
I’m Michael and I come from New York. My role in this world shifts like early light—everchanging, yet cast in familiar hues: programmer, researcher, writer, teacher, or some blend of these. Most often, I’m fueled by curiosity, the courage to build something extraordinary, and a cup of matcha.
My journey
2025–Present: PhD Student in Psychology (Cognitive and Comparative Psychology) CUNY Graduate Center
2025–Present: Teaching Fellowship Queens College
2024–2025: VENLab Manager Brown University
2020–2024: BA, Computer Science and Psychology College of the Holy Cross
I have worked with
Previous research
Higher quality narrative results in better video gaming experience but only for higher quality graphics Psychonomic Society, 2025
Abstract: Better narrative and graphics quality can enhance the video game experience by “transporting” users into a virtual world. We created low versus high narrative quality by varying vocabulary imaginativeness, relevant details, irrelevant details, and conciseness. Texture resolution and polygon count were changed to create low versus high graphics quality. Seventy-five undergraduate participants played a text-choice-based interactive video game in an immersive desktop environment. Results show that narrative quality had a main effect on narrative experience satisfaction, narrative transportation, presence, and social presence. Graphics quality had the main effect only on visual aesthetics. A high-quality narrative resulted in a better video gaming experience than a lower-quality narrative, but only in the higher-graphics condition. Females experienced more enjoyment, visual aesthetics, and presence than males. Our findings show that improving the narrative quality more than the graphics quality of a text-choice-based interactive video game can improve users’ gaming experience, with some gender effects.
Narrative quality affects narrative satisfaction, narrative transportation, and social presence of story-driven video games Brown University CoPsy Department Retreat, 2025
Effects of narrative quality and graphics quality on virtual story-driven experience Psychonomic Society, 2024
Abstract: Virtual reality (VR) technology’s consumer usage has grown unprecedentedly. VR media creators leverage narrative-driven factors (e.g., a captivating plot) to maximize users’ engagement and enhance presence (the subjective quality of “being there” in a virtual environment) and enjoyment. These story-driven experiences can also be influenced by graphics quality. Participants played an interactive desktop VR game. Using a 2 × 2 experimental design, we measured participants’ experiences in high versus low narrative quality conditions (varying in imaginativeness of vocabulary, amount of relevant and irrelevant details, and conciseness) and high versus low graphics quality conditions (varying in texture resolution and polygon count). Preliminary results suggest interactions between narrative and graphics quality for total playtime, presence, social presence, attitude alignment, visual aesthetics, and motion sickness. Higher graphics quality enhanced users’ enjoyment, donation amount, and narrative transportation. Both manipulations affected story-driven experiences, but graphics quality had stronger effects.
A social synchrony task for evaluating differences in social connectedness NEURON, 2024
Effect of ambulatory conditions and virtual locomotion techniques on distance estimation and motion sickness of a navigated VR environment IEEE VR, 2024
Abstract: We present preliminary results from a 2 X 2 between-subjects experiment. Our two IVs were ambulatory-restrictive (i.e., without locomotion) postural conditions (sitting vs. standing), and virtual navigation techniques (steering vs. teleporting). Participants navigated a complex virtual environment comprising outdoor and indoor environments for 10 minutes. We found that teleporting may result in less online distance estimation error than steering. Motion sickness was lower while teleporting than steering and when sitting than standing. Teleporting also resulted in better system usability than steering. We discuss the results' implications for VR usability.
VR environments

A visual novel story game I created for my first independent research project. Includes fully functional game logic, cutscenes, dynamically-appearing dialogue, user choices, and animations.

This project tests users' spatiotemporal integration of moving avatars. The system facilitates:
- Trial generation with varied crowd sizes and perturbation parameters.
- Session setup and management for user-run experiments.
- Real-time data collection of participant and object motion and eye tracking.
- JSON progress saving and CSV data export.
- Session recreation directly in the Unity editor.

Tests the feasibility of a vibrotactile belt for providing haptic feedback in a zero-vision environment.
- Generates paths using all specified angle/distance pairs within a limited space.
- Includes serial communication with an Arduino using Java helper methods.
- Positional and rotational tracking of the subject.
- Load trial configurations from CSV and save progress in JSON.

A multiplayer walking experiment in augmented reality for testing avoidance between two human subjects.
- Multiplayer networking via Unity Netcode and Unity Transport Protocol. One user hosts on the local network and the other joins the session as a client.
- Dynamic spawning of home and goal poles in a passthrough environment.
- Positional and rotational tracking of subjects with synchronized data collection.
- Audio cues signaling trial phases (start, pause, end, speed changes).
- Load trial configurations from CSV and save progress in JSON.

A walking experiment for testing human avoidance of a virtual object.
- Initializes object position and motion from an input file.
- Positional and rotational tracking of the subject and object.
- Load trial configurations from CSV and save progress in JSON.
Independent projects

A mod that introduces a new leader and civilization to the game.


Developed using Three.js.
Articles
During my undergraduate years at the College of the Holy Cross, I wrote for The Spire, the official student newspaper. I began as a staff writer, soon promoted to editor and then chief editor of the satire and creative writing section. My goal with every article was to make you laugh; if not laugh, smile; if not smile, wonder, I don’t know what I just read—but I’m glad I read it. I’m a changed person now.
⭐ Recommended articles
Scooby-Doo: Fair Trade or Exploitment?
Netflix Announces Innovative Policy Changes
Optimizing Your Reaction Time for Enrollment
BREAKING: Congressmen Expose TikTok’s Development Failures
Gaming & Esports Club Touches Grass: An Interview With Sebastian Johns ‘23
A Deep Dive Into Upcoming Events on myHC
Holy Cross Theatre Premieres Musical Company
⭐ Report: “Can Robots Feel Pain?”
Surviving the Worcester Winter
⭐ Unfocused Group #1: Self-Driving Cars and Microwaves
BREAKING: Joe Biden Stays in Power Following 2022 Election
My Spring 2023 Course Recommendations
Family Weekend Account From a Holy Cross Father
⭐ “Theory:
President Rougeau Beats Colgate in Intense Football Match
What is Going On With Orientation?
Holy Cross Sued For Sledding Tragedy
⭐ The Case of the Disappearing Snow
My Experience With That Leroy Kid
A Comprehensive Guide to the Science Complex
Job Posting – All Students Eligible!
Student Artist Makes a Commotion, Fire Department Called
Live from Cool Beans: Milkshake Tier List
⭐ Building Snowmen On the Hill
Recorded Phone Call from 2-11-2021
They Took Away Our Campus, and Now They’re Taking Away Halloween
The Hokey Pokey
I immensely dislike the Hokey Pokey.
It is, inherently, a flawed dance. In each verse, it instructs the dancer to "do the Hokey Pokey," a step that is never explicitly defined and presumably refers to the dance in and of itself. This results in a recursive loop without an end condition.
Consider the following C++ program, which attempts to implement the Hokey Pokey but will inevitably run into a stack overflow error due to infinite recursion:
#include <iostream>
#include <vector>
using namespace std;
class BodyPart {
public:
string type;
string side;
BodyPart() = default;
BodyPart(string t, string s) : type(t), side(s) {}
void PutIn() { cout << "You put your " << side << " " << type << " in." << endl; }
void PutOut() { cout << "You put your " << side << " " << type << " out." << endl; }
void ShakeAllAbout() { cout << "You shake your " << side << " " << type << " all about." << endl; }
};
// Initialize body parts
BodyPart leftFoot("foot", "left");
BodyPart rightFoot("foot", "right");
BodyPart leftHand("hand", "left");
BodyPart rightHand("hand", "right");
BodyPart head("head", "");
BodyPart wholeSelf("self", "");
vector bodyParts = { &leftFoot, &rightFoot, &leftHand, &rightHand, &head, &wholeSelf };
void HokeyPokey();
void TurnYourselfAround();
int main() {
HokeyPokey();
}
void HokeyPokey() {
for (BodyPart* part : bodyParts) {
part->PutIn();
part->PutOut();
part->PutIn();
part->ShakeAllAbout();
HokeyPokey(); // This is where the infinite recursion occurs
TurnYourselfAround();
}
}
void TurnYourselfAround() {
cout << "You turn yourself around." << endl;
}