« Earlier Projects | Electric Magic Portfolio | Newer Projects »

April 2009

YadTranscode

YadTranscode is a useful little command line tool. There's a bunch of data formats out there that might look different at first glance but on reflection can be seen to be isomorphic.

Most computer languages provide a suite of atomic data types, values that are generally not themselves subdivided. These usually include numbers, booleans and strings, may also include raw binary, and may make distinctions amongst various sizes of floating point and integer numbers.
Languages generally include an aggregate type that is called an array, vector or list, being a sequence of values. Languages also usually include a hash, dictionary or map type that is a collection of name/value pairs indexable by name.
Persistent data structures and streamed protocols very often reflect these divisions -- a larger or smaller suite of atomic types plus the two aggregates. If you squint you can see the commonalities amongst the QuickTime/MPEG4, bencode, plist and json formats. Various flavors of XML-based serialization fit the pattern, and even the venerable CSV can be treated as a sequence of maps of atoms.
YadTranscode reads sources of several formats: bencode, json, quicktime, tab/CR tables, xml plists, a couple of stylized xml formats and a custom binary format. It transcodes that data and emits json, xmlplist, a type-rich text format akin to Next-style plists and a custom binary format.
It's built on some of the wide suite of ZYadR entities in ZooLib.

April 2009 Projects

Project Archives