Bobby Encoded
PostsAbout
PostsAbout

© 2026 Bobby Jose

← Back to Blog

Building OwlPlot: A Weather-Aware Companion for Photographers

December 21, 2025 · 5 min read

Photography, Mobile Development, iOS, Android, SwiftUI, Jetpack Compose, AR

OwlPlot Logo

There's a special kind of frustration that comes with chasing the aurora borealis.

You get the alert. Kp index is high. Solar activity is through the roof. You grab your gear, drive an hour out of the city to escape light pollution, set up your tripod in freezing temperatures... and then you wait. And wait. Staring at a blanket of clouds, knowing that somewhere above them, the sky is dancing in greens and purples you'll never see.

This happened to me three times in a row last winter. That's when I decided to build OwlPlot.

The Problem

Most astronomy apps tell you when something will happen. They'll show you sunrise times, moon phases, and when the Milky Way is visible. What they don't account for is whether you'll actually be able to see anything.

The missing piece? Weather.

A perfect golden hour means nothing with 90% cloud cover. The Milky Way galactic core rising at 2 AM is useless if there's fog rolling in. I wanted a single app that combined precise astronomical calculations with real-time weather data — and as a new photographer trying to learn astrophotography, I also wanted all those scattered calculators in one place.

Enter OwlPlot

OwlPlot is a native app for both iOS and Android that I built to solve my own frustrations. The core idea: give photographers a Photography Score from 0-100 that factors in everything — sun position, cloud cover, precipitation, visibility, and wind.

Photography Score

At a glance, you know if conditions are worth shooting. The score weighs:

  • Cloud cover percentage
  • Precipitation probability
  • Visibility distance
  • Wind speed (matters for long exposures)
  • Time of day relative to golden/blue hour

No more checking five different apps. One number tells you if it's worth grabbing your gear.

Precise Astronomical Times

OwlPlot calculates everything locally using professional-grade algorithms (VSOP87 for the sun, ELP2000 for the moon):

  • Sunrise/Sunset — accurate to ±1 minute
  • Golden Hour — morning and evening windows
  • Blue Hour — that magical twilight photographers chase
  • Moonrise/Moonset — accurate to ±2 minutes
  • Moon Phase & Illumination — plan around the lunar cycle
  • Milky Way Visibility — when and where the galactic center is visible
  • Civil, Nautical, and Astronomical Twilight — for the precise photographers

All calculations happen on-device. No internet required. Works in the middle of nowhere.

Photography Calculators

When I started astrophotography, I was constantly switching between apps to calculate:

  • 500 Rule / NPF Rule — maximum shutter speed before star trails
  • Hyperfocal Distance — optimal focus for landscape sharpness

OwlPlot puts these in one place with a clean interface designed for use in the dark.

AR Sky View (iOS)

This one was pure scope creep, but I couldn't resist.

Point your phone at the sky and see an augmented reality overlay showing the sun's path, moon position, and Milky Way location. It uses gyroscope and compass sensor fusion (not ARKit) because celestial objects are essentially at infinity — no parallax needed.

The tricky part was solving gimbal lock near the zenith. Above 35° tilt, the app switches from compass heading to gyro-stabilized tracking to prevent the 180° flips that plague naive implementations.

Dark Theme by Default

Photographers use this app at dawn, dusk, and night. The UI uses copper, amber, and teal accents on a dark background — easy on the eyes when you've been staring at stars for an hour.

Technical Decisions

A few choices that shaped the project:

Native on Both Platforms. iOS uses Swift/SwiftUI. Android uses Kotlin/Jetpack Compose. Could I have used Flutter or React Native? Sure. But I wanted to learn proper native development, and the performance for AR and sensor fusion is noticeably better native.

No Backend. OwlPlot is completely offline-first. All astronomical calculations are deterministic (same input = same output), so there's no need for a server. Weather data comes from Open-Meteo's free API, cached locally. Zero infrastructure cost. No accounts needed. No privacy concerns.

Clean Architecture. Both apps follow MVVM with clean architecture. The domain layer is pure Swift/Kotlin with zero platform imports — 100% unit testable. Dependency injection keeps things modular (manual composition root on iOS, Hilt on Android).

Lessons Learned

1. Scratch your own itch. The best side projects come from genuine frustration. Every feature decision was easy because I was building exactly what I wanted to use.

2. Astronomical calculations are deep. I went down a rabbit hole learning about VSOP87 theory, atmospheric refraction corrections, and the difference between apparent and geometric sunrise. It's humbling how much work goes into getting sunrise times accurate to the minute.

3. AR is more accessible than you'd think. If you have a legitimate use case, sensor-based AR is surprisingly straightforward. The hard part is the math (gnomonic projections, coordinate transformations), not the platform APIs.

4. Native development is worth learning. SwiftUI and Jetpack Compose are genuinely delightful to work with. The declarative paradigm translates well if you're coming from React.

What's Next

OwlPlot is live on both app stores. Current roadmap:

  • Android AR Sky View (iOS-only for now)
  • iOS and Android widgets for quick weather checks
  • Push notifications for optimal conditions
  • Apple Watch complications

If you're a photographer who's tired of checking multiple apps before every shoot, give it a try. And if you've ever driven an hour just to stare at clouds, you'll understand exactly why I built this.

Clear skies.

← Previous

My AI Journey Begins: Passing AI-900 Azure AI Fundamentals

Next →

Android Play Store Deployment and Billing