I started my working life as a computer programmer, and though it has been many years since I’ve done any programming professionally, I found it fairly easy to teach myself basic web programming techniques.

This site is built using a set of standard web technologies. At the core is PHP, a scripting language integrated with the Apache web server and specifically designed to generate, or create dynamic content within, HTML pages.

The layout and content of the image galleries are defined in data structures that PHP scripts interpret and translate into HTML pages. This design means that additions and changes to the galleries are a simple matter of maintaining data, and that reliability is high since PHP scripts generate all the linkages. (I must say I am not sure I would take this approach if building the site today, when it is so easy to publish HTML or Flash galleries directly out of Adobe Lightroom, or use one of numerous other products and services to create high quality image galleries. However, I invested the time to write the underlying code some years ago for an earlier version of the site, and it continues to work well for me.)

CSS is used to control all of the web typography, but old-style nested tables are still used for most of the page layout. If starting from scratch today I would build entirely with CSS, but much of the current site evolved from earlier versions created before browsers were sufficiently standards-compliant to support CSS positioning consistently.

With most of the application logic on the server side through PHP, the intent was that the use of JavaScript should be modest. This held true in earlier versions of the site, but the advent of modern mobile devices has made this design philosophy obsolete. The need to detect display resolution, the implementation of touch-swipe gestures on touchscreen devices, and other device-specific functionality have made client-side logic implemented through JavaScript an unfortunate requirement.

The increasing use of JavaScript on the site is based upon the jQuery library, which provides some of the image transition effects and is the platform for several of the additional JavaScript tools I employ: Matt Bryson’s TouchSwipe plugin is used to implement gestures on touchscreen devices, and Nathan Searles’ SlidesJS plugin is used for alternative slideshows on devices where Flash is not supported.

The approach for detecting and delivering high resolution content to Retina and other such displays is twofold and I am grateful to the writers of blog posts that provided the basis for both solutions: Ben Doran published an article in 2012 which outlined a jQuery-based solution for linking to alternative high-resolution images. I no longer find this article on the web, but the code I am using is, with small adaptation, a direct lift of the JavaScript he suggested. That approach does not work in all cases in my site design, and in these situations I instead use a cookie-based approach that is described in multiple places on the Internet. An article I found particularly useful and which is the direct basis for the code I employ was written by Drew Gourley at Oxide Design Co. As of this writing, the article remains on the web here.

The Flash slideshows and image wrappers are made using Dominey Design’s SlideshowPro, now obsolete but still working fine in its final implementation. The XML files that define content to SlideshowPro are generated dynamically by PHP scripts based on my own proprietary gallery data structures, so in practice I need to return to SlideshowPro only if a significantly different slideshow layout is required.

Sound recordings are hosted on SoundCloud, and SoundCloud’s Flash or HTML5-based widgets are used for the players embedded in my web pages.

Development is done on desktop and laptop Apple computers running Apache and PHP under Mac OS X. The PHP code and the HTML markup are hand-coded in BBEdit. The image JPG’s and the GIF’s are created in Adobe Photoshop and/or Lightroom.

From a design standpoint, this is the third major version of Kin Corning Photography. I have tried to make the site’s structure straightforward, to keep the navigation buttons in view and in the same position as you page through the galleries, and to size the images as large as possible while avoiding scrolling on most modern monitor resolutions (except the very smallest laptop computers). With this latest implementation, I have also tried to make the site as friendly as possible to tablets, phones, and other such devices without having to revert to a trimmed-down alternative mobile version.

The site has been tested with a large number of browsers, but no doubt less widely than a professionally-made site would be tested. Things have been further complicated by the wide range of Internet-enabled mobile devices, only a few of which are available to me for testing. I therefore appreciate reports of any bugs in the site using particular browsers or devices (and any feedback about the site generally).