Portfolio Emerald ↗ ValuFlow ↗ Methodology Why This Site Contact ← Back to Tim

Portfolio

Things I Build

Projects that live outside the classroom — finance tooling, AI systems, desktop apps, and hardware. Everything here was built end-to-end: designed, coded, shipped, and used daily.

FinanceFlash
← HOME
PRACTICE
L1 Definition L2 Formula L3 Intuition L4a Application L4b Expectation
Accounting Basics Cost of Capital Valuation M&A
1 / 15
DEFINE THE TERM L1
Explain what revenue is in plain English without using any numbers or formulas.
Type your answer...
SUBMIT
GRADING WITH CLAUDE...
✓ Correct DEPTH: 2/3
FINANCEFLASH
Study Reminder
Can you define: WACC?

Live demo — re-created in HTML & animated in your browser, not a video

Featured · Desktop App

FinanceFlash

Partway through my finance and economics coursework — and deep into building ValuFlow — I noticed the basics slipping: formulas I'd aced a semester earlier, terminology I should know cold. So instead of re-reading notes, I built FinanceFlash. It pings me throughout the day with notifications that quiz me on a random term, and clicking one drops me straight into that exact question, where an AI grades my written answer like a strict professor. Everyone says micro-learning is the future; I'm going for max-learning. (wink — still not a comedy writer.)

  • AI-graded free text — Claude scores every answer on a 3-level depth scale and asks follow-up questions that push you from surface recall to real intuition.
  • Five question levels — definitions, formulas, intuition, applied calculations, and scenario expectations, with questions generated on the fly per term.
  • Reminders that teach — Windows notifications quiz a term through the day; clicking one deep-links straight into that exact card via a custom financeflash:// protocol.
  • Full progress tracking — per-card accuracy, trends, streaks, and weakest-term surfacing across sessions.
Electron Claude API JavaScript PowerShell Windows Task Scheduler
v1.2.0 · In active use, daily

Featured · Systems & Protocol Engineering

Screen2ATV

I wanted my Windows desktop on the living-room Apple TV — something a Mac does with one click. On Windows, that click costs money: the mirroring apps I tried were all paid, and they still either lagged seconds behind or didn't work at all. I got tired of paying for a feature my computer should just have, so I built it myself. Screen2ATV speaks Apple's AirPlay 2 protocol natively from Windows — it pairs with the TV the way an iPhone does, completes the FairPlay handshake, encrypts every frame, and streams my screen at about 60 ms — fast enough that the TV feels like a second monitor.

  • Real AirPlay 2, not a workaround — HomeKit SRP-6a PIN pairing, Ed25519 pair-verify, the FairPlay handshake, and an encrypted RTSP mirroring session, implemented in Go and debugged byte-by-byte against a real Apple TV.
  • ~60 ms glass-to-glass — GPU screen capture feeds NVENC H.264, frames go out ChaCha20-Poly1305-encrypted with congestion-aware pacing that drops P-frames before latency builds.
  • One-click app — a WebView2 desktop GUI: pick a TV, hit Start. mDNS discovery finds every Apple TV on the network, and it can mirror to several at once.
  • Desktop-aware — scales the 5120 × 1440 ultrawide to fit the TV instead of cropping it, and a graceful RTSP TEARDOWN sends the TV straight back to its home screen on Stop.
Go GStreamer NVENC AirPlay 2 · RTSP ChaCha20-Poly1305 SRP-6a WebView2 mDNS
v1.0 · Mirroring to the living room daily
Screen2ATV

Screen2ATV

Mirror your Windows desktop to an Apple TV

Mirror Settings
Which TV
Living Room — 192.168.1.23
Scan
Ready to cast to: Living Room
▶  Start Mirroring ▶  Mirror to All TVs
Include audio (experimental)
Idle.
Apple TV
Living Room
IP address
192.168.1.23
AirPlay password
••••••••
Quality
Resolution
Auto — match PC screen
Frame rate
30
Latency
Low — snappiest (~60 ms)
Settings save automatically.
LIVE · 60 MS
Apple TV · Living Room
LIVE · 60 MS
Apple TV · Bedroom

Live demo — re-created in HTML & animated in your browser, not a video

Emerald
Emerald
voice assistant
Dashboard
Chat
Activity
RUNS IN TRAY
HOTKEY PRTSCN
Idle — hold PrtScn and speak
LISTENING — RELEASE TO SEND
Ask Emerald to do something…
SEND
Brain
Ollama
local · qwen2.5
Hotkey
F12
tiles your windows
Open windows
4
5120 × 1440
Desktop layout live
ORGANIZE WINDOWS
PRTSCN

Live demo — re-created in HTML & animated in your browser, not a video

Window tiling, the pop-out player and calendar scheduling all ship today — every one callable by voice · the voice routine mixes shipped tools with the orchestration in progress

Featured · Agentic Systems

Emerald

A tool-calling agent that runs on my own machine and acts on it directly. Hold a key, say what you want, and a local model decides which tools to call — driving a real Chrome session through logins, tiling every window via Win32, holding a full conversation with FinanceFlash (a flashcard app I also built) to run hands-free study sessions, reading my iCloud calendar back as a rundown, streaming the desktop to an Apple TV. A fast path pattern-matches known commands and skips the model entirely, so tiling windows or pulling today's agenda costs 0.01s and zero tokens, while anything genuinely open-ended falls through to the agent.

  • Local-first, swappable brain — Ollama runs the loop on-device by default; one setting moves it to the Claude API when a task needs the extra capability. Credentials are typed in locally and never reach the model.
  • Real browser, real sessions — Playwright drives an actual Chrome profile, so it inherits my logins and can carry a university SSO chain through to the far side.
  • Talks to my other apps, not just the browser — a token-protected local API lets Emerald run full hands-free FinanceFlash study sessions: it asks the question, listens, grades the answer, coaches when I'm stuck, and never reveals an answer I didn't ask for.
  • Writes to my real calendar, carefully — books, moves and cancels events over CalDAV, repeats included ("every Monday and Wednesday until finals"). Aim it at something that repeats and it writes nothing until it has asked whether I meant that one occurrence or the whole series — guessing wrong there quietly rewrites thirty entries.
  • Learns my habits statistically — "remember this layout" logs where every window sits; once an app's position is consistent across enough snapshots, Emerald starts assuming it — no rule to write, just repeated behavior turning into a default.

Explore Emerald — full capabilities, architecture & roadmap →

Python PySide6 / Qt Ollama Claude API Playwright faster-whisper Win32 / ctypes CalDAV / iCal
In active use, daily

More Projects

The Rest of the Workshop

Finance × Data
ValuFlow
An end-to-end company valuation pipeline — Python, Snowflake, and Power BI turning raw financials into fully modeled valuations.
Personal AI
Ruby
A custom AI assistant I built to run and automate my day-to-day.
In Progress
Engineering · Design
3D Printing
Where the engineering side comes out — functional builds like a custom power-bank desk mount and technical projects like my calculator AI enclosure. Designed and fabricated from scratch.
Ongoing