My website

a brief history

by Alejandro Ochoa GarcĂ­a

Knowing how to program, and wanting to post lots of pictures, have been the main driving forces behind my website.


en-us es-mx -

Clicking on the old URIs will show you a sample page from that period. However, none of the links within those pages will work. The older pages were modified to make more sense HTML-wise, so they're not representative of the old code that they used to have (I just can't stand bad HTML).

2002-05 - 2002-10: Geocities

My very first website was created when I was in high school. Back then I wrote and formatted my pages using Microsoft Word from Office XP. The page didn't have much content, just random stuff. This was the only time I ever had to tolerate advertisement on my website.

2002-10 - 2005-07: MIT

I started compiling my first photo albums in college, so I could share them with my family and friends back home in Mexico. I started writing my pages using Microsoft Front Page from Office XP, but I also had to resize all of my pictures manually using Adobe Photoshop. All pages were in Spanish only. It took a whole year, but eventually I gave up with that approach, and I started to plan a better setup.

I taught myself how to program in Java (using a friend's book) in the summer of '04. This was my very first programming experience, and it was a crucial step that lead to my scripts website, eventually. I also gave in to the idea that XML is the way to go for data.

During the MITES '04 summer program, fellow TA Jamy Drouillard introduced me to EXIF, the hidden extra information that digital camera pictures carry. It took me a long time to figure things out, but eventually (by 2005-04, possibly earlier) I made a Java program that could extract this info (using an external EXIF-processing library) and would print it out to XML files. I also figured out that XML files could be displayed in "newer" browsers as HTML as long as they came with XSLT stylesheets. This was the first incarnation of a program-based photoalbum creation. I can't remember, but I think I still used Photoshop to resize images using a "batch" tool, but it was still more intensive than it should have been.

2005-07 - 2006-11: MIT

I joined the Keating Lab in 2005-01 for undergraduate research in computational biology, and as a consequence, I became fluent in Perl and a primary Linux user (since then, my distribution of choice has been Fedora, since that's what the lab used). XML stylesheets weren't too flexible, so eventually I dediced to go with scripts all the way. The following fancy stuff was accompanied by a move to the MIT scripts server, out of necessity.

By this time I was able to build my entire website with Perl scripts, with automatic image resizing, EXIF extraction, and picture annotation in XML files. Documents in general gained "history" annotations and a lot of HTML code was automatically factored out, giving a very consistent style to my website without too much typing. Lastly, my scripts could display directory contents automatically by reading file headers, which carried titles, comments, and thumbnails.

I also became a purist, striving to have my scripts produce the most compliant Strict XHTML code, and using CSS stylesheets.

The automatic handling of multiple languages is what I consider the most important advantage of using scripts. Essentially, I added a "parsing" tag in my XML, which would direct the code to fish out the content for a single language (as requested) and ignore the rest. This way each file had all languages coded at once, in parallel, without having to synchronize structural changes across several pages (it would have been one page for each language in that case). The initial goal was to have everything in English and Spanish, which was easy, but I also used it as an excuse to practice French (a fair amount of my content has it too), to play around with patterns from Old Spanish (based primarily on facsimiles of the Cantar de Mio Cid), and experiment with Latin (which hasn't gone so well, not a single page is pure latin yet).

2007-02 - 2011-??: Princeton

The first problem I encountered at Princeton was hosting my website. While MIT offered GiBs of space, Princeton only gave me 500 MiB, not enough to contain what was then my entire website in pictures (eventually Princeton did increase disk quotas, but by then I solved my problem in a better way).

The solution? I figured out how to get my web scripts running on my Linux desktop, using the Apache web server software (with mod_perl, of course), and fortunately Princeton already had a DNS entry for my computer, so I had a site that anybody could access straight from my computer! It also solved the annoying problem of synchronizing my desktop data with the server (now it's trivial). My website was completely offline for a few months when MIT destroyed my account until I got the Princeton site working.

This period saw me move from XML to YAML as the format of my source files. XML was a little bit too much for me for modifying by hand, while YAML is much more clean and appealing to the eye. But the main reason for the switch was that in the end my XML was emulating Perl data structures, so parsing and printing them out was always awkward since XML isn't designed to do this specifically. YAML, on the other hand, is by definition a direct representation of the kind of data I worked with, and parsing and printing out became as trivial as a one-liner.

Aside from writing my photoalbums and directory headers in YAML, I even transformed my almost-regular HTML files (the main difference being the language parsing tag and header) to YAML as well, using straightforward rules. However, due to lack of time, a few untransformed XML files have lingered in my sistem up to 2010-01-09, making the code a bit more complex by having to support both XML and YAML formats (which eventually started to diverge in content).

This period also saw the growth of specialized databases that link up to my photoalbums, particularly people (simple entries) and locations (with automatic translations and a geographic hierarchy). Before this I only had a rudimentary dictionary to translate things within the Perl code. This greatly simplified annotation while keeping with my multi-lingual goal of the website, since each location would be translated once and thereafter only refered to by a key.

I also altered the code enough to introduce a new style for my wedding website (currently unlinked) to coexist with my regular website. In the future I plan to use this generalized framework to create other websites with different looks.

This is just a forwarding address that MIT offers to its alumni, so my website has a permanent address no matter where I move next. I got it working since I moved to Princeton.

Another alternative address for the exact same website I've been running at Princeton. I bought this domain name in 2009-09-07.