I'm passionate about creating beautiful user-focused systems, systems-level software engineering, and computer graphics. p.s. click around
Infrastructure Software Engineer Intern @ LinkedIn Summer 2026. Prev. Software Engineer Intern @ Cepton. Co-Founder of Cornell XR Project Team
Every ray bounce, material evaluation, and light sample runs entirely on the GPU, written in DirectX 12 and HLSL. Implements hair BCSDF rendering, Disney-style rendering, volumetric participating media, image-based lighting with importance sampling, depth of field, etc.
Tech Stack: C++, HLSL, DirectX 12, DirectX Raytracing (DXR), Intel OIDN
Dev LogA complete, from-scratch compiler for Eta, a C- like statically-typed language. The pipeline covers 12 phases spanning lexing, parsing, type checking, IR translation, canonicalization, basic block formation, and SSA transformation.
Optimizations include constant folding, copy/constant propagation, and dead code elimination on SSA form. The back end performs liveness analysis, runs graph-coloring register allocator with move coalescing and spill heuristics, and emits ABI-compliant x86-64 assembly via tree-pattern-matching instruction tiling.
Tech Stack: C++23, Flex, Bison, x86-64 assembly
Dev LogIntern project at Cepton, an autonomous vehicle startup. Built a pipeline that overlays recorded real-world LiDAR sensor data onto synthetic GPU-rendered geometry in their real-time simulator, so simulations carry actual environmental depth without needing hand-authored mesh maps.
I designed a parallel rendering stage that runs a custom compute shader alongside the existing rasterizer. For every LiDAR ray fired, the shader samples both the rasterized synthetic scene and a preloaded real-world depth texture, then picks the right surface per pixel in real time. The depth data lives in a dedicated GPU texture packed into a compact 32-bit format, keeping memory overhead low and the existing render pipeline untouched. Yay!
Tech Stack: Rust, WGSL, wgpu, Cepton SDK
Blog PostInspired by a research paper, I collaborated with a team of 5 to create Neuroscent, a system connecting VR brain-computer interfaces with olfactory displays to promote users' mental well-being based on biofeedback. Used OpenBCI's Galea ($30k) BCI VR Headset connected to Unity with a dynamic interactive environment based off of detected alpha brain waves. Basically, hands-free exploration in a Unity Environment that I designed and coded up from scratch. Trying to turn this into a cross-university project right now!
Tech Stack: C#, Unity, OpenBCI software, Blender, Arduino
DevpostWORK IN PROGRESS: I want to learn more deeply how OpenGL works by writing a simplified clone and suffering through the learning process.
Tech Stack: C++
Dev LogWORK IN PROGRESS: With no external libraries, and certainly no graphics libraries, I'm making my own ray tracer to learn more about graphics and create cool renders for my projects.
Tech Stack: C++, CUDA
Dev LogMade for a game design class, I worked with a team of 7 to make a stealth game centered around a stray cat and octopus to present at Cornell's GDIAC showcase. From the UI to the game features. all of it was made on the LibGDX Java-based game engine.
Tech Stack: 100% JAVA!!
Showcase and Play!Building visualizations of EM Waves, Gaussian Surfaces, and multiple other models with Unity and C# to help students visualize otherwise invisible electromagnetism concepts. Built in collaboration with Cornell's Physics department for 400 students, with 800+ plays.
Tech Stack: Unity, C#
Deployed ProjectI built a website to inform a general, curious audience about Sailing to the Stars' July, 2025 launch to space. Website was featured in the Cornell Chronicle! The bulk of the website was built and deployed the last two days before it made it into the Cornell Chronicle. I personally recruited the web designer and the co-developer for the website. Thanks guys!
Here's the Website!Built with Javascript and Three.js with WebGL shader code, HTML, CSS. There is a naive solving algorithm that I am working on for the cube right now, but some steps are backtracked in the wrong direction right now (see if you can find it in action!). Working on debugging this!