Assembly video: https://vid.me/Kwxf
Ribbon cable version: http://www.thingiverse.com/thing:1107461
Ever wish you could have some nice orderly data cables for your arduino projects without paying a surprisingly large amount for crimpers, sockets, and pins? This isn't the perfect solution, and you have to do some soldering and gluing, but it is probably the cheapest if you repurpose spare cables of one sort or another.
All you need are some cheap male (for plugs) or famale (for sockets) headers like these:
https://www.sparkfun.com/products/116 / https://www.sparkfun.com/products/115
https://www.adafruit.com/products/392 / https://www.adafruit.com/products/598
These look cool and will save xacto-ing female headers, but I don't have any: https://www.sparkfun.com/products/743
Then print out a shell to accommodate as many or as few pins as you want in either a single or double column format, with or without a strain relief shell. After that, solder up your wires, superglue the shell in place (liquid superglue on the header after insertion into shell (seeps into crevices), gel superglue between plug shell and strain relief shell), and voila -- data cable. It has an (optional, default) indicator bump so you can keep track of the correct orientation.
To use this, either download the openScad file and edit the variables in openScad, or use the "open in customizer" button in the right hand column of this page.
Printing with a brim is definitely recommended. Photos show mostly ABS (there is one clear PLA shell) and printed on a Lulzbot Mini. ABS is more forgiving, PLA requires more tweaking and closer tolerances because of its rigidity.
Potential Cura Issue: You can print with or without divider walls between the pins. I found that with my printer, Cura (lulzbot edition, version 14.09, OSX) would not print the divider walls -- they are a single nozzle width (0.5 mm in my case, adjustable to your printer of course). However, slic3r with pronterface to rescue -- that software prints out the divider walls like a champ.
PS: This is my first involved (for me at least) openScad project, and I'd really like to become somewhat proficient at using openScad. I'm also not a professional coder so hints, tips, and criticisms with corrections or examples would be deeply appreciated.