The Light Farm


I began writing a "second edition" to the website at the beginning of 2014. At that time the potential of handmade silver gelatin was greater than anyone had predicted less than a decade earlier. In 2004, a decent dry plate was a lofty goal and Terry Holsinger, writing for the "Unblinking Eye" website, and Mark Osterman at George Eastman House (GEH — renamed Eastman Museum) were out in front of the pack. In 2006, Ron Mowrey, a retired Kodak emulsion engineer, began giving workshops on making a simple contact printing paper. I took Ron's first class at the Photographers' Formulary in Montana. I started my own research and began blogging about it as soon as I got back home. In 2008, I started publishing The Light Farm, joined by a number of excellent contributors. A few years later GEH workshops began teaching elementary silver gelatin emulsions. They were very well received, as were the Light Farm web tutorials.

Photographers using their own handmade emulsions are growing in number. This summer (2017) Eastman Museum Workshops is adding a Kodabromide-type paper workshop — the same paper essentially as in volume 1 of the Light Farm book series, The Basics. The Light Farm information is getting out into the world. My 'AmBr' emulsion recipe is popping up by name all over the place. Although there is almost never an attribution, I am nevertheless very gratified by its success.

Soon after I began the revised 2nd edition of the Light Farm website in 2014, a random news article made me realize that electronic information is not guaranteed to survive a crash of the web, whatever the reason may be for this hypothetical crash. Nothing is guaranteed, of course, but I'm old enough to believe that there is a certain security in ink on paper. That one item of news, which took seconds to read, led to a book project almost two years in the writing.

With Volume 1 of the book series written it's been a puzzle to me how to proceed. Volume 2, and perhaps a third volume, still needs to be written and the website update needs to be finished. The solution is a compromise. The information in 'The Light Farm, Volume 1, The Basics' will remain accessable through the free Blurb preview (or book purchase). I consider it part of the website and necessary background information for using Volume 2 successfully. 'The Light Farm, Volume 2, Beyond Basics' will be here on the website. I will be adding a chapter at a time as quickly as possible. I believe the Light Farm is establishing a strong foundation from which photographers can learn the craft. That is certainly my goal.

Make no mistake. The hurdles to getting started are considerable. The first lift is a heavy one. It's getting heavier as fewer and fewer people have darkrooms at home, or are even conversant with traditional chemical photography. A generation-plus has gone by since digital photography went mainstream. Long story short: there's a learning curve and a certain amount of infrastructure that must be established.

I don't rejoice in the hurdles, but neither do I worry overmuch about them. I've learned to relax quite a bit on that front. Almost nothing in the field of traditional photography is easier or less expensive than making a four-ingredient silver gelatin printing paper or dry plate. I believe it's really is a simple matter of "where there's a will, there's a way". Will comes from somewhere inside. That's up to the individual. The mission of The Light Farm is to help with The Way.

Denise Ross
January 2017.

--> -->
<type 'exceptions.TypeError'>
Python 2.7.3: /usr/bin/python
Fri Apr 26 06:56:49 2019

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /home/0/9/3/2029/2029/public_html/cgi-bin/ in ()
    376 #Main entry point when run by cgi.
=>  377 GenHtmlFromFile()
GenHtmlFromFile = <function GenHtmlFromFile>
 /home/0/9/3/2029/2029/public_html/cgi-bin/ in GenHtmlFromFile()
     64     # Parse the page file and generate the html for this page.
=>   65     htmlContent()
     66     return
global htmlContent = <function htmlContent>
 /home/0/9/3/2029/2029/public_html/cgi-bin/ in htmlContent()
    101     # Emit the entire html body, using the designated title and subtitle.
=>  102     htmlBody(title, subtitle)
global htmlBody = <function htmlBody>, title = 'Introduction', subtitle = ''
 /home/0/9/3/2029/2029/public_html/cgi-bin/ in htmlBody(title='Introduction', subtitle='')
    157     #Emit the <td> element for the main body.
=>  158     htmlMainBody()
    160     print """\
global htmlMainBody = <function htmlMainBody>
 /home/0/9/3/2029/2029/public_html/cgi-bin/ in htmlMainBody()
    266 """
    267     if generatePrevNext:
=>  268         htmlPrevNext()
    270     print """\
global htmlPrevNext = <function htmlPrevNext>
 /home/0/9/3/2029/2029/public_html/cgi-bin/ in htmlPrevNext()
    319         # Emit the home and next chapter links
    320         print '    <tr><td class="text-comicgrey text-center">'
=>  321         print '      <a href="%s" title="Go to home page">< %s&nbsp;&nbsp;&nbsp;</a><a href="' + pythonfile + '?chapter=%s" title="Go to next page">&nbsp;&nbsp;&nbsp;%s ></a>' % (previousChapterLocation, previousChapterName, nextChapterLocation, nextChapterName)
    322         print '    </td></tr>'
    323       else:
global pythonfile = '', previousChapterLocation = '', previousChapterName = 'Home', nextChapterLocation = u'Chapter2', nextChapterName = u'Vocabulary'

<type 'exceptions.TypeError'>: not all arguments converted during string formatting
      args = ('not all arguments converted during string formatting',)
      message = 'not all arguments converted during string formatting'