← John Marc / writing / devlog

Devlog May 23, 2026 2 min read

Weekly Status Update: May 23rd, 2026

v1 results coming in for maps and scorecards, an in-app way for users to contribute new scorecards, and locking down the server with proper staging and PRs.


Week[end] Status Update Week[end] Status Update

This week flew by. The largest movement was getting v1 results on maps and scoresheets. I’m currently, as of writing, at epoch 122 for maps. Plus server work, continued tweaks to NUX, and preparation for TestFlight.

Let’s get to updates.

Maps

I’m actively training my maps model to detect course features from satellite imagery. I’m at epoch 122, but the last registered (120) per-class performance was:

ClassmAP50mAP50-95Recall
Bunker0.9280.7690.931
Green0.8730.7850.887
Building0.8660.6640.869
Tree0.7890.5850.804
Tee Box0.7030.5440.727
Cart Path0.7000.4680.716
Water Hazard0.6110.5180.655
Road0.6030.4050.629
Fairway0.5860.4340.642
Agriculture0.5160.4170.579
Parking Lot0.3370.2150.453

I’m pretty happy with these numbers, especially since most of the top-performing classes are specific to golf features. Fairway continues to be the feature I wish were classified better, but I’ve already added it to my maps v1+ goals.

Scorecards

Scorecards aren’t just scorecards. They’re a way to validate (roughly) my maps, grab handicaps, and provide resources to golfers who want that type of data. My current method is scraping scorecards and maps from golf course websites. Going well so far. A key part of continuing to validate scorecards (and gathering more) was identifying a level of confidence, but also the number of detected features within a class. It provides forgiveness for a single class detection, while still ensuring a high bar for detecting the features.

ClassBox mAP50
scorecard_table0.963
par_values0.911
handicap_index0.864
hole_numbers0.812
course_map0.793
local_rules0.715
player_scores0.599
tee_distances0.585
score_total0.486
course_name0.467
sponsor_ad0.432
total_distance0.385
tee_label0.143

Something I added to the main app is the ability to optionally collect scorecard and location data from the user. Folks who help me out with that will get more accurate future data, which I’m excited for. It’s low-friction, almost fun.

Server

I’ll admit. I was running main only.

It’s just little ol’ me, so I was running direct to main. Tests local, and zero staging / dev. I’ve changed that on all mission-critical systems, ensuring I have to merge to staging/dev → main. Tests are enforced, PRs are required.

Getting this set up as a “non-server guy” was fun. It might still be funky (process, not security/privacy), but I’ll figure that out.


← Back to John Marc