{"id":1462,"date":"2009-05-17T22:37:37","date_gmt":"2009-05-18T05:37:37","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=1462"},"modified":"2009-05-17T22:37:37","modified_gmt":"2009-05-18T05:37:37","slug":"musings-of-a-file-format-hacker","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/musings-of-a-file-format-hacker\/","title":{"rendered":"Musings of a File Format Hacker"},"content":{"rendered":"<p>Some anonymous hacker recently <a href=\"http:\/\/blogs.adobe.com\/jnack\/2009\/05\/some_thoughts_about_psd.html\">made a name for himself<\/a> (wait, can you make a name for yourself anonymously?) by ranting against the difficulty of working with certain Adobe file formats. It got me wondering if we could draw more attention to the <a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a> program by littering the code with rants against the file formats we&#8217;re trying to re-implement. I&#8217;d like to think we&#8217;re above that, if only because the average FFmpeg hacker intuitively understands that no one ever meant for us to be able to re-implement these formats, at least not the proprietary formats.<\/p>\n<p>Ironically, I think you&#8217;ll hear the most complaints from the crew where <a href=\"http:\/\/xiph.org\/\">free, open formats<\/a> are concerned.<\/p>\n<p>You can look at a seemingly bizarre format and generally experience 1 of 2 reactions:<\/p>\n<ol>\n<li>What kind of moron thought of this format?! What were they thinking?!<\/li>\n<li>What did the creator of this format know that I don&#8217;t know? What were the original design goals and what problems were they trying to solve.<\/li>\n<\/ol>\n<p>Over the years, I&#8217;ve trained myself to have reaction #2. I&#8217;m not saying I&#8217;m superior; on the contrary, the philosophy leads me down the wrong path sometimes when it turns out that the format&#8217;s originator <em>honestly didn&#8217;t<\/em> know what they were doing. In that case, I end up giving them too much credit.<\/p>\n<p>Along these same lines, Joel Spolsky&#8217;s take is absolutely fascinating: He <a href=\"http:\/\/www.joelonsoftware.com\/items\/2008\/02\/19.html\">describes how the Microsoft Office formats<\/a> evolved to their present complexity &#8212; not out of spite for third party programmers, but to meet the needs of the applications&#8217; features.<\/p>\n<p>Actually, an impromptu and unscientific audit of the FFmpeg code (grep&#8217;ing for certain keywords) does seem to indicate a high level of animosity towards Microsoft.<\/p>\n<p>Suddenly, I feel revitalized regarding the <a href=\"http:\/\/wiki.multimedia.cx\/\">MultimediaWiki<\/a> and its charter. Someday, someone somewhere is going to want to know about that <a href=\"http:\/\/wiki.multimedia.cx\/index.php?title=UMV\">UMV format<\/a> on <a href=\"http:\/\/www.mobygames.com\/game\/dos\/are-you-afraid-of-the-dark-the-tale-of-orpheos-curse\"><em>Orpheo&#8217;s Curse<\/em><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is your attitude towards weird file formats?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[179],"class_list":["post-1462","post","type-post","status-publish","format-standard","hentry","category-programming","tag-file-formats"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1462","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=1462"}],"version-history":[{"count":6,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1462\/revisions"}],"predecessor-version":[{"id":1468,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/1462\/revisions\/1468"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=1462"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=1462"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=1462"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}