Projects

A public list of side projects, experiments, and product work. This also gives me a stable place to host project pages and project-specific documents like privacy policies.

Matinee hero artwork: a fanned stack of card-shaped video thumbnails next to the Matinee logo and the tagline 'Save. Browse. Watch.'

2026

Matinee

A watch-later queue, curated by you instead of the algorithm — YouTube channels, Raindrop bookmarks, and any link you share, in sync across iPhone, iPad, and Apple TV.

Matinee is an iOS and tvOS app that holds the videos you said you'd watch later — channels you follow on YouTube, bookmarks you save in Raindrop, and anything you send through the share sheet. The queue stays in sync across your devices through your own iCloud, and more sources are on the way. Built in SwiftUI with SwiftData and CloudKit, it ships without servers of its own or third-party tracking.

  • Pulls in YouTube channels via RSS (no YouTube account required), Raindrop.io collections (with optional #watched tag write-back), and manual additions from the iOS share sheet.
  • Keeps the queue, source list, and watched state in sync across iPhone, iPad, and Apple TV through your own iCloud private database — nothing passes through a Matinee server.
  • Designed natively for each platform: keyboard shortcuts and multi-window on iPad, focus-engine grid and long-press actions on Apple TV, share extension on iOS.
  • No third-party analytics, no advertising SDKs, no IDFA.
SwiftSwiftUISwiftDataCloudKitiOStvOS
ANSI Saver TV title artwork in ANSI style with a cyan glow and magenta accents.

2026

ANSI Saver TV

ANSI art playback for Apple TV, with remote pack management from your browser.

A tvOS companion to ansi-saver built in Swift and SwiftUI. It renders ANSI art natively on Apple TV and includes an embedded web server so packs can be uploaded, managed, and previewed from a phone or computer on the same network.

  • Runs natively on tvOS and renders ANSI files with its own parser and glyph renderer.
  • Includes a built-in local web UI for uploading ZIP packs, downloading from 16colo.rs, previewing files, and deleting packs remotely.
  • Supports both modern playback and a modem-style display mode with configurable speed, transitions, and continuous scroll.
SwiftSwiftUItvOSCore Animation

2026

ansi-saver

A macOS screensaver that streams and renders ANSI art.

A side project built in Swift that pulls ANSI art from 16colo.rs or local folders, renders it with libansilove, and displays it with smooth Core Animation transitions.

  • Streams classic ANSI art packs from 16colo.rs and supports local folders.
  • Renders scene formats like .ANS, .ASC, .BIN, .XB, .PCB, and .ADF.
  • Uses on-demand rendering to keep memory usage reasonable while staying smooth at 60fps.
SwiftCore AnimationlibansilovemacOS

2023

Telegram AI Bot

A Telegram bot that turns voice messages into text.

A small personal bot that receives forwarded voice messages in Telegram, sends the audio to OpenAI for transcription, and returns the result as text. It also supports a simple image generation command.

  • Made long voice notes easier to skim by returning plain text directly in Telegram chats.
  • Restricted usage to approved Telegram users to keep API costs under control.
  • Added a lightweight /image command for quick prompt-based image generation.
PythonDockerTelegram Bot APIOpenAI API