So, I had this $6.00 uBlox-based GPS receiver lying around and I thought that I would hook it up to an ESP8266 in order to synchronize some Nixie clocks with it. I started out with the Arduino TinyGPS library and a demo program that used that library. I hacked it into working, but it had a few oddities, like being one day too "fast" and I don't think that it may handle/display leap years properly. Internet time worked, but I've seen ntp.org do a few weird things and my NTP clients aren't very smart.
For $6.00, the GPS is pretty good; it takes a few minutes to get completely synced, but considering the small antenna, questionable placement, and being in a frame house, it's amazing that it works at all. For $6.00, I get to use billions of dollars of hardware and the hundreds of millions a year of the resources to maintain it - one of the rare cases of "your tax dollars at work".
There was nothing to the hardware; I hooked up the GPS to the ESP using SoftSerial; power is provided by two 1117's knocking down USB wall wart voltage. Programming is done via a 3.3v serial USB cable.
The code is very crude now, but I hope to eventually have a small setup webpage and maybe time and location information in it, OTA updates, and so on.
When complete, I'll go back and do a better job on my clocks, in making their NTP clients more robust, and also waiting a random time for sync and retry sync. I don't know what happens after a power failure and this unit is swamped with requests. Come to think of it, this could use a battery backup...