Your comments

I think you may want to run through it at least once more to see if it's not just some edge case that's affecting Robert and I (which would be the worst of all possible worlds, but totally could happen, especially with google's frequently undocumented breaking changes...)

And it'd be good to let readers sign up for notifications when they register for an account -- while we've got 'em in the box clicking mood :)  

I've got a way to do this if you've got Google Analytics and are willing to play with a bit of code.  Email me at aholder AT SIGN yakimaherald DOT com and I'll hook you up.

"do you see two firebaseadminsdk accounts?"

I do.  There's the one I created per the instructions, which has a slightly different name and the description I entered, and there's the other one with a generic name and no description.  

It turns out that generating a key from the generic one enables me to send push notifications.

Curiouser and curiouser....but at least it looks to be working ATM.

Hey Robert, am I correct that the key in your example is being generated for a service account different from the one manually created earlier in the process?

Yup... same here...exact same issue, exact same message. I can be pretty stupid, but I'm pretty sure I followed the directions correctly.  I'm seeing the same error message in the log.

Wowsa.  That's gotta be priority fix.  We're supposed to be adopting Total CMS this spring, and that would throw a major monkey wrench in our workflow.

Very slick.  And about what I'd have gone with, except for this conversation:

Ad person: "Yeah, we need a way to sell premiums associated with our reader's choice contest."

Web Monkey: "Sounds like a cool idea.  But isn't that promotion almost finished? The awards dinner is tomorrow."

Ad person: "Yeah, it's been great.  So you can build something by tomorrow afternoon, right?"

Web Monkey: "But it's already 4:30 p.m."

Ad person: "yeah, and?"

Web Monkey: Pours liquor, cries, opens text editor

Actual transcript :)

BTW, I love that your mission statement includes "make trouble"

You can, with some hacking around, use blox forms to sell product and accept payments.  But the fact is even after a lot of hand coding CSS hacks it's still ugly AF because you're stuck modifying the clunky forms layout and trying to shoehorn products in there.

Like so:

you have to get to page 2 to see the true, um, beauty, of the design :) 

IDK about 'slugs' off the top of my head, but the upload will preserve exif data, so if you enter stuff like headline, caption, and byline it'll use that for everything public facing.  The 'headline' exif field will become the asset title IIRC.

I would suggest self-hosting the map tiles generated from OSM data (use vector tiles like the cool kids are doing if you want to be snazzy), then hook up with HERE maps for the geocoding service -- 250,000 free lookups per month per customer.  Is pretty easy, scales well, and would be the cheapest option for TN and its customers.  My $0.02.

The truly frustrating thing is that I've got everything built to replace Google Maps, but figuring out the UTL templates to know how to do it is the killer.