title: Most efficient format for transferring data to and from embedded devices
body: <p>I'm having hard time to choose the format on which my server and my end points will communicate with.<br>
  I am considering:  </p>
  
  <ul>
  <li>JSON</li>
  <li><strike>YAML</strike> <strong>Too hard to parse</strong></li>
  <li>CSV</li>
  <li>Google Protobufs</li>
  <li>Binary packing/unpacking (with no use of casting/memset/memcpy to enable portability)</li>
  <li>Some form of DSL</li>
  <li>Any other suggestion you might have</li>
  </ul>
  
  <p>My criterias are ordered from the most important to the least:  </p>
  
  <ol>
  <li>Which is the easiest to parse?  </li>
  <li>Which is the fastest to parse?  </li>
  <li>Which has the smallest in bytes?   </li>
  <li>Which has the potential to have the most readable messages?</li>
  <li>Which has the potential to be encrypted more easily?</li>
  <li>Which has the potential to be compressed more easily?</li>
  </ol>
  
  <p>EDIT to clarify:</p>
  
  <ul>
  <li>Are the data transfers bi-directional? <strong>Yes.</strong></li>
  <li>What is the physical transport? <strong>Ethernet.</strong></li>
  <li>Is the data formatted as packets or streams? <strong>Both but usually packets.</strong></li>
  <li>How much RAM do the end-points have? <strong>The smallest amount possible, depeands on the format I choose.</strong></li>
  <li>How big are your data? <strong>As big as it needs to be. I won't receive huge datasets though.</strong></li>
  <li>Does the end-point have an RTOS? <strong>No.</strong></li>
  </ul>