Software Engineer @ UWaterloo

John Petruzziello

Hey, I'm John, a developer who builds many things - anything from AI analysis pipelines to emulators, or from custom databases to hardware sensor reads. I just wrapped up co-op as a Software Development Intern for Ford Motor Company Canada. Right now, I'm at UWaterloo - I'm currently looking for software engineering roles for the 2027 winter co-op term.

About

Hey, I'm John, a developer who builds many things - anything from AI analysis pipelines to emulators, or from custom databases to hardware sensor reads. I just wrapped up co-op as a Software Development Intern for Ford Motor Company Canada. Right now, I'm at UWaterloo - I'm currently looking for software engineering roles for the 2027 winter co-op term.

Projects

Consolana

A real handheld console built from a Hack the North Solana badge.

Game Boy and NES firmware that turns the Solana badge into a playable handheld. Games are bundled into the badge's factory partition, selected from an on-device menu, and rendered through embedded emulator cores.

Technologies: C++, C, Embedded, Game Boy, NES, PlatformIO

Fast Transformer

Low-level transformer optimization that reached 1,152.3 tokens per second.

A performance-focused entry for Dryft's Hack the North challenge. The project experiments with transformer kernels, memory layouts, fused operations, and autoresearch tooling to make autoregressive inference generate tokens as quickly as possible.

Technologies: Python, PyTorch, Triton, CUDA, Benchmarking

flow.js

An adaptive interface runtime that learns how users work.

A Hack the North MVP that generates dashboards from application capabilities, observes how they are used, and proposes safe, evidence-backed interface improvements. Changes are validated, animated, versioned, and undoable.

Technologies: Next.js, TypeScript, OpenAI, Sentry, SQLite, Tiger Data

DissectTune

Take songs apart. Build something new in a browser-based stem studio.

Demucs separates songs into vocals, drums, bass, and other instruments. Arrange stems from multiple tracks, adjust tempo and pitch independently, and save your mix. A shared Web Audio scheduler keeps live playback and stereo WAV export aligned, while Celery workers handle separation and private S3-compatible storage holds the audio.

Technologies: Next.js, TypeScript, Python, Demucs, Web Audio, Celery, PostgreSQL

PetNES

A web NES emulator with a hand-written WebGL CRT renderer.

Cycle-accurate 6502 CPU (all 256 opcodes, including unofficials), 2C02 PPU with loopy scroll, and 2A03 APU with non-linear mixing, compiled from C++ to WebAssembly. Ships a WebGL CRT shader (scanlines, barrel distortion, phosphor bloom), save states, an IndexedDB ROM library, and gamepad support. Drop in a ROM and play.

Technologies: C++, WebAssembly, TypeScript, WebGL, Emscripten

jMessage

A real-time messaging platform whose only persistent store is a database built from scratch.

Every user, conversation, and message is stored in PetDB, a purpose-built LSM engine with no multi-key transactions. The browser uses an IndexedDB outbox for offline sends; client-generated message IDs and receipt watermarks make reconnects safe to replay.

Technologies: Go, React, TypeScript, WebSockets, PetDB

PetDressed

A private digital wardrobe with an explainable, weather-aware outfit planner.

Upload your clothes and get outfits that actually explain themselves. Async computer-vision segmentation catalogs each garment, Open-Meteo forecasts feed a CP-SAT constraint solver, and every generated outfit comes with the reasoning behind it—plus locks, swaps, and regeneration when you don't like the answer.

Technologies: Next.js, FastAPI, Python, Supabase, CP-SAT, Celery

PetDB

A durable, write-optimized LSM key-value store built from scratch in Go.

An embedded storage engine with group-committed WAL writes, concurrent memtables, immutable SSTables, bloom-filter-assisted reads, a sharded LRU block cache, background size-tiered compaction, and crash-safe recovery.

Technologies: Go, LSM Trees, WAL, SSTables, Bloom Filters

ScratchMCP

An MCP-compatible AI pair-programmer that reads, demonstrates, and edits live Scratch projects.

Bridges an MCP client like Claude into TurboWarp over a Python server and a WebSocket-connected extension, so the model can inspect a project's sprites, scripts, and variables and act on the live Scratch VM with no page reloads. Tutor Mode keeps it read-only with live stage demonstrations for guiding a learner; Copilot Mode adds full script editing, including nested blocks and custom "My Blocks", for hands-on pair programming.

Technologies: Python, MCP, WebSocket, JavaScript, Electron

ChartSmart

A music-trivia arcade powered by real playcounts, previews, and discographies.

