GPSD 3.0 finally ships. It’s been a long epic.

Protocol transitions are hard.

Yeah, I know the experienced software developers reading that are thinking “Well, duh!“. Shut up already, I’m venting here. I’ve just spent the better part of two years – actually, if you include design time and false starts it could be closer to five years – designing a new application protocol for my gpsd service daemon, implementing it, getting it deployed, dealing with problems and course-correcting.

For those of you in the cheap seats, an “application protocol” is a kind of language that a program uses to communicate with other programs. Normally humans never see these, but there’s one big example that non-geeks have often seen bits of. HTML, the Web’s markup language, is an application protocol. Designing these is not easy. There are difficult issues and tradeoffs around flexibility, economy, expressiveness, and extensibility for uses we haven’t imagined yet.

When you have a whole bunch of programs written by different people communicating with a particular application protocol, changing that entire ecology to use a different one is not easy. A good analogy in the physical world is the difficulty of changing an entire country’s railroad gauge. The long-term benefits may be huge, but the short-term cost in capital and service disruption is daunting.

Sometimes it has to be done, though. The old GPSD protocol wasn’t extensible enough, and it had some bad design decisions baked into it. Hackers can read a more detailed discussion of the technical issues in my white paper GPSD-NG: A Case Study in Application Protocol Evolution.

It took me three years of thinking and experimenting to get to the point where I had a new protocol design I was happy with. Took me nearly two years after that to implement it, debug it, get it deployed, figure out where I’d made some minor design errors, and fix those. Did I mention that this sort of thing is not easy? Five years may seem like a long time, but all too many attempts at major protocol transitions fail in messy and expensive ways.

Mine didn’t because I did a simple thing. I wrote libraries to handle the client side of the protocol handling, and I told all of GPSD’s client developers “Use these! Because if you write or keep your own protocol parser, it’s going to break.” Then I changed the libraries so they could handle either old or new protocol. The theory was that once my client developers linked in a library version that swung both ways, they wouldn’t have to care when the actual protocol transition happened.

That was the theory, anyway. It didn’t work perfectly, because I didn’t get the library interface design quite right the first time. Or the second. I got the interface right on about the third try, and the structure format right on the fifth. I had a few client developers yell at me, not without justification, about library transition issues. About which I can only say “Sorry. My fault.” The thing is, it could have gone much, much worse – and it usually does. Comparatively speaking I’m actually really good at this – most end-users never saw a service disruption.

What all this effort bought us, functionally, is that handling new navigation sensors in GPSD and its clients is now pretty easy. The immediate gain is support for the Marine AIS system – and if you’re wondering about the real-world impact of that, GPSD had a role in the remediation of the Deepwater Horizon disaster. We’ll probably do aircraft transponders next. Gradually GPSD is becoming the handler for every kind of sensor that tells a computer where it is and where all the GPS-equipped ships and planes around it are. In the not very distant future GPSD is likely to handle communications from GPS-equipped automobiles, too.

With 3.0, we reach the point where I expect GPSD’s protocol and the library interface to be long-term stable. There are still a few client applications that haven’t caught up – notably Firefox, which last I heard was still using a roll-your-own parser rather than my C client library. But there’s only so much I can do, really; on the whole, the transition has gone as well as could have been expected.

Most of the people who rely on GPSD will never know it’s there. It’s not a user-facing application that people actually see, it’s plumbing that the programs they do see relies on. Like physical plumbing, it’s unglamorous and out of sight and essential. I’m OK with that. There’s a quiet kind of satisfaction – not really new to me, since some of my other code is even more ubiquitous – to knowing that the world rests on your software, even if most people will never understand how.

