Mon, 28 Mar 2005

Photographing Teapots

— SjG @ 9:36 pm

After trying a lot of different approaches, I am now getting close to the results I want when photographing teapots. I figured it would be worthwhile to share my system in the hopes that it’s helpful to someone else, and with the idea I might get some suggestions from others.

First, the goals:

  • A clean image that shows detail of the piece.
  • An image that’s reasonably accurate in color reproduction.
  • An image that gives a little drama to the piece, rather than a cold, clinical look.

The Lighting Equipment:
I’ve tried several approaches. The one that I find best (so far) is not the cheapest approach. It involves about $300 in lighting equipment, not including the cost of any photographic gear.

Teapot Photo Stage
(click for bigger view)

I started with a kit from Table Top Studios. It included a 30″ light tent and a two-light set. I bought a graduated backdrop from another photographic supply house, which I needed to trim to size — Table Top Studios now sells a custom sized backdrop which seems to be ideal. One other word of praise for Table Top — I was facing a deadline, when one of the bulbs burned out. They were extremely helpful and overnighted me a free replacement, so I was able to make the deadline. That made me a loyal customer from here on out.

I set up the tent on a card table in the overstuffed Meier Quagg Library. I installed the nylon sweep, and used clothespins to fasten the graduated backdrop to it. Because the light tent has a lip, I raised the front portion of the sweep using the two-volume Oxford English Dictionary. The 1982 version is perfectly sized; you might want to use something else of the same general shape and size.

Before placing a teapot upon this stage, I metered off of an 18% gray card, oriented vertically. Then, I tried it with a teapot. I did a lot of experimentation, bracketing, spot-metering, etc, and, to my simultaneous delight and dismay, found that for both digital and film, Nikon’s Matrix Metering was spot on for the best exposure. To get the best images, I stopped down to f/11, which necessitated a fairly long exposure time (on the order of a quarter second), which, of course, makes a tripod all the more necessary.

To see how these results compare with my previous efforts, compare:
before to after (obviously, different teapots!)

Filed in:Ceramics, Photography

Fri, 18 Mar 2005

The Destruction of Da Derga’s Hostel

— SjG @ 5:09 pm

anonymous, circa. 1100, translated by Whitley Stokes, read as an e-book from BlackMask.com.

This is a curious old Irish tale, which seems to fall somewhere between standard historical epics and fairy tales. You can still hear quite a little of the oral tradition in its structure, but it also has some surprises. The beginning is very much fairy tale, about how Conaire becomes king, and how he learns of his personal taboos. This portion is mystical and fantastical. It is followed immediately by the tale of how the good king brings peace and prosperity and then, in one grand binge, violates all his taboos. The tale then takes a short detour, setting up the Reavers (the agents of destruction), and giving us their history and descriptions, with each being more terrifying and strange than the previous. After this short detour, we take a very long detour, where these agents of destruction have resolved to destroy Da Derga’s hostel (where the king is spending the night). They review and catalog each individual within the hostel, sparing no details, and their seer predicts how many of the reavers will be slain by each. This is by far the longest section of the tale, and seemed to have been a great opportunity for retellers to toss in their own creative additions. The actual destruction is something of an anticlimax.

Filed in:Books

Thu, 3 Mar 2005

Feedback Form Module, Newbie Software Engineering

— SjG @ 12:12 am

So I’ve just finished version 0.4 of a module for handling user feedback for CMS Made Simple. It allows users with administrator rights to create reasonably complex forms, with all the user interface objects that we’ve come to expect, and handle the submission of those forms in a variety of ways.

It’s been an interesting experience. Version 0.1 was your standard naive PHP implementation of an application within a framework. It was all one big script in one big file. It would do fairly simple database queries, stuff all the results into a big array, and then process array elements with big switch statements when it needed to customize output based upon UI object type.

Version 0.2 ported this basic functionality into an Object Oriented model. I found that there were a couple of complex decisions to make — should I handle the database storage and retrieval in an OO manner? And if I query a bunch of Input Objects from the database, how do I know what specific kind of object to instantiate since that data is contained in the database record? I guess the truly OO approach would be to use an OO database, or, next best approach, to have a separate table in the database for each kind of input object. But that’s not how I did it, probably to the detriment of my code (I instantiate a superclass object, then use the type details from the general object to create a new object which is the correct specific class.)

Still, this showed how a procedural approach could save a lot of database activity over an OO approach. The data model comprises forms, which contain one or more fields, which have one or more options. In the procedural approach, I denormalize the database so that fields contain the form id, and field options contain both the field id and the form id. I could then grab everything I needed for a form in three queries. With the OO model, the number of queries is proportional to the number of fields. What’s more, there’s been a massive proliferation in the number of files required. While I worry about the web server having to load and parse all that stuff each time, I should probably have more faith in the PHP engine and the OS caching. As a number of people have said to me, I’m not playing on a TRS-80 with 4k RAM anymore. But I still feel like I should be programming as if resources were seriously limited.

