Smaller things, all real

Also built

  • numdle

    2026

    A small number game in TypeScript.

    TypeScript · Vercel

  • crossing-words

    2026

    A crossword generator: greedy placement with weighted scoring over NYT word data, and a React grid with keyboard navigation.

    Express · React

  • NUCPA balloons

    2025

    Balloon requests and deliveries for ACPC-style programming contests, with a live feed for the runners.

    React · TypeScript · .NET · SignalR

  • Faded text restoration

    2025

    Restores faded English text in historical documents with OpenCV and Tesseract, refined by Gemini. First place, UGRF 19.

    Python · OpenCV · Tesseract · Gradio

  • Portfolio, first edition

    2025

    The previous site: a macOS desktop in the browser with draggable windows, an AI terminal and Spotlight search.

    Astro · React · Tailwind

Résumé