Projects

Things I wanted, so I made them.

  1. PhereIndian wedding planning, in one place.
  2. agent-syncSync skills and agents across Claude and Codex.
  3. SideloadMenu bar that sideloads Android debug APKs.
  4. Mission ControliPhone remote for coding sessions on my Mac.
  5. linear-cliA small Linear client I actually use.
  6. github-pr-mediaAttach images and video to a GitHub PR.
  7. ThomasLocal-first board for agent work.
  8. BentoType-safe Compose navigation.
  9. HabitusHabits in 21 days.
  10. WhisperzPrivate chats, shielded.
  11. ShotFormatterVideo effects in the browser.
  12. EncryptidA text-based cryptic hunt.
  13. BibliotecaLive Compose theme library.
  14. VMA small vim-like editor.
  15. PractikalityApp for deaf, blind, and mute communication.

All projects

ShotFormatter

Web · web · tools

shotformatter.com

I kept uploading a clip to some website just to crop it, and watching the file leave my machine.

Shot Formatter: scene and shadow settings in the browser

ShotFormatter is the opposite: a page in the browser, ffmpeg-in-WASM energy, nothing uploaded. Pick a file, apply the effect, download the result. The file stays in the tab.

const file = input.files[0]
const buffer = await file.arrayBuffer()
const blob = new Blob([output], { type: "video/mp4" })

The catch is the tab. Big files, Safari, memory — ffmpeg-in-the-browser has edges. That’s the trade for never sending the video anywhere. Live at shotformatter.com.