I do a lot of location aware computing, often incorporating GPS. I have my own little simple NMEA parser that doesn't do anything special - just transforms the GPS specific sentences into usable numbers, flags, and so forth.
However, there is a lot of active development done on projects such as GPSD and Gypsy. If GPS were a simple matter, the projects would have finished long ago and simply gone into maintenance mode.
- What do they know/do that I don't know about, and therefore my code doesn't account for?
With so many good alternatives, you might not want to bother that much.
Here is a fast, microcontroller (AVR) optimized NMEA parser library : https://code.google.com/p/avr-nmea-gps-library/
Code is straight forward, so you can learn and adapt if this is a concern.
I have worked with NMEA, my experience is:
The NMEA format is not well designed. Professional applications, that have direct access to the GPS receiver, should avoid NMEA. They should consider the specific binary format of the GPS device.
In addition to the topics mentioned by Adam Davis above:
You can look in the SIRF and UBLOX protocol specification, and see what huge chapters they have, to describe how they interprete the NMEA protocol.
If somebody knows a really good NMEA parser / writer written in java or Objective-C, that is open source and not under the GPL license, please let me know.
From an excellent article by the GPSD lead:
-Adam