46 comments

  1. What does Firefox use GPSD for?

    Also, it would be extremely cool if either or both of the following happened: GPSD was ported to Android and gotten to take its input from the device’s GPS receiver; and/or a car was sold that allowed some hacking of its onboard computers, and GPSD was used for its GPS navigation.

    Maybe it would become as ubiquitous as libpng and libgif are now. :P

    1. >What does Firefox use GPSD for?

      Location-sensitive search. I don’t know the details, because all I have are second-hand reports – I’ve never seen the actual code.

  2. ESR,

    Let me know when you start doing aircraft transponder work. I’d be very interested in helping to develop a common NMEA-like (but oh god, not *too* NMEA-like) protocol for distributing ADS-B messages. I’m the guy who’s been working on a Mode S/ADS-B receiver for Gnuradio (https://www.cgran.org/wiki/gr-air-modes). I also wrote an AIS receiver for Gnuradio which uses GPSD for parsing the NMEA.

    –n

    1. >I’d be very interested in helping to develop a common NMEA-like (but oh god, not *too* NMEA-like) protocol for distributing ADS-B messages.

      What I plan to do is turn ADS-B data from sensors into a set of JSON objects that’s interspersed with the rest of GPSD’s sensor take. So, potentially, you could have one GPSD instance monitoring a GPS, an AIS radio, and an ADS-B radio and all the reports would ship in JSON to be consumed by whatever applications are watching port 2947.

      NMEA is not really rich enough for this job – yes, with heroic effort you could shoehorn ADS-B data into it but the results would be ugly and the parsing would have a lot of error-prone corner cases. JSON is a much better container metaprotocol.

  3. @ESR:
    “A good analogy in the physical world is the difficulty of changing an entire country’s railroad gauge. The long-term benefits may be huge, but the short-term cost in capital and service disruption is daunting.”

    An even better example is switching from English units to metric. I’m convinced that the real reason America never switched wholesale to metric was not resistance from consumers, but rather the enormous expense of retooling all our manufacturing capacity.

  4. Actually, officially, the U.S. changed to metric back in the late 60s or early 70s.

    It’s just that we wrapped it in a bunch of library definitions that say “one inch is exactly 2.54 centimeters”, “one quart is exactly 0.946352946 liters”, etc.

    In other words, we did pretty much the same thing — developed a protocol that worked both ways to brace for the eventual transition. The reason why the old units are still used is because Americans are ornery. Much of the rest of the English-speaking world actually still uses imperial units in casual settings (you can still buy a pint of beer in the UK, and human heights in Canada are still reckoned in feet and inches), but the metric system probably gained official and commercial cachet by a combination of government fiat and propaganda — things Americans are highly resistant to.

  5. @Cathy: Since most of you are probably driving Toyotas and Nissans and Subarus nowadays (yeah, Jay, I’m lookin’ at you!), you may not realize that American cars were all switched to metric more than 20 years ago. For the longest time, we were drinking half-liter bottles of soda, water, etc., but they retooled to factories to 20 ounce bottles as bottled water started increasing in popularity with nanny-state advice of drinking eight 8 ounce glasses of water a day. (What my doctor says: Drink when you’re thirsty. :)

    So, no, I don’t think that has anything to do with it, honestly.

    Disclaimer: I currently work in the automotive industry for a small OEM you’ve probably never heard of.

  6. @Jeff Read:

    > you can still buy a pint of beer in the UK

    Yeah, but you can’t buy a quart of Coca-Cola. You also can’t buy cabbages by the pound. (Well, you can as long as the price per Kg is in at least as big a font…)

  7. The best engineered protocols often don’t survive contact with the real world unscathed.

    Back in the early-to-mid-80s, I worked for a company building protocol converters to connect IBM mainframes and midframes (Bisync, SNA/SDLC, Coax, or Twinax) to async terminals, then later to PCs.

    We had a terminal/file transfer program that let you simultaneously use a terminal and move files, over a direct RS232 or modem connection, between an IBM minicomputer (S/34, S/36, S/38) and an IBM PC or a Macintosh, around late 1994, I think. We supplied the PC and Mac software. I designed the CRC-protected, windowed protocol, based on my prior experience with Bisync and SNA/SDLC. It worked great, except…

    There were some cheesy, almost-Hayes-compatible modems out there, that didn’t handle things like carrier-detect properly. So the modem connection might terminate, but one end didn’t realize it, because the modem echoing the poll command in off-line mode would sometimes be what the terminal program expected for its poll response, so the keepalives kept it alive even after the phone line was disconnected.

  8. @Cathy

    I’m convinced that the real reason America never switched wholesale to metric was not resistance from consumers, but rather the enormous expense of retooling all our manufacturing capacity.

    US manufacturing has been the most powerful, consistent, and persistent lobby for metrication in the country. After all, they both manufacture with imported components and export to metric-only countries. One recent effort has been to get the Fair Packaging and Labeling Act amended to allow metric-only labels; the change was blocked largely by the efforts of retailers.

  9. “…the change was blocked largely by the efforts of retailers.”

    I remember the “Stop Metric Madness!” idiots that used to appear on talk shows. Apparently they were incapable of learning, “A meter is about a yard; a kilogram is about two pounds; a liter is about one quart.” and going on with their lives. The audience was always too polite to tell them how stupid they were.

    It’s not just metrification…the “Nothing Can Be Done For The First Time” brigade can be very loud and persistent. They cause a lot of mischief in our society.

  10. @Cathy>”I’m convinced that the real reason America never switched wholesale to metric was not resistance from consumers, but rather the enormous expense of retooling all our manufacturing capacity.”

    I used to think that the US system of measure was hopelessly archaic. For scientific/engineering calculations I still think this is the case. I much prefer SI units. Then I built a house.

    When you start building “things” the benefit of the SI system goes away. If you use the English Decimal system, ie tenths,hundredths and thousandths of an inch, there is little difference from the SI system in practice.

    The one thing the US system of measure is very good at is construction of buildings. There is a method to the madness. The fractional nature of the system lends itself to easy usage in this context. Irrational numbers and ratios are easily expressed in fractional form. With nothing more than a pencil and paper, complex geometric relationships and ratios are easily calculated. Doing this with decimals is much more difficult. An electronic calculator partially eliminates this problem, but did not exist when the system was conceived. Slide rules operate using ratios, and pair nicely with the US system.

    The various systems have strengths and weaknesses. I don’t expect US standard units to disappear anytime soon. For the same reason that Knots will remain a more useful concept than mph or kph. Then there is the fact that degrees F and R have greater resolution without resorting to decimal fractions of a degree. Good luck getting people to use deg. K.

    I hate Slugs….now if we could also kill kg-force while we are at it.

    I think all of this merely illustrates what ESR is getting at….

  11. “Slide rules operate using ratios, and pair nicely with the US system.”

    @TMR: Could you explain that? Slide rule scales are engraved according to logarithms base 10. The classic K&E Log-Log-Duplex-Decitrig (“the slide rule that built the bomb”) gives you trig functions of tenths of a degree (as the name implies – though degrees run 0-90 as usual).

    Of course, I still have my Log-Log-Duplex Vector model handy, though I need strong reading glasses to see the scales….

  12. The unit of size should not be confused with the units you count with.

    .001 of an inch or .001 of a mm are both simply one thousands of the unit. So log functions to base 10 work for metric or English units, as both count numbers to the same base 10. It is the comparative size of the base measuring unit, not the ‘size’ of the numbers you count them with.

    For any engraved measuring device to be useful, it would need to be engraved with graduations of the unit of measure you are measuring in –a caliper in a machine shop would be in thousands of an inch, or thousands of a mm (or as my electronic ones are, changeable at the touch of a button from one to the other).

    A slide rule is used to calculate numerical values, not units of measure, and so it can calculate metric or English units, or in fact any other unit of measure, so long as you understand that the calculation is simply going to provide a solution in base 10. It falls to the operator to know if he is working in metric or English units.

  13. a caliper in a machine shop would be in thousands of an inch, or thousands of a mm

    I doubt it. That would be a really big caliper if its resolution is as large as 1 meter, much less if it were thousands of inches. I think you meant thousandths of an inch, and I’m not sure what you meant on the other one. Can a machine shop caliper really measure at the μm level?

  14. The advantage of pints, quarts and gallons are that they are base 2. And 1 pt of water is 1 lb.

    Just like one liter of water is 1 kg.

    12 inches to the foot and 60 minutes to the hour are entirely to make it easier to divide a common unit by 2, 3, 4 or 5.

    These are useful advantages when you’re doing pen and paper arithmetic, or head arithmetic.

    I still prefer SI units for most things, but as someone who has to work, professionally, in the head space of “What will people be able to do easily in their heads?” I don’t discount the advantages of the Imperial units.

  15. I read your WP and noted – with interest – the choice of JSON compared to XML.

    I recently needed to start flinging firewall log data out and decided on JSON as the base protocol. My effort to KISS got kind of jumped on by responses suggesting the use of something that was readily parsable by existing IDSes etc. This led me to read RFC4765 which describes an XML based protocol called Intrusion Detection Message Exchange Format (IDMEF).

    XML makes this astoundingly ugly – in fact most (all?) IDMEF parsers and generators generate/parse their code direct without using an XML parsing library because of the ugliness and inefficiencies that XML forces on them. However it turns out that IDMEF can be JSONed rather well. And modulo a bit of trivial tweaking taking the one and turning into the other is 3 or 4 lines of perl, two of which are:
    use XML::Simple;
    use JSON;

    More importantly (and related to the trivial tweaking noted above) there are ambiguities in XML that mean that without some specific domain knowledge about what you are generating/parsing it is possible to create multiple representations of the same data and to end up with different data-structures at the far end depending on whether a particular field is repeated or not in the XML. This typically causes the receiver to parse one as an array and the other as a hash/dictionary. With JSON you can’t do this because you can explicitly specify something as an array with (as it happens) just one entry in it. JSON is also significantly more compact in my experience, which is useful not so much from a “saves bandwidth/diskspace” perspective as a less likely to introduce errors if you have to include raw data in it one.

    All in all, JSON is a far better protocol to base your protocol on.

  16. @LS>Could you explain that? Slide rule scales are engraved according to logarithms base 10. The classic K&E Log-Log-Duplex-Decitrig (“the slide rule that built the bomb”) gives you trig functions of tenths of a degree (as the name implies – though degrees run 0-90 as usual).

    I was referring to trig scales, navigation and relation of angles to distance/time.

    As others have said you can use a logarithmic type slide rule to work in either system.

    Setting up the problem and the fractional notation is just easier (for me). 1/16, 1/8, 1/4, 1/2 is just easier to work with than .0625, .125, .25, .5. Especially if you are using Pythagorean Triangles.

    This is evident when looking at roof slopes, angles, rise over run etc. You get nice fractions.

    Having driven my carpenter friend crazy with my use of decimal measurements, I soon came to see his side of things.

    @ Monster>Can a machine shop caliper really measure at the ?m level?

    with calipers…no….a micrometer yes. The division on the vernier is .0001 in for US micrometers and .001 mm for metric. Getting repeatable measurements at that level is another thing entirely. Anything below about 10 microns is mostly noise in common machine shop practice. Unless you are working with optics or some other esoteric thing.

  17. @ M. Greywolf>”American cars were all switched to metric more than 20 years ago.”

    I WISH!! They sort of switched. Rather than be all metric they are a demonic mix of both. You need both metric and US tools. You can’t just look at a bolt head anymore and know what it is. I think they just converted units on some of the drawings and said….presto! We are metric!

    Then there are those British standard wrenches that somehow got in my tool box…ugh.

    Pick one…please!!

  18. Especially if you are using Pythagorean Triangles.

    Is this another name for “right triangles”?

    Having driven my carpenter friend crazy with my use of decimal measurements, I soon came to see his side of things.

    That’s because an “English” tape measure is not marked in decimal inches; it’s marked in 1/(2^n) increments. Chicken and egg situation. If you’re using a metric tape measure then it’s marked in decimal increments (m, dm, cm, mm) already, and if someone told you to cut this board at “5m, 2 5/8 dm” you’d think he was insane.

  19. English fractional 1/(2^n) units are MUCH better when building houses! You do NOT even need tape measures for many things…take a string marked in feet, fold it in half….yeah, base 2 can be very useful! You can actually end up with precise distances that way, so long as you are careful when doing all your foldings and marking where you got to whole feet…then mark half feet….then mark remaining…yeah, sounds a lot like certain computer binary algorithms :-)

    Base 2 lends itself so much more easily than SI base 10 units when out in the world working with physical “stuff” that’s already there. For science/math on paper, I’d rather shoot myself in the head than use anything other than SI units. Different setting, different units.

    Yeah, that American cars being a horrible mishmash of English and SI nuts and bolts is MADDENING….my step-father had been a mechanic for many years, and HE had trouble eyeballing which a bolt was all the time. Got it right a decent percentage of the time, but not much more or less than a coin toss. And then there is plumbing, which has bolts that only god knows what they are in….encountered one last week that wasn’t english OR metric, maybe just random and Monkey Wrench Only????

  20. You do NOT even need tape measures for many things…take a string marked in feet, fold it in half

    And what precludes you from doing the same damned thing with a string marked in meters/cubits/boojums? That’s hardly an argument for the superiority of one measuring system over another.

    The whole problem with negative powers of two being weird-looking fractions is that when we started counting, we used our thumbs as if they were just two more fingers. We could be using octal, which maps so beautifully to binary and back.

    Or if people had decided that the thumbs each counted the same as 4 fingers, we’d be using hexadecimal, which is even better, being an even power of two and all.

  21. @Monster>”That’s because an “English” tape measure is not marked in decimal inches; it’s marked in 1/(2^n) increments. Chicken and egg situation. If you’re using a metric tape measure then it’s marked in decimal increments (m, dm, cm, mm) already, and if someone told you to cut this board at “5m, 2 5/8 dm” you’d think he was insane.”

    Not really. All the dimensional lumber works in that way, all the roof pitches are set up that way. When you use 3-4-5 and 5-12-13 triangles you can quickly and easily calculate things. You could do the same with a decimal tape yes, but rather than having to multiply .5X13 you simply pick whatever scale you are working in; say 1/2s and put a 13 over it. You don’t even have to do the math, you simply go to 6 and add a half. The tape does the math for you because you are working in 1/2 fractions of the major unit. In this simplified example you can probably do the math easily either way. When everything is set up as 1/2s you don’t get odd ball things like 7.3 or other more difficult combinations. Everything is EXACTLY half of something. Working in decimals you are going to do a lot of rounding, and errors can add up and compound if you are not very careful with your rounding rules.

    I know this just seems like a semantic thing, and mathematically it makes no difference. However, when actually using the system to build something, not just do math problems on paper, the elegance quickly becomes evident.

  22. @David M>”And then there is plumbing, which has bolts that only god knows what they are in…”

    I hate plumbing.

    There is pipe..and there is tube, with different branches and sub branches of each. There are compression fittings, hydraulic fittings, flare fittings, NAS, MS, SAE. They will fit together but the flares are ever so slightly different so they leak. There is pipe thread, there is straight thread. Then there is metric…oh and brake lines are a thing unto themselves as well. A brake flare looks like a tube flare but isn’t. There is refrigeration copper, there is regular plumbing copper. There is PEX. There is PVC, CPVC, and Electrical PVC. Then there is conduit. There is some obscure system used in mobile homes. AAAAGGGGGHHHHH!!!!!

    A while back I was working on a CNC metal lathe that was made in Austria….I searched madly for what I thought was a metric compression fitting. Eventually I discovered that it was some obscure British Standard hydraulic fitting WTF!!!.

  23. @ The Monster

    The millimetre (American spelling: millimeter, symbol mm) is a unit of length in the metric system, equal to one thousandth of a metre, which is the SI base … –Google is your friend. Yes my machine shop calipers measure in these units.

    You are quite correct I meant thousandths, not thousands. I plead being tired and relying on seeing no red underlines in the spell checker as meaning I had made no typographical errors… I ask for mercy for this horrid crime. In making my plea for mercy I’d like to point out that as you not only caught my grievous error, you also deduced what word should have been used, owing to this I ask that you be particularly lenient –after all, if even you could deduce the nature of the typo, then it can not have been all that confusing to the rest of the world.

    Still it was a heinous crime… no doubt worthy of a beheading, so again I plead for mercy. Indeed in my wretched plight I cry to the heavens for mercy, please sir, find it in your Monstrous heart to grant clemency.

  24. The millimetre (American spelling: millimeter, symbol mm) is a unit of length in the metric system, equal to one thousandth of a metre, which is the SI base … –Google is your friend. Yes my machine shop calipers measure in these units.

    after all, if even you could deduce the nature of the typo, then it can not have been all that confusing to the rest of the world.

    But you said “thousands of mm”, by which I (correctly, it turns out) figured you might have meant thousandths of mm, the SI symbol for which is μm, or one millionth of a meter, which is an entirely different thing altogether. So even allowing for the repeated typo of “thousands” for “thousandths”, that still isn’t what you apparently meant to say. And now you’re trying to make me the bad guy for pointing out that even allowing for the double omission of “th”, you’re claiming calipers that read on the micrometre (aka “micron”) scale.

  25. @ The Monster

    And now you’re trying to make me the bad guy for pointing out that even allowing for the double omission of “th”, you’re claiming calipers that read on the micrometre (aka “micron”) scale.

    Please, sir, believe me when I say I make nothing of you. Neither am I claiming anything –other then my errors.

    I have but asked forgiveness for my transgressions. Indeed I see my last petition did little but strike a spark from the flint of your heart, so pray allow me to fall upon my sword yet again, that I may hope to soften that stone,and atone for my sins.

    Pray the following may please you;

    First edit is from
    ” .001 of an inch or .001 of a mm are both simply one thousands of the unit.”
    to:
    “.001 of an inch or .001 of a meter are both simply one thousandths of the unit.

    The second edit is from
    “thousands of an inch, or thousands of a mm”
    to:
    “thousandths of an inch, or thousandths of a meter”.

    I understand the scale of my error was great, my sin abysmal,my prayer for mercy insignificant,my words unworthy, my cries no more then a whisper in a gale, yet I again beseech you to forgive me for having confused you so. It was never my intent to cause such distress, please accept the forgoing edits as redress for the anguish my poorly written post has caused you.

  26. @D.

    I will never understand why the person who points out errors is the bad guy. You’re the one who made not one but three errors (two identical), and somehow now I’m an asshole for pointing it out. If it really were all about being confused about what you said, you could have just said “yeah, I meant thousandths and meters”, but you decided to go all “google is your friend” on me like I’m responsible for your errors.

    No amount of mocking me for having the temerity to be a “nit-picker” or “grammar nazi” will ever get me to understand how that works.

  27. @ The Monster

    I’m not mocking you, I’ve just been taking responsibility for my errors. I confess to favoring a style of English prose that may be a bit difficult for you to follow.

    And I also confess to using that particular style because I found it somewhat funny that you didn’t just say, “Hey I bet you meant thousandths and meters not thousands of millimeters”, which would have elicited an “Oops, good catch.” from me.

    So what I decided to do was have a bit of fun, as it turns out you seem to feel that it has been at your expense, when I was expecting you to rise to the joke and we’d share a laugh.

    Instead I guess it’s just “Whoooosh”. I expect that’s in a vernacular you wont be confused by…

  28. @ The Monster

    Sure, I can laugh at that –but then I guess I can take a joke…

    Really, lighten up, don’t take yourself so seriously. I sure don’t think my ramblings are of all that much value –you can laugh at them, or ignore them, many people have, many more no doubt will.

    But stressing out over a bit of fun over a couple of somewhat minor errors in a post of no importance is really probably not good for your health –take a deep breath and relax.

    FSCKing myself is no doubt a good way to clear up the errors that seem to have troubled you –my admission of my errors, my clarifying edits for my post, not even my pleas for clemency, seemed to find favor with you, so simply removing the offending Inodes from my (and your) mental file system seems a fine alternative.

    Consider it done, maybe next time we can start on the same page.

  29. @ The Monster

    Really, lighten up, don’t take yourself so seriously

    But I’m not. I’m JOKING! Aren’t you? You said you were.

    You seem to find yourself on the horns of a self made dilemma –am I joking or am I not?

    Well, I’ll help you out:

    First I’ve never said I was joking, merely that I was not mocking you.

    After awhile it became necessary to explain to you that I started out to have a bit of fun, hoping you would join in and we could have a laugh about it.

    And it has been fun –the more I agreed with you, the more I plead for mercy, the more frustrated you became. This is an easy (and I admit a slightly childish) form of rhetoric — as Plato said, (paraphrased), never teach the art of rhetoric to children, for they will tear each other to pieces with it.

    And sure enough here you are a bit torn around the edges. You have even started attempting to put words in my mouth –a sure sign of losing ones footing. (for clarity: I never said I was joking, only that I was having a bit of fun, had you joined in it would have been a joke).

    In failing to accept ‘yes, I’m sorry, forgive me” as an answer, you set the stage for you to become the joke. But that is not the same as me joking.

    I even went so far as to, at your request, FSCK myself in an attempt to appease you. I confess I knew it would not do so.

    In your first post about my errors, I thought I detected a certain type of pedantic personality that could not accept ‘yes’ for an answer –it had to be a special kind of ‘yes’ that would satisfy the pedantic need for acknowledgement of his superior knowledge and the importance of minute details or formalisms.

    In short, I suspected you needed not only “yes, I made an error” but also a kowtow to your expertise in noticing a rather minor error.

    So I set out to see if you were that sort of pedantic.

    A small effort in rhetoric (being agreeable and apologetic at every turn, but always in such a way as to deny you that moment of gloat that all pedantic people are in such need of) soon showed that my assessment of your condition was at least reasonably accurate.

    And so, of your own free will, and by the pedantic nature of your personality, you have made your self the joke.

    But at no point was I joking with you –playing with you, yes. But you made it so easy. At any point you could have joined in by seeing the humor in my over the top apologies and thereby become a player rather then the played.

    Now having explained this to you (which, unfortunately you will no doubt take offense at, although none is intended), I leave the field to you –I wanted to stop wasting the blog space, and offered a closure in my last post, but you just could not leave well enough alone. This exposé of one of you minor faults is the result.

    OK, reply at will, if you just must continue this, –with intelligence and retrospect if you can… although I sort of expect a rant about my ancestors or some such nonsense. I’d like to be wrong. As I said, take a deep breath and relax.

    @ Tom DeGisi

    I agree about music being a great emotional venue. But to show the sharp edge of the knife very little exceeds the value of the written word.

  30. In short, I suspected you needed not only “yes, I made an error” but also a kowtow to your expertise in noticing a rather minor error.

    But you did not offer “yes, I made an error”, or for that matter “oops, I guess I made two errors there”…

    being agreeable and apologetic at every turn

    Instead you said “google is your friend”, which is hardly “agreeable”. You doubled down on your micron error, then made the over-the-top “apology” to mock me as a pedantic prick. That part was clear from Jump Street.

    I don’t need any kowtowing; you could have responded with nothing and it would not have mattered to me, but if you want to argue the point of whether you made errors, I’m happy to have the debate. Your first response was to try to make it look like I was the one in error, by defining “millimetre” and assuring me that machine shop calipers are calibrated in that unit. At that point, you had not even noticed my reference to μm. Woooosh, indeed.

    I even went so far as to, at your request, FSCK myself in an attempt to appease you.

    Um, at the risk of being pedantic
    -bash: FSCK: command not found
    That’s another joke right there, Son.

    I see that you got at least part of the joke. I had hoped that the <code> tag helped to tip you off. But even if you didn’t get the joke, it would have been a wonderful demonstration of how you could take offense at a joke after telling me not to do so, which would then be a meta-joke. Either way, funny. I even think it’s funny when I demonstrate Muphry’s Law.

    As I said, take a deep breath and relax.

    Oh, but I am relaxed. I’m having FUN. I’m joking around with my friends, making fun of errors like “thousands” instead of “thousandths” and “thousand(th)s of mm” instead of … “mm”. I’m joking about Google is Your Friend, and Go fsck Yourself.

    But if you think it’s a “minor error” to confuse “thousands” and “thousandths” or to confuse mm and μm, you need to avoid working in any kind of technical capacity whatsoever. An error of three or six orders of magnitude is big in any job other than maybe government service.

    And that means you shouldn’t have any of the jobs that most of the people who read this blog have. Designing telescopes to be launched into orbit is right out. I also don’t want you performing surgery on me or any of my family. I might let you paint my house, but I’d be afraid you’d order a million times the right amount of paint, so I won’t let you charge it to my credit card.

    Oh, yeah…
    #include "ancestor_rant.h"
    I bet one of your ancestors was on the Santa Maria, reassuring Columbus that India was just over the horizon, when in fact it was on the other side of the earth.

    I’d hate it if I failed to live up to expecations.

  31. @David M:

    That’s true of 1980s and a few early 1990s cars, but most American cars built in the last 15-20 years are all metric except for a few things that are English due to regulatory or other odd standards. For example, the bolts that hold the battery in on most cars (even foreign cars sold in North America) are English. I think there’s actually some sort of government regulation about that. Tire sizes, too are required to be English. But everything else in the car is metric.

    In fact, the CAD defaults files used by Ford, General Motors and Chrysler all force the use of metric (IDEAS,ProE, NX, and CATIA V5 for Ford, NX for GM and CATIA V4 and CATIA V5 for Chrysler) and have for a long time.

  32. Two things:

    1. esr – why not just use Python? A C-implementation of the parser already exists, and has all the added benefits of being a full-on language as opposed to a serialzation scheme.

    2. Customary units are useful precisely because they are human-scaled and relate to reality. A man is 2 yards tall, not 1.blah-blah-blah meters. A pint is, at least for the normal person, a sufficient quantity of beer for a single serving. A liter is not. Recall the original definition of the meter: 1/10,000,000 of a longitudinal quadrant of the Earth. How arbitrary! Yes, SI is much better for scientific and engineering calculations on paper, but in the real world, give me customary units anytime.

  33. Customary units are useful precisely because they are human-scaled and relate to reality. A man is 2 yards tall, not 1.blah-blah-blah meters

    A meter and a yard are close enough to the same thing that it’s silly to say one is more human-scaled than the other.

    A pint is, at least for the normal person, a sufficient quantity of beer for a single serving. A liter is not.

    Since a liter is more than two pints, I’d say it’s more than sufficient. Interestingly, in many countries, a “(metric) pint” is defined at least informally as “half a liter”. We will come up with human-sized units. If defined as a convenient number or fraction of metric units they give us the best of both worlds.

  34. Matt has a point with the liter thing, actually. I think he meant that a liter is too much beer. To paraphrase Asimov: “a deciliter is far too little; a liter is far too much; but a pint? ahhh, that’s just right.”

    Sure, you could say “half a liter” and be within epsilon of fine. But then you may as well nickname that a “pint”. Or a metric pint, as you said. Same thing. Call it a pint and rely on the context. We all know what you’re really getting.

  35. Given that a British pint is 570 mL and a U.S. pint is 470 mL and people seem quite happy with both; I believe that a half litre is as good a size glass as any. People will get used to any sized glass – even the 1 litre steins in Germany…

  36. In Scotland, we still use teensy weensy (1 microgramm ish), tad, heaps, firlots, gills, mutchkins big muckle and humungeous. but anyway, where would we find this new improved version of GPSD?
    And am I ever going to get my bluetooth GPS to work?

  37. The gpsd website notes that NMEA 2000 is not supported in a very depressing tone. With AF_CAN for Controller Area Network (SocketCAN) now merged into the kernel (written by Voltswagon) will gpsd look to adding NMEA 2000 gps capabilities?

    1. >will gpsd look to adding NMEA 2000 gps capabilities?

      It’s possible. Some support code has been submitted, but it’s not going to be ad all easy to integrate.

Leave a comment

Your email address will not be published. Required fields are marked *