Software around language models, and the code that checks them.
I'm Shawn Liu, a first-year M.S. student in computer science at Columbia. I build software around language models, and the part I care about most is what checks the output before a person sees it. Two of those systems are live, Loop and Foothold. Four published papers behind them. Looking for a Summer 2027 software or ML engineering internship.
B.S. CS · UC Irvine 2026M.S. CS · Columbia, expected Jan 2028Open to SWE / ML internships
Published Cross-modal event-encoder attention · WACV 2026
Cross-modal attention learned by our WACV 2026 event encoder, one of four accepted papers.
Published at WACV 2026 NeurIPS 2025 ISLPED 2026 Frontiers in AI
4
Accepted papers · WACV, NeurIPS workshop, ISLPED, Frontiers in AI
4×
Lower projected FHE bootstrapping overhead, in a CKKS noise simulation
+15.2pts
Zero-shot points gained on unseen N-ImageNet classes · WACV 2026
65%
Fewer UAV carrier-landing failures than legacy optical markers, in adverse-weather simulation
01 Flagship · LLM systems
Loop
Give Loop a career goal and your free hours and it builds a study plan on your Google Calendar. Five language-model nodes draft the plan; ordinary code validates and schedules it, and nothing reaches the calendar until you approve. I built it for my own daily use, and it runs at loop-study.com.
Five LLM nodes write the plans and the prose. Everything that can actually touch your calendar is ordinary code, validated, and waits for your approval.
Propose · five LLM nodes, one isolated package
Strategistsyllabus drafted from retrieved source claims, with citations
↓
Plannerstructured task plan from a validated syllabus
Reflection summarywords for drift that deterministic code already classified
User-facing explanationwords for an outcome it is not allowed to change
Resume intakeskills read out of a resume, mapped to a closed taxonomy
The LLM SDK cannot be imported outside this package. import-linter fails the build if you try.
Dispose · deterministic
Validation layerfive checks: schema, graph, coverage, user-fit, scheduling. Failures go back to the LLM as typed repairs, twice at most
↓
Greedy schedulerdraft only, no write access
↓
Approval gate before calendar writesnothing lands on the calendar until you say so
↓
Calendar write managerthe only code that writes: it rechecks the approval and the payload hash, dry-runs, catches duplicates, verifies after writing, and offers rollback, retry, or keep
↓
Google Calendar
Every failure carries a typed reason code, and one supervisor state machine owns every transition. Calendar sync is reconciliation-based: your real calendar wins on overlap, valid external changes are adopted, and events you deleted are remembered so they do not come back.
5,152
Tests across backend and frontend, 4,826 of them behind the API
5
LLM nodes. Everything else is ordinary code
242
Source documents in the corpus a plan can cite
0.76
Recall@5 over 75 labeled retrieval queries, pinned in the repo as a floor. MRR 0.71
Where the plan's claims come from
Syllabi are not generated from nothing. A curated corpus of 242 documents sits behind BM25 retrieval, so every claim in a plan points back at where it came from, and the bibliography is generated from the same corpus. Retrieval is ordinary code; the model only consumes what it is handed. Graded on 75 labeled queries against a pinned 188-document snapshot: recall@5 0.76, MRR 0.71. I also built a dense-embedding hybrid that scored 0.08 MRR higher and did not ship it, because BM25 alone was already over the floor and the hybrid doubled the moving parts.
A prompt change nobody measured fails the build
Every LLM call lands in a SQLite call log with tokens, cost, and latency. A capture tool records real model outputs into committed recordings, and CI re-grades those recordings offline on every push: schema validity, repair recovery, plan-quality metrics, and an offline judge for the prose. The grader never calls a model. Prompt bytes are pinned by SHA-256 in two layers, fourteen pin cases in all, so editing a prompt without re-recording fails make check. Live API calls never run in CI.
One fixture deliberately fails, so I know the gate still catches something. In fairness to the gate, no real prompt change has ever tripped it: 126 of 126 CI runs are green.
What still runs by hand
The retrieval floors are pinned in the repo, but the command that checks them is not in CI yet, so a retrieval regression reaches me later than a prompt one. That is the next thing I fix. The frontend tests are real and they pass, but they are not in the CI workflow either, so the 5,152 number is not one gate. The per-user cost model is a written baseline, not something the code enforces.
The deployment
The whole app ships as one Docker image on Fly.io: a Node stage builds the React SPA, then a python:3.11-slim stage installs exact-pinned dependencies, so no dev tooling reaches production. It is deliberately one uvicorn process on one always-on machine, because SQLite with WAL is a one-process store and there is nothing to gain from worker pools fighting over it. OAuth tokens are encrypted at rest and Loop never stores raw calendar event titles.
Loop puts real weeks on a real calendar, and every write sits behind ordinary validation, an approval gate, and a CI job that re-grades recorded model outputs. Foothold works the same way: one Claude node drafts the appeal letter, and no course code in it survives without a matching finding.
Two years in labs at UC Irvine on neuro-symbolic AI, hyperdimensional computing, multimodal models, and encrypted inference. WACV 2026, a NeurIPS 2025 workshop, ISLPED 2026, and Frontiers in AI.
I live with two cats, Coconut and Kumquat. I listen to a lot of D'Angelo, shoot hoops, snowboard, and play too much Cyberpunk. The Spotify feed below is live, and it is mostly D'Angelo.
Four accepted papers, and two I withdrew from review after the encrypted pipeline turned out to be simulated rather than end to end. The ones marked lead are where I am first author. Open any of them for the abstract, the figures, and what I actually did.
WACV 2026
Cross-Modal Event Encoder: Bridging Image–Text Knowledge to Event Streams
Aligns a trainable event-camera encoder to CLIP's frozen image-text space, so an event stream inherits CLIP's zero-shot labels: +15.2 points on unseen N-ImageNet classes.
Brain-Inspired Reasoning under Homomorphic Encryption
Real CKKS noise measured in Microsoft SEAL, then injected into a simulation of encrypted graph inference: a noise-adaptive schedule cuts projected bootstrapping cost about 4× at over 90% accuracy. Inference never ran under real encryption, which is why I withdrew it.
FHE · HDC · Neurosymbolic AI · Privacy-Preserving ML
2026
Withdrawn from review · 2026
HyperEncrypt: Homomorphic Hyperdimensional Computing for Efficient & Secure Learning
HDC as an alternative to encrypted deep learning: shallow algebra that survives FHE noise. Under modeled CKKS noise, sparse bootstrapping schedules hold near-clean accuracy with up to an order of magnitude fewer refresh operations.
HDC · Kernel Methods · CKKS · Privacy-Preserving ML
2026
ISLPED 2026
Integrating Symbolic & Neural Mechanisms for Adversarially Robust HDC
Fuses Vision Transformer features with classical texture and shape descriptors through HDC, so accuracy falls off slowly under FGSM and genetic attacks: +17 to 26 points recovered from partial adversarial retraining.
HDC · Neurosymbolic AI · Adversarial Robustness · ViT
Foothold first, my second live system and my solo Stellic Pathfinders 2026 entry. Then the vision and healthcare work: a U.S. Navy collaboration, crash anticipation from dashcam video, and a course project that found the usual ECG benchmark split leaks patient identity. The full-stack products I shipped for a wholesale food business and a nonprofit are at the bottom.
Watch the 2-minute demo
LLM systems · Stellic Pathfinders 2026 entry● Live
Foothold · Transfer Credit Navigator
A California community college student enters their courses and a target UC or CSU and learns which will transfer. The verdict is deterministic over 352,024 ASSIST articulation rows and every finding cites its agreement; one Claude node drafts the appeal letter for at-risk courses, and every course code in it is checked against the findings. Built solo in three weeks for Stellic Pathfinders 2026, live at foothold-transfer.com.
A pose-estimation and symbolic-reasoning model in PyTorch for autonomous UAV carrier landing in adverse weather, replacing legacy fixed-pattern optical markers. The reasoning layer holds the landing whenever it sees a person on the deck.
65% fewer landing failures than legacy optical markers, in adverse-weather simulation.
Computer vision · autonomous driving
Neurosymbolic Crash Anticipation
Warns a driver before a crash from dashcam video alone. A 21.88M-parameter VideoMAE teacher is distilled into a 2.95M-parameter student that streams one frame at a time, and a YOLO11n plus ByteTrack layer with monocular collision geometry binds each warning to a tracked vehicle, so an alarm can be checked against what it saw.
3.05 s mean lead time before impact, 3 false alarms across 301 no-crash videos, 408 fps. Unfinished: no ego-motion estimate, so the geometry degrades in the ego vehicle's own turns.
A course project that found the usual MIT-BIH train/test split leaks patient identity, so the model learns the patient rather than the arrhythmia. The same 64,966-parameter CNN scores 98.36% beat-wise and 83.88% on a random patient-wise split. A search over 50,000 sampled patient assignments keeps all six beat classes in the honest test set.
CNNLSTM-AEMIT-BIHPatient-wise eval
98.36% vs 83.88%on the same model, two splits apart. Many published MIT-BIH results use the leaky one. Unfinished: the curated splits need retraining before I quote them.
Antimicrobial peptide activity predicted from structure, not just chemistry: a graph convolutional network over ESMFold-predicted conformations, one node per amino acid residue and the bonds as edges, fused with SVM descriptors.
ESMFoldSVM / MLP / GNNQSARBioIntelligence Lab
+22% F1 from the geometric features at the chosen threshold, against QSAR descriptors alone. The number moves with the operating point.
Crash Anticipation demoscroll →
Shipped productsfull-stack work, earlier
E-commerce · solo build● Live
AdamsFoods Wholesale
A wholesale e-commerce platform in React and Node / Express, with signed-URL media on S3 and JWT role-guarded admin routes. Built over the summer of 2025 and still live.
A donation-management platform for a national nonprofit, with role-based access for coordinators, donors, and admins across regional chapters. Built with Commit the Change at UCI, free of charge.
The inventory system that replaced their handwritten logs: Node.js routes over PostgreSQL, 300+ SKUs, low-stock alerts, CSV export, and a 3D map of the warehouse. It saves the staff five to seven hours a week.
Foothold is live at foothold-transfer.com: a transfer-credit navigator for the California community college to UC/CSU corridor, built solo in three weeks for the Stellic Pathfinders 2026 challenge. The model never decides what transfers; the articulation agreement does. [2-min demo][Project]
Jul 2026
Loop is deployed live at loop-study.com: a study planner where five LLM nodes draft and ordinary code validates, schedules, and waits for approval before touching a calendar. I built it for my own daily use. [Case study]
May 22, 2026
Integrating Symbolic and Neural Mechanisms for Adversarially Robust Hyperdimensional Computing was accepted to ISLPED 2026.
Apr 5, 2026
Live Spotify stats went up in the About section, if you want to see what I have had on repeat lately.
Jan 19, 2026
Optimal Hyperdimensional Representation for Learning and Cognitive Computation: third author, accepted to Frontiers in Artificial Intelligence. [Paper]
Dec 15, 2025
Started a new position at BioIntelligence Lab with Dr. Haleh Alimohamadi, building antimicrobial peptide classifiers from ESMFold-predicted structure and QSAR descriptors.
Nov 10, 2025
Cross-Modal Event Encoder: Bridging Image–Text Knowledge to Event Streams was accepted to WACV 2026.
Sept 23, 2025
Geometric Priors for Generalizable World Models via Vector Symbolic Architecture was accepted to NeurIPS 2025 Workshop NeurReps.
06 The person
The rest of it
I'm a first-year M.S. student in computer science at Columbia, expected January 2028, and I finished my B.S. in computer science at UC Irvine in 2026. At UCI I worked in BiasLab with Prof. Mohsen Imani on neuro-symbolic AI, hyperdimensional computing, multimodal models, and encrypted inference, and in the BioIntelligence Lab with Dr. Haleh Alimohamadi on structure-aware peptide prediction. I live with two cats, Coconut and Kumquat, who are named after fruit and are not otherwise alike. Most of what I read right now is about how machine learning systems fail in production rather than in papers.
Robust Reasoning and Learning with Brain-Inspired Representations under Homomorphic Encryption
Privacy-Preserving AI · Neuro-Symbolic Learning · Homomorphic Encryption · HDC
Withdrawn from review, 2026
A simulation study of noise-adaptive bootstrapping for encrypted GNN inference. We characterized real CKKS noise distributions empirically using Microsoft SEAL, then used a calibrated noise-injection model to evaluate how distributed bootstrapping schedules trade off accuracy and compute in HDC-based graph reasoning.
Key Results
4× reduction in projected bootstrapping overhead via noise-adaptive scheduling, in simulation
Empirical characterization of CKKS noise distributions under GNN operations, measured with Microsoft SEAL
HDC symbolic structure preserved under modeled encrypted operations
Why Homomorphic Encryption?
FHE allows computation directly on encrypted data, which would let cloud inference run without exposing sensitive inputs.
Simulation Framework
The pipeline couples HDC-based symbolic reasoning with a GNN and models CKKS behavior through calibrated noise injection: noise distributions measured in SEAL are injected at each encrypted-equivalent operation, and distributed bootstrapping is modeled as a scheduled noise reset. This makes it possible to sweep bootstrapping schedules and measure the accuracy-compute trade-off without running the full pipeline under encryption.
Neuro-symbolic pipeline with distributed bootstrapping, evaluated under calibrated noise injection
Noise-Adaptive Bootstrapping
Ciphertext noise accumulates with multiplicative depth, and unmanaged noise collapses accuracy. Scheduling bootstrapping at the layers where measured noise grows fastest, rather than at every layer, cut projected bootstrapping overhead by 4× in simulation compared to naive per-layer refreshing, while holding accuracy on the evaluated graph-reasoning tasks.
Empirical analysis: noise growth without bootstrapping leads to accuracy collapse
Applications
Relevant to privacy-sensitive graph inference, such as encrypted medical or financial data and video anomaly detection.
My contribution: Lead and corresponding author. Ran SEAL-based experiments to characterize CKKS noise under GNN operations, built the calibrated noise-injection and distributed-bootstrapping simulation framework, and led the full submission and rebuttal cycle.
Geometric Priors for Generalizable World Models via VSA
VSA · World Models · Generalization
NeurIPS 2025 Workshop on Symmetry and Geometry in Neural Representations
We introduce a world modeling framework grounded in Vector Symbolic Architecture (VSA) with learnable Fourier
Holographic Reduced Representation encoders and group‑structured latent transitions via element‑wise complex
multiplication, enabling composition directly in latent space.
Key Results
87.5% zero‑shot accuracy on unseen state‑action pairs
53.6% higher accuracy on 20‑timestep rollouts vs. MLP baseline
4× robustness to noise
Structured State Representations
Our VSA-based model (FHRR) learns structured, grid-like state embeddings that preserve geometric relationships, while traditional MLP models produce unstructured representations.
FHRR (VSA): Grid-like structured embeddings preserve spatial relationshipsMLP: Unstructured embeddings with no clear geometric pattern
Superior Generalization
VSA (FHRR) demonstrates significantly better generalization on held-out data across different data holdout ratios, maintaining high accuracy even when large portions of training data are withheld.
Rollout accuracy vs. data holdout ratio: VSA maintains strong performance while MLP degrades rapidly
Robustness to Noise
The VSA approach exhibits greater robustness to Gaussian noise compared to MLP baselines, maintaining near-perfect accuracy under significant noise perturbations.
1-step accuracy vs. Gaussian noise: VSA maintains >80% accuracy even with noise std of 5, while MLP drops to ~20%
My contribution: ablation studies with the world model grid. Post‑submission: MiniGrid experiments.
We transfer CLIP's zero-shot and text-alignment capabilities to event camera data. Events are aggregated into an image-like representation, and a trainable event encoder (initialized from CLIP's image encoder) is aligned to the frozen image and text encoders via contrastive, zero-shot-consistency, and KL losses, preserving CLIP's pre-trained understanding while adapting to the event modality.
Key Results
Zero-shot object recognition on N-ImageNet unseen classes: 22.7 → 37.9 top-1 (+15.2 points over EventCLIP)
State-of-the-art fine-tuned accuracy on N-ImageNet, N-Caltech101, and N-MNIST
First event-based approach to video anomaly detection: events extracted directly from video, evaluated zero-shot (e.g. 27.2 → 57.7 AUC on XD-Violence vs frame-based zero-shot CLIP)
Plugs into ImageBind via a single adapter layer, enabling zero-shot retrieval across Image, Event, Text, Sound, and Depth without retraining (Event→Image Recall@1 71.0)
Event-Specific Attention Visualization
We extract grad-based attention maps and text relevance scores from the trained encoder (following Chefer et al.), showing that CLIP's transferred understanding carries over to events: the model assigns high relevance to untrained background and context elements while correctly excluding attributes absent from event data, such as color.
Peacock (N-ImageNet): attention on body and tail structure from event data alone
Gramophone (N-Caltech101): the encoder localizes the horn and base
Fight scene (UCF-Crime): action regions highlighted in video-derived events, supporting anomaly detection
My contribution: Built the attention-visualization pipeline that extracts grad-based attention maps and text relevance scores from the trained encoder across N-ImageNet, N-Caltech101, and UCF-Crime, used to demonstrate successful transfer of CLIP's capabilities (Fig. 5).
Optimal Hyperdimensional Representation for Learning and Cognitive Computation
This work introduces the first universal HDC encoding framework that adapts dynamically between learning and cognitive reasoning tasks. By modulating the correlation of hypervectors through tunable kernel scales, the model optimizes both memorization capacity and decodability, bridging the gap between symbolic reasoning and pattern learning within a unified high-dimensional representation.
Key Results
Up to 95% learning accuracy with correlated encodings vs. 65% in uncorrelated baselines
100% decoding accuracy under exclusive encodings for cognitive tasks
Quantitative formulation of the correlation–separation trade-off that governs brain-like reasoning
Universal framework adaptable to both symbolic and pattern-based tasks
The Learning-Cognition Dichotomy
HDC systems face a fundamental trade-off: learning tasks benefit from correlated hypervector representations that enable generalization, while cognitive reasoning requires exclusive (orthogonal) encodings for symbolic manipulation. Traditional HDC methods optimize for one regime at the expense of the other. Our framework dynamically adapts encoding parameters to achieve optimal performance across both domains.
Learning Accuracy Analysis
We swept encoding dimensions (D) and kernel scales (w) to characterize how each affects learning performance. The heatmaps reveal distinct optimal regions: correlated encodings (smaller w values) dramatically improve learning accuracy, especially at lower dimensions where orthogonal encodings fail.
Learning accuracy (top) and separation (bottom) as functions of dimension D and kernel scale w. Correlated encodings (low w) achieve 95% accuracy, while maintaining measurable separation for downstream reasoning.
Decoding Accuracy Analysis
For cognitive tasks requiring symbolic manipulation, decoding accuracy depends on the exclusivity of hypervector encodings. Our analysis shows that higher kernel scales (larger w) produce more orthogonal representations, achieving 100% decoding accuracy. The 2D parameter space reveals the sweet spot where encodings are sufficiently exclusive for symbolic operations yet not overly sparse.
Decoding accuracy as functions of D and w (left) and wx vs wy (right). Exclusive encodings (high w) enable perfect symbolic decoding, demonstrating the cognitive reasoning capability of the framework.
Signal-to-Noise Ratio Characterization
To formalize the correlation-separation trade-off, we analyzed the signal-to-noise ratio (SNR) distributions for both same-class and different-class hypervector pairs across varying dimensionality. The histograms reveal clear separation patterns: at higher dimensions (p=100), same-class pairs maintain high correlation while different-class pairs remain decorrelated, enabling both generalization and discrimination.
SNR distributions for same-class (blue) and different-class (orange) hypervector pairs at p=10, 50, 100. Higher dimensionality provides better class separation while maintaining within-class correlation for generalization.
Technical Contribution
Universal Encoding Framework: Single parameterized system adaptable to learning and cognitive tasks
Theoretical Foundation: Mathematical formulation of the correlation-separation trade-off
Empirical validation: parameter sweeps across dimensions and scales
Brain-Inspired Design: Mimics dual-process reasoning in biological neural systems
Applications
The adaptive HDC framework enables:
Hybrid AI systems: symbolic reasoning combined with pattern learning
Edge Computing: Lightweight, efficient representations for resource-constrained devices
Cognitive Architectures: Brain-inspired models balancing memory and reasoning
Neuromorphic Hardware: Optimized encodings for analog compute substrates
My contribution: Conducted decoding analyses and developed learning-accuracy heatmaps to visualize how encoding parameters affect separability and generalization. Collected and analyzed the signal-to-noise ratio distributions that support the theoretical derivation of optimal kernel scales for learning and cognition.
HyperEncrypt: Homomorphic Hyperdimensional Computing for Efficient and Secure Learning
We study Hyperdimensional Computing (HDC) as an alternative to encrypted deep learning: instead of long DNN compute chains that force frequent bootstrapping, HDC uses shallow, noise-resilient algebra that better matches FHE constraints. Using FHRR and GHRR, we connect hypervector similarity to shift-invariant kernels via Bochner's theorem, then quantify how modeled CKKS noise degrades similarity structure, capacity, classification accuracy, and input decodability.
Key Results
Bootstrapping reduction: Under modeled CKKS noise, modest bootstrapping schedules + noise-robust encodings recover near-clean performance, projecting up to an order-of-magnitude fewer bootstrapping operations without sacrificing accuracy.
Theory-backed noise behavior: Under the CKKS noise model, similarity remains unbiased but its variance grows with encryption noise and shrinks with hypervector dimension (∝ σ²/D). This yields an explicit SNR expression that predicts when classification becomes unreliable.
Capacity under noise: Modeled CKKS noise collapses the separation between positive vs. negative cosine-similarity distributions; 25%–50% bootstrapping restores much of the margin, with GHRR recovering faster and more fully than FHRR.
Classification under modeled noise: On FMNIST, sparse schedules like 25% or 50% bootstrapping recover most of the lost accuracy (with diminishing returns beyond 50%); the plot reports an ~18% improvement from minimal bootstrapping.
Decodability trade-off: Increasing hypervector dimension and using moderate bootstrapping (e.g., 25%) restores much of the input reconstruction quality at far lower cost than full refresh; at higher D, 25% can get close to the clean baseline.
Why HDC for FHE?
FHE enables computation directly on encrypted data, but the practical blocker is ciphertext noise growth and the cost of bootstrapping refreshes. This paper argues HDC is a natural fit: its operations are simpler and its representations degrade more gracefully, so you can reach strong accuracy with far fewer refresh points than deep networks typically require.
Technical Idea
We treat hypervector similarity as a kernel estimator (for FHRR) and analyze how CKKS-style perturbations distort that similarity. The analysis shows exactly how noise scales with multiplicative depth and how increasing D and choosing sparse bootstrapping points can preserve margins. Under the same modeled noise budget, GHRR + sparse bootstrapping consistently maintains higher capacity and better downstream accuracy than FHRR.
My contribution: I analyzed how modeled CKKS noise and bootstrapping distort the kernel behavior of HDC representations, and ran controlled comparisons between GHRR vs. FHRR under identical noise budgets. I produced the bootstrapping-by-noise heatmaps, the binding/bundling sensitivity plots, and cosine-similarity histograms that quantify margin collapse and recovery with refresh. I also implemented and evaluated reconstruction of binarized images from FHRR under modeled CKKS noise to measure how the noise impacts decodability and information retention.
Integrating Symbolic and Neural Mechanisms for Adversarially Robust Hyperdimensional Computing
ISLPED 2026 (International Symposium on Low Power Electronics and Design)
Neuro-symbolic models may improve robustness by combining learned representations with structured composition, but their behavior under adversarial perturbation remains underexplored. We study a hybrid pipeline that fuses Vision Transformer (ViT) features with classical texture-, shape-, and color descriptors through Hyperdimensional Computing (HDC), treating each feature source as a symbol and composing them into class prototypes for similarity-based inference.
Key Results
Graceful degradation: Across CIFAR10 (Subset), COIL100, and ETH80 under FGSM and Genetic Attack, ViT + Classical HDC degrades more gracefully than pure HDC and ViT + HDC baselines.
Highest normalized AURC: The classical-neural fusion achieves the highest Area Under the Robustness Curve, indicating the slowest accuracy degradation across the evaluated perturbation sweep.
Stabler decision margins: Under attack, the fusion variants keep lower and tighter decision-margin distributions, reflecting less overconfident misclassification than ViT + HDC.
Stronger retraining recovery: Partial adversarial retraining yields larger gains for the fusion model: averaged across datasets, +6.6–10.9 percentage points under FGSM and +17.1–26.3 points under Genetic Attack.
Consistent clean ordering: Clean accuracy follows Pure HDC < ResNet + HDC < ViT + HDC < ViT + Classical HDC, and the fusion advantage widens under stronger perturbations.
Why Classical–Neural Fusion?
Adversarial perturbations most directly corrupt the globally optimized, pixel-level activations that learned encoders rely on. Classical descriptors such as Local Binary Pattern (texture), HOG, and PHOG (shape/edge) capture structural and relational cues that remain visually stable under FGSM and Genetic Attack. Fusing them with ViT's semantic abstraction inside a shared HDC space lets the final prototype-based decision draw on both structural stability and semantic richness, rather than depending on any single corruptible feature source.
Framework
The pipeline combines three components: a classical descriptor branch (texture, shape, color), a neural branch that provides learned semantic representations, and an HDC composition layer that maps each heterogeneous feature into a high-dimensional space and bundles them into class-specific prototypes. At inference, a test hypervector is assigned to the most similar prototype by cosine similarity. Four variants are compared under the same HDC-style decision rule: HDC Classifier (pure symbolic), ResNet18 + HDC, ViT + HDC, and the proposed ViT + Classical HDC. This ensures observed gains are attributed to representational content rather than a different downstream classifier.
Threat Model
Robustness is evaluated under two complementary attacks: FGSM, a first-order white-box attack that perturbs inputs along the loss gradient, and Genetic Attack, a gradient-free gray-box attack that evolves adversarial examples through mutation and selection under partial observability. Gaussian noise is included only as a sanity-check baseline. Evaluation spans clean accuracy, degradation under increasing perturbation budgets, decision-margin behavior, hypervector-dimension sweeps, and partial adversarial retraining.
My contribution:
AdamsFoods Wholesale App
Full-Stack · React · Node.js · AWS S3 · JWT Auth
A full-stack JavaScript application built with a React client and Node.js/Express server. It is a wholesale platform with product management and user authentication.
Key Features
Product Catalog: Complete product browsing and management system
Shopping Cart & Checkout: Fully functional cart system with checkout workflow skeleton
AWS S3 integration: media and document uploads through signed URLs, with caching
JWT Authentication: Secure token-based authentication with role-based access control
Admin Routes: Protected admin endpoints with role guards for sensitive operations
REST API: Well-structured REST endpoints organized under /server
A React-based frontend application (Create React App) designed for back-office inventory tracking and stock management. Deployed on Vercel for reliable, fast access.
Developed for the student organization Commit the Change (CTC) at University of California, Irvine in partnership with the non-profit Feeding Pets of the Homeless, this end-to-end donation-management platform tracks, visualizes, and authenticates donation flows across multiple regional chapters.
Key Features
Unified Web Frontend: Built with React and TypeScript powering donation dashboards, forms, and admin workflows with modern UI/UX
Secure Backend API: Node.js/Express with SQL/PostgreSQL routing, user authentication, and data aggregation endpoints
Role-Based Access Control: Chapter coordinators, donors, and admins each access customized UIs and views tailored to their needs
Firebase Authentication: Secure user authentication and authorization with Firebase Auth integration
PostgreSQL database: relational schema for donation tracking, user management, and chapter coordination
Multi-Chapter Support: Scales across multiple regional chapters with isolated data views and aggregated reporting
Development Practices
The project followed professional software engineering practices aligned with CTC's workflow:
Git-Based Version Control: Branch management, merge-conflict resolution, and code reviews
Agile Development: Iterative sprints with regular stakeholder feedback and requirement refinement
CI/CD: continuous integration and deployment on every merge
Team Collaboration: Coordinated with multiple developers, designers, and project managers
Code Quality: Pull request reviews, testing standards, and documentation maintenance
Technical Architecture
Frontend: React with TypeScript, modern component architecture, state management, and responsive design
Backend: RESTful API built with Express.js, middleware for authentication and validation
Database: PostgreSQL with normalized schema design, efficient queries, and data integrity constraints
Authentication: Firebase Auth providing secure token-based authentication and role management
Deployment: Professional hosting setup with separate staging and production environments
Stakeholder Collaboration
Working directly with Feeding Pets of the Homeless coordinators required:
Requirements Gathering: Understanding non-profit workflows and pain points in manual donation tracking
UX review: iterative design feedback to keep the tool usable for non-technical staff
Reduced administrative overhead through digital workflow automation
My contribution: Served as Full-Stack Developer (November 2023 – June 2024). Bridged design ↔ implementation, delivered SQL routing and front-end features, and drove Git governance for branch quality and team collaboration. Coordinated with nonprofit stakeholders to ensure platform met both user and organizational goals.
LLM Systems · Deterministic Evaluation · FastAPI · Pydantic · SQLite FTS5 · React · Claude API
Foothold reads the transfer rules so students don't lose the credits they already paid for. It's my solo entry to the Stellic Pathfinders 2026 challenge (category: Overcoming Obstacles); every line was written between July 31 and August 21, 2026. It's deployed live at foothold-transfer.com.
Problem Statement
About 80,000 Californians transfer from a community college to a UC or CSU every year, and the GAO found transfer students lose 43% of their credits on average (GAO-17-574). The rules that decide what transfers are public: they sit in thousands of articulation agreements on ASSIST.org, and almost nobody reads them before applying. In the demo case I built it around, a De Anza student headed to UCSD computer science finds nine units of C++ that articulate to nothing and an assembly-language series two-thirds finished, which counts as zero until the last course is done. Retaking the course at the community college lists at about $340. A replacement quarter at UCSD lists at $15,686. Those are the published costs for that one case, not a saving Foothold has been measured to produce.
What It Does
Triage wall: a student picks their community college, target university, and major, adds courses as chips or pastes their transcript, and every course is checked line by line against the official ASSIST articulation agreement: transfers cleanly, at risk, or no articulation, plus what's still owed in units and dollars.
Grounded citations: every verdict is clickable and cites its exact source (agreement key, articulation position, academic year). Advisement notes are never silently satisfied; they downgrade a match to at-risk and are always surfaced.
Citation-validated appeal letters: from the at-risk findings, Foothold drafts a credit appeal letter. A validator rejects any draft citing a course or agreement fact not in the deterministic findings; after two failed repairs, a plain deterministic template is used instead.
Gen-ed arbitrage: a second mode inverts the same index for already-enrolled students: which community college courses articulate back into your degree, ranked by dollars saved.
The Rule That Shaped the Build
The model never decides what transfers; the articulation agreement does. Claude appears at exactly two request-time edges (transcript text in, petition letter out), every call is bounded, cost-logged, and typed on failure, and there is no LLM anywhere in the verdict path, the retrieval path, or the data build.
Scale and Trust
The corpus is 31,236 articulation agreements and 352,024 articulation rows, covering 115 California community colleges with agreements into 15 receiving campuses, committed as read-only SQLite artifacts that rebuild byte-identically. I pulled those rows from the ASSIST API myself at one request per second: 34,975 requests over about twelve hours, no rate-limit rejections, an XSRF session renewed every 40 requests, and a typed reason code on every failure so I could see what broke overnight. 870 backend and 89 frontend tests sit behind the verdicts, with 298 invalid-input fixtures and 12 schemas drift-checked in CI. The agreements are for academic year 2025-26 and there is no refresh yet, which is the first thing a real user would hit.
Safe UAV Landing for U.S. Navy
Computer Vision · Pose Estimation · Reasoning · CUI Dataset
Through BiasLab & Prof. Mohsen Imani, I collaborated with the U.S. Navy to develop a custom computer vision system combining pose estimation and symbolic reasoning for safe autonomous UAV landing operations.
Problem Statement
Legacy UAV landing systems rely on fixed-pattern optical markers, which perform poorly in adverse weather and lead to landing failures. The Navy wanted something that still worked when the markers were hard to see.
Solution
Pose Estimation Model: Custom-trained model for accurate UAV positioning relative to landing deck
Reasoning Module: Intelligent system that delays landing when crew members or obstacles are detected on the landing spot/deck
Adverse weather: 65% fewer landing failures than the legacy optical markers in simulation
Real-time Processing: Fast inference for time-critical landing decisions
Impact
The model holds the landing when the deck is not clear, deck-crew collisions included. This is the level of detail I can give: the work used a CUI (Controlled Unclassified Information) dataset, so there are no visuals and no operational specifics here, for anyone who asks.
Online crash-risk prediction from a single dashcam, with explainable collision-course reasoning on top. A neural video model watches the stream and estimates, at every frame, the probability that a crash is imminent. A symbolic layer (YOLO11n + ByteTrack perception, monocular trajectory analysis, and a transparent rule engine) grounds every alarm in a specific tracked object and emits an auditable advisory ("BRAKE + STEER LEFT: car on the right closing, TTC 1.0 s; learned risk 100%"). A distilled 2.95M-parameter student runs the neural side at 408 fps streaming.
The neural network decides whether the situation is dangerous; the symbolic layer decides what the threat is and what to do about it, and it can always explain itself.
What's New in v0.3.0: Trajectory-Aware Threat Discrimination
Earlier versions treated any car that grew in the image as a potential collision: speed up past traffic in the next lane and the system would tell you to brake. v0.3.0 replaces that with a projected-miss test derived from pinhole geometry: from a track's image-lateral velocity and looming rate, the lateral offset at closest approach is computed and normalized by the object's own bounding-box width, giving vehicle-widths of miss distance with no depth estimate needed. An alarm requires a projected miss ≤ 1.5 vehicle-widths for several consecutive frames.
Overtakes stay silent: a car being passed one lane over projects to a ~2-width miss and never alarms, no matter how fast we close on it.
Cut-ins keep their alarm: a vehicle converging on our lane keeps its finite TTC even while sliding across the image, a case that fixed bearing-rate thresholds miss entirely.
Perspective-corrected ego corridor: "in path" narrows toward the vanishing point instead of swallowing every distant car regardless of lane.
Results, and how to read them
Evaluated online over 300 CCD crash videos + 301 DAD no-crash videos, streamed frame-by-frame; positives only count if the alarm fires before accident onset.
Distillation: the 2.95M-parameter MobileNetV2-GRU student matches the 21.88M VideoMAE-S teacher (0.9998 AP/AUROC both) while warning earlier: 3.05 s vs 2.04 s mean time-to-accident at alarm.
Speed: 2.45 ms/frame streaming (408 fps) on an RTX 5070 Ti; the teacher runs 59 fps.
False alarms: 3 across 301 no-crash test videos, 0.010 per video, for the student; performance held across day/night, rain/snow, ego-involved or not, though rain n=18 and night n=41 are too few to claim much.
Read skeptically: crash and no-crash clips come from different datasets, so domain cues could help separate them; the same-domain guard metric (framewise AP 0.976 on temporal negatives from the same crash videos) is good but not perfect. The benchmark is near-saturated, which is a property of the test, not proof of a solved problem. And the AP/mTTA numbers score the neural risk signal only; the advisory layer is validated by unit tests on synthetic geometry and qualitative demo behavior, with no quantitative benchmark yet.
Current Limitations, Stated Plainly
v0.3.0 is a large step up from "looming = danger," but it is image-space geometry with assumptions, not spatial understanding: no metric 3D state (everything is inferred from bounding boxes in pixels), constant-velocity and zero-yaw assumptions that degrade during the ego vehicle's own turns, a tracker that loses the threat at very close range right before impact, box-width-as-a-ruler heuristics that shift with occlusion and vehicle class, and no persistence: an occluded car returns as a brand-new object with no history.
Next: From Image-Space Heuristics to a World Model
The current system is 2.5D heuristics on a 2D image, and calling it anything more would be a stretch. The roadmap is a pragmatic ladder toward a persistent, metric model of the scene, each rung fixing a named failure above:
1. Ego-motion estimation (monocular visual odometry / IMU): compensates the yaw term that breaks the miss test in turns, and separates ego-induced image motion from real object motion.
2. Metric depth → bird's-eye-view state: a monocular depth model plus ground-plane assumption lifts each track into metric ego coordinates: real trajectories, real closing speeds, TTC in meters instead of box-width heuristics.
3. Short-horizon occupancy forecasting: predict each agent's occupancy 1–3 s ahead and intersect it with the ego corridor, making "collision course" a geometric fact rather than a per-track heuristic.
4. Learned world models: the research endgame, a model that predicts scene evolution directly, with the rule layer auditing its rollouts.
Also on the roadmap: a single-domain benchmark, a quantitative benchmark for the advisory layer, and long-duration false-alarm measurement. None of the four rungs above is built. There is no checkpoint and no eval artifact in the repo either, so every number on this page comes from the README and my own runs, not from something you can re-run today.
Healthcare ML · ECG · Evaluation · Data Leakage · CS 184A course project
A course project that turned into an argument about evaluation. On the MIT-BIH Arrhythmia Database, the common practice is to pool every heartbeat and then split beats into train and test. Beats from one recording land on both sides, so a model can recognize a patient's own morphology and noise instead of the arrhythmia, and the accuracy it reports is partly a memory test. Split by patient instead and the same model gets much worse. That gap is the result.
Key results
Beat-wise split (leaky): the 64,966-parameter CNN scores 98.36% accuracy, 0.7540 macro-F1; the LSTM autoencoder scores 98.95%, 0.7766 macro-F1.
Random patient-wise split (honest): the same CNN scores 83.88% accuracy, 0.3732 macro-F1; the LSTM autoencoder 82.06%, 0.3928 macro-F1.
The split search: 50,000 sampled patient assignments out of 2,498,640,144 possible, under a hard constraint that all six beat classes appear in the test set. Random patient-wise splits routinely drop a rare class entirely, which makes macro-F1 meaningless.
Many published MIT-BIH results use the beat-wise split. I would rather report the 83.88.
Why the split matters
Beat-wise splits mix beats from the same patient across train and test, so a model can lean on patient-specific morphology and noise rather than general arrhythmia features. Patient-wise evaluation is closer to how the model would actually be used, where every patient is new. The inter-patient protocol has been the recommended one since de Chazal et al. 2004; it just is not what most reported numbers use.
Method: the split search
The search samples patient assignments for train, validation, and test under strict patient separation, and scores each candidate on how far each split's label distribution sits from the dataset's. The hard constraint is class coverage: a split that leaves a class out of the test set is rejected outright, whatever it scores.
Models evaluated
A simple 1D CNN, 64,966 parameters
An LSTM autoencoder with a classification head, joint reconstruction and classification objective
A deeper CNN, 3,349,190 parameters, which scored 72.3% to 81.5% on every patient-wise split. I cut my own deeper model.
Dataset and preprocessing
MIT-BIH Arrhythmia Database: 48 half-hour recordings from 47 subjects, 2 channels, 360 Hz, lead MLII. Beats are extracted as a 0.8-second window centered on the R-peak, 109,445 in total. Labels map to 6 classes: Normal, Supraventricular, Ventricular, Fusion, Paced, Unknown.
What is unfinished
The curated splits from the search were run before I fixed a problem in how they were selected, so those accuracies are not on this page and will not be until the runs are redone. There is no manuscript and no preprint. What would make this worth writing up is confidence intervals over many patient-wise splits, the AAMI five-class protocol, and the split search packaged so someone else can run it.
My contribution: I wrote the pipeline and the evaluation framework, including the patient-wise split logic and the search script. I ran the ablations across splitting protocols, trained the baselines, and produced the summary the leakage result rests on. Two other people were on the project.