This week at kwartzlab’s regular Tuesday Open Night, I gave a talk about my photobooth project for the artist-in-residence gig that I’ve been cranking away on since the beginning of the year. The TL;DR is that kwartzlab is people. It’s not the building, nor the tools, nor even the projects. It’s the people.
Back in 2009 when we were creating kwartzlab, I thought it would be a good idea to have a set of reasonably consistent portraits of all the members up on the wall. Every single thing that happens at the lab happens because somebody put the work in. The *volunteer* work. I wanted to reflect back to the group the delightful collective capacity of which they were each a part. I wanted to amplify the pride in what we had built and evenly distribute the sense of belonging within the group. I wanted to help answer those universal questions: What are we all about? What are we doing here?
Like lots of makerly projects, my 2009 effort kicked off with a fast and cheap proof of concept and then languished on the bench as I pushed other meta-maker work on my stack. Fast-forward to 2015 and the storytelling that was once my necessary past-time is now my business and passion. Happily, through the lab’s most excellent artist-in-residence program, I was able to re-animate that project. And instead of just shooting portraits of members, I decided to build a rig so members could ultimately shoot their own portraits. A photobooth of sorts. This let me get my maker-freak on, provided another tool for the lab, and will allow the group to update/add their own portraits and equip them to experiment. It also satisfies my penchant for meta-photography. What’s the old saying? Teach a maker to fish…
Above is a collection of portraits of makers, mostly from Tuesday night. Some are members and some are visitors. What they have in common: they showed up.
Click through for a few more build pics…
Here’s the rig I ended up building in the front room of the lab. Design considerations where: cost, minimal impact on floor space, flexibility, ease of use. Not-design consideration: beauty.
[skip all the fabrication, photography, software tech stuff?]
I constructed the basic frame at home out of scrap lumber. I wanted the whole thing, including lights, to be self-contained so it could be easily moved in the future.
The camera mount. The metal bit is actually a saddle that you would fit over a 6×6 post when building a deck or fence. The 1×4” pine provides some dimensional stability.
I’m shooting portraits at a focal length of about 50mm (on a crop sensor) at a distance-to-subject of about 3 feet. Being in that close, I wanted to be able to keep the camera level to the floor to shoot the subject straight-on, but still accommodate people of different heights. I also wanted the camera moving in only one axis (up and down) in order to simplify the DIY workflow. A standard tripod offers way too many movement variables, so I built this slide upright pictured above. Andrew kindly routed two parallel quarter-inch slots in this 2×6 for me. The camera mount goes on the opposite side and is fixed to the slide by these three quarter-inch bolts. All three bolts float in the slots to keep the mount steady and pointed in the right direction. Brohemus welded me up a nice handwheel out of a long 1/4-20 nut and a couple of fender washers. I used some jam-nuts to attach it to a hunk of 1/4-20 threaded rod, which goes through the slot and into a T-nut in the camera mount. This allows the user to tighten the mount and fix the camera in place. A still camera solves half the problems of blurry photos.
To eliminate the need for users to change camera settings and to get better photos, I needed to control the light. Had to consider the photobooth would be used day or night. By day, the room is flooded with awesome sunlight from the large windows on two walls. By night, the room is quite dimly lit by typical ceiling-mount fluorescents that often produce light with a real green tinge. Agnes’ uncle donated these window blinds…
which I mounted, white side in, to the bulkhead above. Keeps the bad light out and reflects the good light inside. When not in use the blinds (theoretically) roll up out of the way and the entire floor space can be repurposed.
With a uniform backdrop and the bad light screened out, I started experimenting with adding light. Using what was on hand, I rigged up a couple of trouble lights from the heavy lab and strung them up on some 1.5” ABS pipe. This more or less held the lights on either side of the subjects face. The bulbs were run-of-the-mill compact fluorescents, though the label did note them to be “daylight” balanced at 5000K colour temperature. I considered lots of different options for lighting including cheap strobes, but those got knocked out by ease-of-use and maintainability (batteries!), and flexibility. If you have good light, then pretty much any camera can take a decent photograph.
Note the green tape marks on the floor. I messed around a fair bit to try and find the optimal distance to subject and zoom combination given the lens we had.
Here’s the lighting I ended up building. This rig pivots at the wall and achieves two goals. It can be swung up out of the way when not in use and it accommodates subjects of different height. I kept on with the ABS pipe as it would keep the wiring bundled up. The 1.5” pipe goes into a 1.5” to 3” reducer fitting, then into a short hunk of 3” pipe which is capped. On the cap, I’ve mounted a standard outdoor light fixture that you might have on the exterior wall of your house for security lighting. I liked this component because it was only $20 at Canadian Tire and it houses all the AC electrical connections. It has the added benefit of independently moveable sockets. I chopped up a couple of 50’ extension cords from Neil and my brother Dave so I could individually wire each bulb to a switch. Two banks of three switches to control all six lights. This gives the user some flexibility to experiment in the form of a familiar interface. Hitting a design stretch goal, these lights can be dropped down to table top level to light photography of maker projects, which was a wish list item I got from speaking with kwartzlab members.
James put me on to this awesome reddit thread that compared regular compact fluorescents to high-CRI (colour reflective index) bulbs for the purpose of photography. What might look like white light to our eye, may in fact be a bit spiky in one part of the spectrum, like say blue or green. This shows up in photographs as skin tones that look a bit grey. Through a combination of, I believe, multiple kinds of phosphor and magic, these high-CRI bulbs from ALZO spread their light energy across the spectrum a bit better. This gives better flesh tones in photos. So for about $8.50 per bulb on Amazon, we’re all hooked up with light that hits the design considerations.
For different light-height (rhyme!), a hunk of clothesline attached to the light stalk can be pulled and hooked over various screws. Again, it’s not pretty, but it’s really obvious how it works.
The camera is a Nikon D40, donated by James and Agnes, along with a kit lens. I ordered an AC power supply from China for $27 so we won’t have to worry about always charging up the battery. That should be here in another few weeks.
I locked the zoom ring on the lens with tape at 50mm, again to remove a variable that may bedevil users. Camera is set in Manual mode. Aperture at 5.6, ISO 200, shutter 1/100 of a second. And since we have control of the light, I preset the white balance. I messed around with available focus modes and chose focus-on-closest-object. For the in-camera JPG processing, I chose the Portrait preset. The camera is shooting tethered to an Ubuntu LTS 14.04-runnin’ laptop also donated by James.
Thank goodness Ben Brown is a tech ninja. I was struggling to remember all the linux’ish stuff I had forgotten and wrestling with wicked performance problems on the laptop. I asked Ben for help and in 6 minutes he figured out that the power management configuration on the laptop was whacked and clocking the CPU at the absolute minimum. He installed a driver, changed some settings and handed back a usable computer.
Now the last time I regularly did anything with linux was during the Chrétien administration. So all of the software side of this project involved a metric tonne of googling. I quickly settled on libgphoto2 for controlling the camera over USB. The Nikon D40 is supported for PTP (Picture Transfer Protocol) control of the camera (e.g. hey, take a photo!) as well for pulling the images down to the laptop over the wire. The D40 is not, however, supported for live-view over USB so you have to take the shots blindly. Not a show-stopper in this application.
This is where I descended into the free-software-isn’t-really-free purgatorial realm of technology. libgphoto2 is a library, so I needed some way to connect with it. A fast way for experimentation was the command-line interface gphoto2 which has roughly a thousand possible parameters. It looked like the simple command:
gphoto2 --capture-image-and-download
should take a photo and drop it in my current directory on the laptop. Fail. More googling/trying and I learned that Ubuntu helpfully auto-mounts the camera every time you plug it in, which prevents gphoto2 from doing its thing. So you need to remember to unmount in the dash task bar every time before getting down to business. There is no easy way that I could find to permanently disable this behaviour. I found some shell-script-fu that would find the camera and unmount it for me and incorporated that into this shell script to take a number of photos:
#!/bin/bash
### Shoot a fixed number of photos in a loop
#
# If camera is mounted we need to unmount it
export CAMERA_MOUNT_POINTS=`gvfs-mount -l | grep gphoto2 | sed 's/.*\(gphoto2.*\)$/\1/' | uniq`
for CAMERA_MOUNT_POINT in $CAMERA_MOUNT_POINTS
do
echo Unmounting mounted camera from $CAMERA_MOUNT_POINT.
gvfs-mount -u $CAMERA_MOUNT_POINT &
doneecho "Shooting 3 photos in 7 seconds"
sleep 7
play /usr/share/sounds/speech-dispatcher/test.wav
echo "Shooting now."for i in {1..3}
do
play /usr/share/sounds/speech-dispatcher/test.wav
gphoto2 --capture-image-and-download
echo "************* $i *************"
sleep 6
doneplay /usr/share/sounds/speech-dispatcher/test.wav
play /usr/share/sounds/speech-dispatcher/test.wav
play /usr/share/sounds/speech-dispatcher/test.wav
With photos being captured, I needed a near-realtime way to show them back to the user. In looking for a suitable image viewer, I ended up looking at about 10 apps, evaluating them for: speed, full-screen CLI parameter, print option in the context menu, and image shows up on the desired display (the LCD panel and *not* the laptop screen) and is correctly rotated. I loved gpicview for speed, but it just doesn’t have *any* command line parameters for automation from a shell script. I settled on eog (Eye of Gnome).
For the photobooth, I needed to display the most recent JPG image in the folder. When a new image arrives I need to detect that, tear down the currently displayed image, and display the new image. Quickly. Lots more googling led to this shell script which does just that.
#!/bin/bash
## watch a directory for new .JPG files, kill previously displayed ones, and show new
#
# show the most recent file to start
skill eog
export CURRENT_PHOTO_FILE=`ls -t /home/ubuntu/photobooth/*.JPG|head -n 1`
eog -g $CURRENT_PHOTO_FILE &while inotifywait --exclude tmp* --format \%f -e close_write /home/ubuntu/photobooth
do
skill eog
export CURRENT_PHOTO_FILE=`ls -t /home/ubuntu/photobooth/*.JPG|head -n 1`
eog -g $CURRENT_PHOTO_FILE &
done
You know, I considered writing an app to do all of this. I looked at Python hooks into libgphoto2. Then I looked at what was involved in writing a GUI for Python. Then I decided that building something functional was better than attempting something optimal given the schedule pressure. And at least half of kwartzlab is way better equipped to code this than I am.
Getting back to the art angle, I did what I do best which is to talk with people and get them engaged. There was no shortage of willing subjects and that’s one of the many things to love about kwartzlab and the maker movement overall. For each portrait “session”, we selected one of the three images captured and I sent that off to the black and white laser printer for rough and fast prints that could quickly be posted up on the wall. As the wall filled up, it really did start to support that sense of belonging and community that was the point of the whole project in the first place. My residency ends in a couple of weeks and there is more to do in terms of making the photobooth robustly easy for unassisted new users. I’m going to keep coming out to Tuesday Open Night to keep it going and encourage experimentation with the tool and to hang out more regularly with a helluva great bunch of talented, smart, and nice people.
Big thanks to Agnes Niewiadomski who runs the AIR program for kwartzlab while at the same time trying to earn a living in the creative domain just like me. And thanks to all the members for granting me access to tools in the lab that allowed me to build this project and something else, too. To future AIR’s, I strongly encourage you to come out to every Tuesday Open Night. I worked out a lot of design issues on the project during TON with Paul, James, Matt, Ben, Neil, Nathaniel, Agnes… I also earned, I think, the trust and support of the members.
At the corner of Charles and Kent, this is Kitchener and these are the people.
DW