{"id":42,"date":"2003-07-25T17:04:50","date_gmt":"2003-07-25T16:04:50","guid":{"rendered":"http:\/\/www.nobugs.org\/blog\/archives\/2003\/07\/25\/when-im-64\/"},"modified":"2003-07-25T17:04:50","modified_gmt":"2003-07-25T16:04:50","slug":"when-im-64","status":"publish","type":"post","link":"https:\/\/www.nobugs.org\/blog\/archives\/2003\/07\/25\/when-im-64\/","title":{"rendered":"When I&#8217;m 64"},"content":{"rendered":"<p>I&#8217;ve been taking lots of digital photographs recently, and I recently worried whether I&#8217;d still be able to view them in thirty or so years.  I have several old documents in Pagemaker 4 format which I know I&#8217;ll never be able to read again.  So, will this happen with my photos?  Are my jpegs future-proofed?<\/p>\n<p>I&#8217;m not worried about the physical media becoming obselete.  Our abililty to store data has constantly increased.  Every bit of data I have is kept on my harddrive.   When I change machine then I copy it wholesale onto the new machine.  I never &#8220;archive off&#8221; old material onto tape\/CD\/DVD to free up space, because my hard drive is always larger than my storage needs.  I&#8217;m fairly confident that in 30 years time, I will still be able to access the raw sequence of bits which make up each photograph.<\/p>\n<p>Will I be able to view these bits as photographs though?  In the year 2033, I could probably emulate today&#8217;s hardware\/software and still run exactly the same utility to view my photos.  It&#8217;s a bit of a heavyweight solution though.  I don&#8217;t really want to snapshot the current version of the linux kernel, XFree86, Gnome and GThumb just so I can view photos sometime in the future.<\/p>\n<p>It seems more sensible to stash away a description of the jpeg file format &#8211; that way, even if noone else wants to view jpegs, I can still code up a viewer because I know what the sequence of bits <i>means<\/i>.<\/p>\n<p>But how should I do that?  Storing the source code of a C++ or Java JPEG viewer isn&#8217;t going to be much use, because In The Future it&#8217;ll be pretty hard to figure what the semantics of C++ or Java were in the year 2003.  I&#8217;d have to stash away a copy of the Java Language Spec too, otherwise I&#8217;d just be left with a pile of meaningless squiggly brackets.  We learned that when people had to tackle a myriad of COBOL dialects for Y2K problems.<\/p>\n<p>Is there any &#8220;timeless&#8221; programming language which I could use?  Something which I&#8217;ll still know the semantics for in 30 years?  Hmm, I guess you could express a JPEG decoder using the lambda calculus, but that&#8217;s a bit extreme.  The semantics of the lambda calculus will still be understood in 30 years, but you&#8217;d have a hard time figuring out what a large &#8220;lambda calculus JPEG decoder&#8221; actually did.<\/p>\n<p>I think, if I&#8217;m going to stash away a description of the JPEG algorithm, it&#8217;s probably going to be a good old fashioned english-language description.  That&#8217;s probably good enough for 30 years.  I don&#8217;t think the semantics of the English language and mathematical notation are going to change much in that time.   It&#8217;s not perfect &#8211; just look at the ambiguities which most &#8220;english language&#8221; specifications contain.  But, the language .. the medium in which the description is expressed .. is probably stable for a good few decades.  Maybe this <a href=\"http:\/\/www.cs.uu.nl\/people\/jeroen\/article\/jpeg\/index.html\">Haskell paper<\/a> is a good alternative to the published standards document.<\/p>\n<p>I wish the story ended at this point.  But it doesn&#8217;t!  How should I store the description of the algorithm?  I don&#8217;t expect I&#8217;ll be able to read PDF documents in the year 2033.  Their semantics are way complex, more so than the JPEG format.  You&#8217;d have to record the semantics of Truetype fonts, or whatever, in order to display them in the future.  Postscript is no better.  The Postscript reference manual which gives an english-language description of the format\/language is over an inch thick.<\/p>\n<p>ASCII or UTF-8 is going to be a good bet.  I think we&#8217;ll still be able to read that in the future.  I probably want to include some mathematical formulae, so maybe I need some mathematical markup too.  It begins to sound like XML.<\/p>\n<p>So that&#8217;s the next 30 years sorted out.  What I wanted my data to last for 3000 years?  Can you store information which transcends changes in language,  notation and cultures?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been taking lots of digital photographs recently, and I recently worried whether I&#8217;d still be able to view them in thirty or so years. I have several old documents in Pagemaker 4 format which I know I&#8217;ll never be able to read again. So, will this happen with my photos? Are my jpegs future-proofed? [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":0,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nobugs.org\/blog\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}