Three music games—Higher or Lower, Album Blitz, and Name That Tune—built on live data from iTunes, Last.fm, and MusicBrainz. Includes daily seeded challenges and real-time multiplayer rooms over Socket.io.

Technologies: React, TypeScript, Node.js, Socket.io, Tailwind CSS

PetFolio

A living knowledge graph of an engineering portfolio, queried with citations that resolve to real source lines.

Turns GitHub repositories into a queryable graph of files, symbols, call edges, and docs, then answers questions about them with citations validated against the graph before they ever reach the user. Deterministic retrieval runs first; the language model only ever synthesizes evidence retrieval already selected—and when there's no evidence, it says so instead of guessing.

Technologies: Go, Neo4j, PostgreSQL, React, Tree-sitter, Claude API

Skillmatch

Matches resume skills to job postings using the Claude API.

A job-hunting tool that reads a resume and a job posting, then surfaces exactly which skills line up and which are missing. TypeScript frontend, Python backend, Claude API for the matching logic.

Technologies: TypeScript, React, Python, Claude API

Jailbreakr

Adversarial probe suite that red-teams LLM system prompts.

Stress-tests a deployed system prompt against a library of structured attack scenarios: prompt injection, goal hijacking, role abandonment, data exfiltration, context manipulation, persona jailbreaks. Claude Sonnet acts as the attacker, generating and scoring probes against any OpenAI-compatible target, producing a PASS / WARNING / FAIL report with suggested fixes.

Technologies: Python, Claude API, CLI

Cyber-Weather Station

Bare-metal sensor rig streaming live readings to a dashboard.

A full-stack IoT weather monitor: a DHT11 sensor feeds two firmware implementations (Arduino with the Adafruit DHT library, and STM32 written in bare-metal C with no HAL), a Python bridge logs readings to SQLite, and a Flask dashboard visualizes temperature, humidity, dew point, and heat index with Chart.js and gap detection for offline periods.

Technologies: C, STM32, Arduino, Python, Flask, SQLite

Wizard's Stand

NES homebrew survival game, written in C and 6502 assembly.

A wave-based arcade survival game built for real NES hardware. Control a wizard fending off ten progressive waves of enemies with unique behaviors, fireballs, piercing shots, and screen-clearing nukes. Runs inside the PetNES emulator.

Technologies: C, 6502 Assembly, cc65

Wordamatician

A fast-paced mobile word-search game built in Godot 4.

Find words on a 5x5 letter grid before the clock runs out. Longer words, power-ups, and combo streaks push the score higher; tiles are weighted by English letter frequency and refill from above as words clear.

Technologies: Godot 4, GDScript

GrowForward

A gamified exercise app for muscular dystrophy patients.

Built with a team of four at the MedSprint Design-a-thon. A React Native / Expo app that streamlines exercise routines and rewards patients with muscular dystrophy for hitting their goals.

Technologies: React Native, Expo, TypeScript

Category Blitz

A rapid-fire naming game, built in React under a hard deadline.

Name as many things in a category as you can before time runs out. Built solo within a short hackathon-style timeframe.

Technologies: React, TypeScript, Vite

Wisp

A home-screen widget for sub-2-second voice capture.

A native Android home-screen widget (Kotlin, Jetpack Compose) bridged into a React Native app for AI-powered task parsing with Model Context Protocol integration. Tap the widget, speak, and the audio pipeline handles permissions and capture in under two seconds.

Technologies: Kotlin, Jetpack Compose, React Native, Android SDK, MCP

Experience

Software Development Intern — Ford Motor Company

Waterloo, ON · May 2026–August 2026

Skills: Python, TypeScript, Neo4j, Cypher, LangGraph, RAG, Kubernetes, GitHub Copilot, GitHub MCP, OpenTelemetry, PostgreSQL, REST API, Gherkin, Graphile Worker

Software Developer — Waterloo Rocketry

Waterloo, ON · September 2025–Present

Skills: Python, Flask, SocketIO, ZeroMQ, WebSockets, msgpack, React, TypeScript

Skills

Languages: C, C++, Go, Python, JavaScript/TypeScript, Java, Kotlin, HTML/CSS

Frameworks: React, React Native, REST API, Next.js, Flask, SocketIO, ZeroMQ, JNI, Jetpack Compose, Tailwind CSS

Tools: Git, Jira, Docker, Valgrind, LaTeX, Linux, MySQL, Gradle, npm, Expo, Node.js, Figma, Android Studio, Android SDK, cc65