JSON doesn't really fit very well into Erlang structures (at least in r16; I haven't played with r17 yet); so I don't think not using it is that crazy.
Speaking of json in general, this reminds me of a part of a talk by Joe Armstrong he gave at the React 2014 conf (K things I know about building Resilient Reactive Sytems)
Not related to Erlang necessarily, he talks about how at Ericsson they build these cell phone network-to-internet gateways and now they go to great lengths to pack data as tightly as possible on the communication channel, bit by bit, to conserve shared bandwidth and then "here come the users and shove json across the pipe, what a travesty!" -- it was a funny statement, and I never really thought of it that way. So I guess shoving binary across websockets like N2O is not totally insane.
I never understood that argument. The reason you can have nice text based formats is that it will all be compressed by the server anyway, or am I missing something?
No. The reason people use text based formats is so that they could be read by humans without additional tools. Compression reduces the size but it's not reasonable to claim it works better then a binary format designed for light footprint.
Joe also made a funny comment on that if you listen to his talk. He said how "People say ASCII is good because you can see what's on the wire. Well can they see electrons bouncing up and down the wire? They see what a program chooses to let them see"
But even then you're left with compressed text. If you're concerned about the amount of data you're sending on the bit level, then you're throwin all that out the second you start pumping out JSON.