Chris's Online Photo Album Software
I've had an interest in sharing digital photos since long before Flickr,
Picasa, SmugMug, or Facebook existed. In fact, even before digital cameras were popular,
I was scanning and organizing my photos digitally.
I guess I should have started a company, huh?
Version 0.5 (1998)
Anyway, my first coding in this area took place back in 1998. As a Christmas present for my family,
I scanned a bunch of my Dad's old 35mm slides and put them on a CD. I needed
a way to organize and navigate them.
So, I wrote some C code to read a folder structure and generate the navigation UI in HTML. This wasn't
for a web site, it was for a CD, but the browser was still a good delivery mechanism, and static HTML
The Christmas present was a big hit. You can view the results here.
Version 1.0 (circa 2002)
A few years later, after getting a digital camera, learning Java, getting into web application design, and buying
the domain tophermiller.com, I decided to make my web site an online photo album. So I took the same concept,
that a folder hierarchy is a good way to organize photos and a web browser is a good way to browse them, and
I built a java web app that did this dynamically.
Requirement #1: Easy re-organization.
The key requirement for me was that I wanted to organize and re-organize my collection with the simple interface of
folders in Windows Explorer (drag and drop baby!). Then I wanted the web site to update its navigation automatically based on this structure.
Requirement #2: No photo editing.
Another annoyance I wanted to eliminate was the need to resize every photo to create a thumbnail and a viewable
browser-sized image from the (often huge) original.
Requirement #3: Home hosting.
I didn't want to upload my photos somewhere every time I had some to share. These were the days when broadband connections
were still fairly slow (I had 1.5Mbps DSL). But even if not, uploading was still a time sink for which I didn't have the patience.
My web pages were generated from Java servlets that would read the file system and generate a hierarchical HTML navigation.
Inside each folder was an index of thumbnails, and clicking a thumbnail would take you to a 640x480px viewable image.
The thumbnails and viewables were generated with a batch process using a free tool called ImageMagick
I hosted the whole thing in Tomcat (v3.0, originally) and, thanks to my static IP I got with my internet service, I was able to point my domain at a server in my house.
So in 2002, tophermiller.com was born as my own personal photo sharing site, and I never had to upload or resize anything or write a single HTML page!
Version 1.5 (2003-2007)
The obsession was still with me, though, and I wanted it to do more, so over the years I added some more features:
- Comments. Users can supply their name and a comment on any photo or folder, just like Facebook now does for everything!
- Captcha. Spammers thought it might be lucrative to abuse my comments field, so I had to implement a captcha using SimpleCaptcha for Java.
- Email. I wanted to know who was using my site, so I coded it to e-mail me whenever someone posted a comment.
- Dynamic Resizing. I took my ImageMagick batch process and invoked it on-demand. So now when I deploy new photos, I don't have to run a script.
I just copy the originals into the web folder, and when the user navigates there they see a countdown meter while they wait for the thumbnails to be generated.
- Slide Show. In any folder, the user can choose "Slide Show" and sit back at watch as the browser cycles through the folder contents
- Videos. Since this was before YouTube, but after the day when digital cameras could shoot video, I also coded it to display links to download videos.
With this feature set, version 1.5 is the current live, full-featured version of my photo sharing software.
Version 2.0 (2010 + in progress)
So, I'm in the process of re-building my photo album software with these "web 2.0" technologies. (I also breifly started a Flex version, but gave it up when Flash started going out of style.)
Now I just embed photoalbum.js in any web page, give it the right parameters, and supply the back-end servlet to deliver a JSon data structure with all the
So far, all I have is the basic navigation and thumbnail generation functional. The rest of the feature set is still to come.
If you're interested in my source code, I'm happy to supply it "as is", just contact me
Someday, when I have oodles of free time, I'd like to take this idea public and share it with the world. The idea would be a service
you could install on your PC that is basically just a web server for the images and JSon data, with all the skinning being provided
by my site. Then, the world could share their photos on the web, right from their home PC, with no uploads, no resizing, and folder-based organization!
You wouldn't even need your own domain or a static IP, because this service could dynamically update the mothership with its dynamically changing IP adress,
and all content could be retrieved via the IP.
So there's my idea. Wanna pay me to write it? Contact me