I wanted to publish to the web my collection of pictures from Brazil, and I wanted to do it in a way that looked good; however, I didn't have a lot of time to invest in this project. A few interesting web development technologies came together to make it possible to build BrazilPictures.net in a very short period of time.
The main reason this project was viable was that Google does such a good job of opening up their web services. Using the Picasa Web Albums Data API offered several important benefits, as I describe below. Also contributing for a rapid development of the web site, which took around 40 hours over a period of a couple of weeks, were Ajax, DOM, DHTML, and a little bit of ASP.
This is the basic architecture of the BrazilPictures.net web site:
Unlike Flickr and other similar sites, Picasa is not just a web site; it is also an excellent photo organization and editing desktop application. I didn't have to write any administrator-level functionality to organize the photos. The tools are already there that let me upload or remove pictures, add or edit keywords and captions, etc. Even the thumbnail images are created automatically for me.
From a file hosting point of view, it's good to be able to rely on Google's storage space and bandwidth. The bandwidth cost of a traditional picture web site, if it gets a reasonable number of visits, quickly gets expensive. It's amazing how much Google offers for free: storage space, bandwidth, web site, desktop application, XML data, feed API... (Furthermore, not only does Google offer the file hosting of pictures for free, but, in my experience, it does it in a way that is more reliable than your typical web hosting company does.)
One last advantage of going with Picasa, compared to doing everything on my own, is that it also offers the Flash application for the slideshow.
A brief way of explaining why AJAX is so beneficial to the architecture of a web site is that it means the end of scripting client behavior on the server. Client behavior, even if it depends on remote data, should be scripted for the client agent, not for the web server. That, in my opinion, is what has been wrong from the beggining with languages such as ASP, ASP.NET, PHP, etc.
For most cases, an AJAX architecture requires the direct use of XMLHttpRequest. For access to a feed, such as Picasa Web Albums Data API, it is easier to use the Google AJAX Feed API. There are a couple things that are not perfect with XMLHttpRequest. The cross-domain limitation, intended for improving security, complicates things slightly. Additionality, implementation of the XMLHttpRequest interface varies from browser to browser.
I was initially using a web proxy for the access to the XML, but now, with the use of the Google AJAX Feed API, the site loads much faster. (The web proxy had been implemented through an AspHTTP.Conn object.)
The site uses a bit of ASP in the creation of basic page template and to share common HTML (the header of the page) between the few pages in this site.
I live in the United States, but I have family and friends in Brazil, and I visit the country almost every year. These are photos from my trips. I haven't done any photography assignments or anything; these are just vacation pics.
Check also the 360-degree panoramas on my personal web site.