My Apps
A collection of apps I’ve built for Apple platforms. Where available, you’ll find App Store links, TestFlight betas, and GitHub repos below.
ExpandableExerciseTimer
A custom workout timer for iOS, macOS, and visionOS. Build routines by mixing time-based and rep-based exercises, dial in rest periods between sets, and get audio alerts when it’s time to move on. Born out of frustration with the quirks of browser-based timers, it’s grown into a full-featured tool I use every day — for workouts and as a slow-eating timer. The iOS version now includes live Health metrics from a paired Apple Watch — current heart rate and calorie burn during your workouts.
- 📝 Blog post — the story behind the app
- 💻 GitHub repo
Bodyweight WorkoutRandomizer
Can’t decide what to do today? This app takes the decision fatigue out of bodyweight training — pick your exercises, set your work and rest intervals, and let it shuffle the rest. Great for days when you want variety without the planning overhead. Grew out of a Zone 2 cardio workaround I built when my ankle was acting up and has been evolving ever since. Like EET, the iOS version shows live heart rate and calorie burn from a paired Apple Watch.
PomoLedger
A Pomodoro-style focus timer with a twist: at the end of each session, you’re prompted to summarize what you worked on before choosing your break length. Those recaps accumulate into a file you can share with your favorite AI to help write reports, pull together a weekly summary, or just keep yourself honest about where the time went. Supports manual or automatic archiving on a weekly or monthly schedule, and optional calendar logging of focus blocks.
CursorIlluminator
A macOS utility that puts a spotlight on your cursor, making it easy to find on big screens and multi-monitor setups. Simple, lightweight, and does exactly one thing well. Due to macOS sandbox restrictions, it can’t live in the App Store — but it’s free and open source on GitHub.
- 💻 GitHub repo
- 📦 Download v1.0.0
- (Not available on the App Store due to sandbox restrictions)