Similarly, when it came time (for version 0.4) to add localization of the code, it required some somewhat unpleasant contortions: each Input object needs to have access to a global collection of text strings (stored in a big hash) so they can present localized versions of messages. And I still need to go in and make sure that I’m actually handing around references rather than the copies that PHP likes to pass.

Maybe this is just the yammerings of someone who should understand software design better. Clearly, there were some bad decisions made in the code, although I could argue about how bad they really are.

Another aspect that took me by surprise was how I could test code and have it perform perfectly, while other users reported errors and bugs immediately. In this case, the main culprit was not inattentiveness (in testing, anyway), but my PHP configuration. If you allow output buffering, PHP gracefully handles output before the headers have been sent. Not so, if output buffering is disabled. So when my code would generate errors, my test configuration would blithely allow error codes to be output but then clobber that output with the expected page output. So while I thought output buffering was only involved in performance, it seems that for development, it should be disabled. That way, those bugs cannot be so easily overlooked.

Filed in:Open Source

Tue, 22 Feb 2005

Why Tritton NAS sucks

— SjG @ 5:15 pm

Gonna buy a Network Storage Device?

Here’s my recommendation: avoid Tritton’s NAS at pretty much all costs.

The device is flaky at best, even with the latest firmware. Samba-mounted connections don’t always get properly updated when there are filesystem changes. User permission settings seem to work based on the values you enter … but only when the moons of Jupiter are aligned.

Some people claim that they’ve been able to get the NFS implementation to work; I have failed from both Mac OS and from Linux. I don’t claim to be an NFS wizard, but I’ve been able to get it to work with many an operating system in the past. No dice here.

Tritton’s tech support is useless (but does contain priceless FAQs like “You may notice that folders begin to reproduce, disappear, or rename themselves on the storage device. This may also result in data loss that is unrecoverable,” with the solution to upgrade the firmware).

The device is only configurable through a web interface, which would be OK if they didn’t use a lot of un-necessary proprietary crap that prevents it from working with anything other than IE 5 or 6 on a Windows PC. Got a network with only Macs and Unix machines? Sorry, you’re just out of luck.

To make matters worse, they’re violating the GPL, and not releasing the source to their kernel modifications. So even if you want to fix the problems yourself, you can’t.

Getting a Snap appliance is certainly more expensive than a Tritton. But at least it’ll support RAID (and you should use raid. Really. Trust the sad voice of experience.). And Snap appliances actually work as advertised.

Sun, 20 Feb 2005

The Song of Roland

— SjG @ 2:27 pm

anonymous, circa. 1100, translated by John O’Hagan around 1885, read as an e-book from BlackMask.com.

There are three kinds of war reporting: the first, by journalists who are independent of any side in the conflict, who wander around in harm’s way to report what’s going on; the second, by so-called “embedded” reporters, who are essentially information officers of one of the sides in the conflict; and the third, by the historians and tale-tellers who were not present and who recast any events according to their own studies, prejudices, and opinions. The Song of Roland falls beyond this last sort, and forces us to concede a fourth type of war reporter, viz, the mythologist.

The Song of Roland is a medieval propaganda piece designed to show the nobility of dying for your monarch, especially if it involves taking a few hundred thousand infidels along with you. As is to be expected from a mythic retelling, the noble are absolutely noble, and the base are absolutely base. Interestingly, though, there is a certain nobility amongst the royalty of the infidel enemy (an “Emir of Balaguet” is honored with the statement “were he Christian, nobler baron none,” shortly before meeting his demise).

But the noble Frankish chavaliers are a pretty bad-ass bunch. When slaying this or that infidel knight, they were not content to merely hew them with swords or pierce them with lances, oh no, we are given almost pornographic gleeful descriptions of swords passing through helmets and heads, down through armor and chest, down through the saddle, and splitting the spines of the unfortunate steeds. In case we don’t pick up on the fact that the noble Frankish chevaliers are tough, we get this scene repeated with minor variations nearly a dozen times.

Reading this made me realize that popular narrative hasn’t changed a great deal in the last thousand years. Sure, there have been some localized shifts in values here and there, but The Song of Roland was not unlike the Rambo of its day. The good guys win because they’re Good (and God is on their side), and the bad guys, for the most part, are lance fodder. The spoils of victory have changed somewhat; while Rambo emerges unscathed from the conflict, anxious for his sequel, Roland’s victory is a noble death, the praise of his monarch, and guaranteed entrance to heaven.

It also pointed out how much religion has changed. Christianity seems far less concerned with the glory of martyrdom today, and shies away from the forced conversions for which The Song lauds Charlemagne. The ignorance of the beliefs of the “infidels” certainly remains (witness statements by various Evangelical leaders in the U.S.).

Filed in:Books