12/04/2010

Data.

Posted by – December 4, 2010

I woke up early with the thought of cleaning up and organizing this bunch of backup-CDs I’ve never touched since years. While I was tagging them one by one, I remembered this tool someone wrote for the MSX computer to archive and inventorize (that’s not a legitimate word) 3.5 inch disks (or ‘diskettes’ as we called them then). That would be a fun hobby project, if it wasn’t for time.

The net-result was that I didn’t find the data I was looking for: a huge archive of all my mails pre-2004, which I’m 100% certain were in some kind of Eudora archive. So, funny enough, I’ve got all my pre- and post 2003 sources (well, not all of them) but e-mails? Nope: it’s like that all my mail of the period between 2000 to 2003 disappeared in a black hole.

What I did find was interesting no-less: copies of Debian Sid, Woody and Sarge (god, I loved Sarge), old family photos from the time my mother-in-law was still alive, dad’s photos when he was over here, photos of a bunch of KDE hackers (apparently not mine), sources to a Delphi library to write and read BIFF files and recipes. Oh, and that copy of Wing Commander (the movie) that somehow made it onto one of my harddrives.

Mission not so accomplished. I think.

01/04/2009

Backup

Posted by – January 4, 2009

One of the weirdest stories last month, was the one about JournalSpace losing its data and then just plain calling its quits because the inability to recover that lost data. There’s an endless discussion going on at Slashdot and at MetaFilter1. The moral of the story is to properly backup your SQL data: most databases come with excellent tools to dump your data to text, binary or whatever format your prefer. And while you backup, always ensure that a database dump goes off-location, in case a fire breaks out in your server room.

I’ve mentioned this before but I generally keep sources all together, organized by programming language and highly tagged by date and such. Every 6 months, I make a quick inventory and make the proper backups if needed. I never use my source control/revision as a backup means: that’s not the point of a revision control system2. In the years of moving sources off computers and loading them back on new ones, I’ve lost a couple of sources. From all the sources I lost, I regret losing the PHP-based Scr*bble/WordPlay server. Well, actually, I have a bare snapshot of the sources but they are incomplete and I can’t do anything with it. To make it worst, back in 2001 or 2002, I forgot to export and dump the data definition and data. Where things went wrong was that the specific sources and data were stored on completely different locations (I developed on both Caldera OpenLinux and Windows 2000). What happened in my case was that I thought that all the sources were on OpenLinux but that the actual ones were stored on the Windows 2000 computer. I recognized this, of course, after I had formatted the Windows 2000 computer3.

We humans are extremely good in storing stuff in our brains, but we tend to only remember those crucial things after disaster has struck.

1 JournalSpace’s official report is right here. 01/18/09: JournalSpace’s official report is gone. It looks like the domainname was sold to a third party.

2 A source control system is only for saving your sorry ass when you made an error in one of your versions of your software so that you can revert your stupid sorry ass-changes and start over again. Sure you can use it as a backup means (CVS historical data can be moved to different computers easily, for example) but if you thought it to be there for disaster-recovery reasons, you’re mistaking.

3 Sidenote: this was on the MyNote 930. That computer had a full history of whereabouts too, and was eventually passed on to the local recycling plant.

02/19/2007

Sources

Posted by – February 19, 2007

I was reading this posting All these sourcesat Slashdot (“OSS Music composer gaining attention”), which is about a developer who has started a Buzz-like music ‘tracker’ in C#. The part that caught my eye at the linked article was the following paragraph (Italics mine):

The day the source code to Buzz got lost was a very sad day and there was absolutely nothing anyone could do. We’d just had an updated version of Buzz released and suddenly everyone realised there would *never* be another one.

Then I went back to the development log of Rosegarden (that outstanding MIDI composer for KDE/Linux, website), which reminds us that there was indeed a Windows branch:

1995-1996: Andy makes a sibling version of Rosegarden for Microsoft Windows, adding a significant amount of extra sequencer functionality. Then he loses the only copy of the source code in a hard disc crash. You can still have the 32-bit binaries if you like, but they might not work. Don’t come crying to us if you blow up your computer.

I think I have exactly one backup of my oldest sources, (covering 1995 to 2002) which have been put on (exactly) one 700 MB CD ROM. Compressed. Then, when working on my first Toshiba (2004?), all of my sources from then on where stored in a personal folder called ‘Sources’ (how original) with many (many) subfolders, all of them containing some sort of project, library or explanation. This folder has moved with me since then and currently covers 3.5 gig of space. Naturally, I always include the executables too (that is in case I ever lose my sources1). And what not.

If you just started programming and you think you’re a hotshot: Think about the Megabytes of code you can write in the next 10 years. Oh: and don’t forget to make backups too.

1 I did lose code over the years: Missing in action are the original WordPlay/Scrabble server (PHP, this is the one I once demoed to explain separation of UI, Code and data), a NNTP statistics collector (Python, this one actually worked too and I have no idea why I wrote it) and a directory synchronizer (Python too). I recently recovered that last one though (sheer luck) when cleaning up a directory on a ‘free hosting’ server (that was the same day I wrote code to extract passwords from a popular FTP program): The code actually still works, but I have no idea how or why I actually wrote it. I don’t understand the code either, anymore, which is worst than actually losing code).