HNProjects

Projects

I'm in this field because I genuinely love coming up with solutions to problems by utilizing software and hardware.

GNOR Autonomous Submarine

UCF Great Naval Orange Race · ESP32 · C++

I was in charge of 3D printing an improved propeller, as well as programming the ESP32 to not only drive autonomously via readjustments but also connect via Bluetooth to my laptop to allow for remote speed and angle modifications.

  • Programmed ESP32 firmware in C++ for real-time propulsion control and Bluetooth command handling.
  • CAD-modeled and 3D-printed a custom propeller blade deployed in UCF's competitive submarine race.
  • ESP32
  • C++
  • Bluetooth
  • CAD
  • 3D printing

Professor Lockin

Full-Stack Gamified SaaS Study Platform · professorlockin.com

Shipped a live SaaS study platform enforcing per-user data isolation at the database layer through 84 Row-Level Security policies.

  • Built a real-time multiplayer engine over WebSockets powering 9 games, capped at 300 messages per 20-player match to stay inside free-tier limits.
  • Integrated 4 Stripe payment surfaces including Connect marketplace payouts with creator revenue splits.
  • Next.js
  • Supabase
  • RLS
  • Stripe
  • WebSockets
  • AI assisted

Caught in my own work

I always look for my own failures before someone else can find them.

84Row-Level Security policiespatched before my site went live

Caught in my own code

Row-level security gap in Professor Lockin

Professor Lockin · before launch

I caught a row-level security threat in my 55-table schema while self auditing and patched the gap before my site went live.

  • PostgreSQL
  • RLS
  • Self-audit
void saveSettings() {  prefs.begin("gnor", false);  prefs.putInt("servo", servoAngle);  prefs.putInt("speed", motorSpeedPct);  prefs.putInt("time",  runTimeSec);  prefs.end();}
From the firmware: the settings are saved to memory, so they survive between sessions.

Caught in my own code

Bluetooth settings lost between sessions

GNOR submarine · before testing

I found numerous errors prior to testing that I fixed such as a Bluetooth error that would reset the updated values between sessions instead of just saving it to memory.

  • I took it upon myself to check for any errors that my code could've produced to ensure that nothing could go wrong.
  • ESP32
  • NVS
  • Bluetooth