NewHouse
This site is being constructed automatically through a combination of ASP.NET, a managed C++ dll, GDI+ (ImageMagick had the undesirable property of requiring static unmanaged variables and getting the managed C++ working quite right was not happening in addition to an insane number of string conversions--ImageMagick uses STL).
To manage the images a managed C++ dll was created to abstract away the process of creating previews, thumbnails, titles, descriptions, etc, to
make it easy if desired to transplant the functionality into other tools to manipulate images. The dll manages the hit counting, autogenerating the previews and thumbnails, supports rotations and flips (not implemented on the web yet), titles, descriptions, and retrieving image Exif information. Whenever you view a picture that hasn't had a thumbnail or preview generated, it will automatically generate it for you.
The thumbnail and preview generation is also done if the base image changes such as from a flip or rotation or from an external change. The data for the thumbnail and preview is using alternate filestreams with another stream used to control when to recreate the image, track hit counts, etc. The .NET Framework does not handle opening
alternate filestreams without resorting to performing a DllImport on CreateFile from kernel32.dll. Finding this undesirable, I made the dll managed so I could do this a little more transparently from C++ and pass the HttpResponse object from C# so the managed class could write the file directly to the stream (I couldn't pass the HttpResponse object to a COM implementation in a useful manner as the HttpResponse object does not implement an interface that supports either IUnknown or IDispatch).
Directory navigation was originally done in the web pages, however due to speed it was moved to the managed C++ dll (if you are looking at this from dial-up you probably don't care).
The C# ASP.NET dll is currently performing all of the directory checking, random other sets of navigational work etc. It pulls the list of valid images from the current directory and generates a simple xml document that is then munged with an xsl document found in the current directory where the images are being pulled. If it doesn't find the xsl document there it continues walking up the tree up to the root directory specified in a configuration xml (all pictures and directories browsed must be fully contained in that directory) until it finds one. If it doesn't find one it will throw poetry at you.
It also munges a description file (this is where this description is coming from) into the xml file that it feeds the xsl file. The thumbnail and preview page is generated from the same xsl currently. I will hopefully make the code and layout public soon so that other people can download this at their leisure and play with adding more features (such as full fledged stylesheets, backgrounds, and other cool formatting & layout possibilities.
The xsl file for the transformation of the page can be seen here. This file is not viewable as it ends in .config which is blocked by IIS itself.
Future work to do:
Add (secure) pages to modify images (titles, descriptions, rotate, flip, etc)
Add support for movie thumbs etc using DirectX
Make the layouts prettier and have more of them
Make the source available on the web
Figure out some way to effectively incorporate user feedback
If the page is taking some time to load, it is probably because it is generating all of the thumbnail & preview images. Subsequent loads are dramatically faster.