๐“† ๐“†Ÿ ๐“†ž

hi, i'm purnoor!

computer science + informatics @ ut austin, may 2028

cs for the backend.
informatics for the user.

austin, tx ยท runs on matcha ๐Ÿต

purnoor sharma

๐“†Ÿwhat i've built

cuconv

a 2d convolution written in cuda four times, each version measured against cudnn on the same inputs in the same process. i wanted to find out how much of a vendor library a hand-written kernel can reach on a real card, and to be able to say exactly what is in the way of the rest. pick a layer and see.

layer
filter batch
naive
smem tile
reg tile
+ float4
cudnn

the textbook shared-memory tile is slower than the naive kernel on every shape with more than three input channels. nsight compute said why: bank conflicts on the strided reads, two barriers per input channel, and the naive version was getting its reuse out of l1 for free. reading the counters that way is what picked every step after it, and the last one runs the fma pipe at 90%.

resnet18 conv1 feature maps, 64 channels from my kernel beside 64 from cudnn, visually identical
resnet18's first layer run both ways ยท max difference across 802,816 outputs: exactly 0

cuda, c++, nsight compute, cudnn, pytorch

itchfeed

a nasdaq itch feed handler in c++. parses the binary stream and rebuilds the order book. i rewrote the book to never allocate in the hot path and measured what it bought.

stl book1,472 ns
flat book421 ns
p99 per-message latency, 25m messages, pinned core

c++20, linux, perf, cmake, jenkins

reposter

cut out the repetitive part of advertising across facebook groups, built around the chrome debugger api when the dom wouldn't cooperate.

1,000+ paying users on the earlier listing

typescript, supabase, postgres rls, stripe

tern

live ingestion over kafka. holds per-device ordering under 64 concurrent clients, rejects duplicates and stale readings, and fails the build on a latency regression.

p5056.3 ms
p95106.6 ms
request latency at 1,003 events/sec

java, spring boot, kafka, jenkins, docker

event-time-pipeline

what happens after kafka. windows on device event time under a two-minute watermark so late readings land in the right bucket, then serves history through trino.

73,019 events/sec ยท 3.05 s p95 batch ยท 200,000 events

scala, spark, trino, parquet, elasticsearch

๐“†žwhere i've swum so far

microsoftincoming jan 2027

swe intern, security and identity

googlejul โ€“ aug 2026

swe intern, google cloud

enterprise mobilitymay โ€“ jul 2026

technical pm intern

afterquery (yc w25)oct 2025 โ€“ jan 2026

ai data engineering intern

ut austin csjun โ€“ oct 2025

undergrad researcher, deep learning and data engineering