Aperture

Client
Personal
Year
2026
Role
Photography/Videography
Source code
View source
Aperture cover

The problem

Photo Booth is the only camera app that ships with macOS, and it has barely changed in fifteen years: one mode, a fixed window, effects that look like 2007. Meanwhile the iPhone camera is one of the most refined interfaces Apple makes — zoom pills you can hold and drag, a shutter that slides into video, a mode carousel — and none of it exists on the Mac. If you want to take a decent photo with a Mac you use the webcam through a video-call app and screenshot it. There's also a hardware gap nobody acknowledges honestly. A Mac has no depth sensor, most Mac cameras cap at 30 fps, and videoFieldOfView is unavailable on macOS entirely. Apps that offer "Portrait mode" on a Mac are synthesising it and not saying so.

What I built

Test-first where it's testable, and measurement over assumption — which has repeatedly changed the plan: I intended to swap createCGImage for an IOSurface render for speed. Measuring showed 1.82ms vs 3.86ms — the "optimisation" was 2× slower. Didn't do it. I suspected the gallery scan was causing UI lag. At 500 files it's 2.6ms, under one frame. Left it alone; the real cause was 1.8ms of Core Image work on the main thread between every click and its effect. Crop appeared to work and did nothing. The writer's output size was pinned to the source's natural size, so cropped frames were rendered into full-size buffers. There was no video-editing test at all, which is how it shipped.

Tech stack

  • AVFoundation
  • Core Image
  • ScreenCaptureKit
  • Vision
  • Photos
  • Swift
  • Combine
  • Carbon
  • Metal
  • WidgetKit