Category: Uncategorized

  • What Apollo 8 Taught Us About Going to the Moon (And Why Artemis II Inherits That Legacy)

    What Apollo 8 Taught Us About Going to the Moon (And Why Artemis II Inherits That Legacy)

    Today, for the first time in over 50 years, humans are heading back toward the Moon.

    At 6:24 p.m. EDT on April 1, 2026, NASA’s Space Launch System is scheduled to carry four astronauts — Reid Wiseman, Victor Glover, Christina Koch, and Canada’s Jeremy Hansen — on a ten-day arc around the Moon and back. It’s a test flight, not a landing. It’s a “can we still do this?” before the real work begins. Which means it has more in common with Apollo 8 than it might first appear.

    Apollo 8 launched on December 21, 1968, as the first crewed mission to leave Earth orbit and reach the Moon. It wasn’t supposed to be. The mission was originally planned as an Earth-orbital test of the Lunar Module — but the LM wasn’t ready, the schedule was slipping, and the Soviets were rumored to be planning their own lunar flyby. So NASA made a gutsy call: send the crew to the Moon anyway, LM or not, and figure out what happens.

    What happened turned out to be extraordinary — and almost none of it was in the flight plan.

    (more…)
  • My MVC Friend Asked Me Why I Switched to MVVM

    My MVC Friend Asked Me Why I Switched to MVVM

    From fifteen years of solid MVC apps to the clear, obvious choice of MVVM for GeoLog in the age of SwiftUI.

    What MVVM actually is, where the Controller went, and why the switch felt obvious.


    My friend has been writing MVC apps since before most of today’s iOS developers had their first smartphone. Good apps. Shipping apps. Apps that handle real complexity without falling apart. So when I told him that GeoLog — my photo location scouting app — is built on MVVM, he gave me the look.

    You know the one. The slight squint. The almost-imperceptible pause before he said, “isn’t that just a Controller with a different name?”

    I didn’t have a great answer on the spot. I mumbled something about data binding and testability and watched his expression settle into polite skepticism. My friend wasn’t wrong to push back — MVC works. It’s proven. Fifteen years of shipping software doesn’t lie.

    But I knew there was a real answer in there somewhere. So I went home and tried to put it together properly. What follows is what I came up with — what MVVM actually is, why it exists, where the Controller went, and why SwiftUI made the switch feel less like a choice and more like the obvious path forward.

    (more…)
  • How Rust Powers GeoLog’s Core Calculations

    How Rust Powers GeoLog’s Core Calculations


    Introduction

    GeoLog started with a simple premise: what’s near me right now? Every feature in the app flows from that question — the gallery sorts by proximity, the nearby locations list updates as you move, and the whole workflow is built for the moment before you grab your gear and head out the door.

    That premise worked fine early on. Then my test library grew past 100 locations, and I started noticing something on my iPhone 11 test device: the Nearby Locations list was getting sluggish. Not broken — just slow enough to feel wrong.

    The naive approach — sorting by latitude and longitude directly — doesn’t actually measure distance. It’s fast, but it’s wrong. A degree of longitude in Texas is not the same distance as a degree of longitude in Alaska. The app’s entire reason for existing is proximity, so sorting by proximity correctly isn’t optional. I needed geodesic distance calculations — the real math — running fast enough that a growing location library wouldn’t penalize the user.

    That’s what led me to Rust.

    (more…)
  • Meeus in Practice: A Worked Example

    Meeus in Practice: A Worked Example


    The previous article — The Math Behind GeoLog’s Ephemeris — walked through the equations Jean Meeus uses to compute celestial positions. This article works through those equations with real numbers, step by step, for a specific location and date.

    (more…)