by David LeMieux
Or How I lured children to my car with candy then took their pictures.
Every year my church congregation holds a Halloween activity called "Trunk or Treat." The premise is simple, it is like Trick-or-Treating except it is done in a parking lot from car trunk to car trunk. It is a fun activity with games, candy, and some friendly competition.
Last year I totally spaced the event and with less than half an hour before starting I whipped up an "award winning" design. We won the "Cutest Car" prize. This was satisfying, but part of me wondered if I could win "Most Awesome Car" or "Super Deluxe Ninja Car of Extreme Skill and Coolness" (I don't even know if that is a real category, but it should be). Anyway, I more or less forgot about it until this last September, 2009. That is when I came up with a plan.
Look at all that technology!
I was working on PictureNest at the time as a fun side project when it struck me that it would be super awesome to make a real photo booth. Around that same time people at church began to talk about the upcoming Trunk or Treat activity. Genius struck. I would make a real photo booth in the back of my car and crush the competition. No more "Cutest Car" for me. I was going to make a trunk so awesome that the Super Ninja category would be invented for my sake.
The Photo Application: This came easily. Mostly because I took what I had already made for PictureNest and turned it in to an AIR application. I added a few new features and tested it thoroughly for memory leaks and performance.
The Print Service: I wanted the user experience to be that when someone got their photos taken at the end the photos would print immediately and without having to confirm printing. AIR, unfortunately (and for good reason) does not allow this. My solution was to save the photos in a known directory then asynchronously read that folder and print whatever was inside of it. Not 100% fool-proof, but since I would be running it myself I could be sure that things were set up properly. I turned to Java for my printing needs. I wrote a handy Java print service (which only worked on Windows, more on that later) that would scan a given directory for images then print them to a chosen printer. It worked wonderfully. Again, I tested this service for memory leaks and performance over time and with high capacity.
The Computer: I had originally planned on using my work laptop to run everything. It is small, and would travel well. It would not, however, print. Apparently, and obviously I suppose, the print services aren't the same on Windows and OS X. I was developing on Windows but I figured that because I was using AIR and Java that moving to a new operating system would be cinch. I was mistaken. The AIR app worked perfectly, so props to Adobe. I didn't take the time to try and figure things out, and so I suppose the Java printing issues could have been worked out.
The Printer: My trusty nine-year-old Ink Jet worked like a charm. I used HP Photo Paper, cut to 3 by 8 inch strips.
The Booth aka Car: The back of my car, a hatchback, was big and roomy and perfect for a photo booth. I used a Gorilla Torch to light the backdrop. The backdrop itself was made of some bargain fabric from the local fabric store and a hat rack I rigged to hold the fabric like a projector screen. I used a folding camping chair for people to sit upon.
The Set Up
With all the parts planned out I had one major obstacle to overcome. If I was going to run a computer, monitor, web cam, and printer in the back of my car with lighting I was going to need power. I researched every conceivable battery/generator/car-adapter method I could think of. When it came down to it, though, unless I wanted to spend a ton of money on a probably noisy power generator I was going to have to plug my car in. But where? I searched the entire perimeter of the parking lot we were going to be in and eventually found one outlet. Just one power outlet! Luckily it was fairly close to a parking spot but it meant two things. First, I had to get to the spot early to make sure I could get it. Second, since I didn't have anything to test it with, I was going to put a whole lot of work in to something that might not even be able to turn on.
Claire helped me do the signage.
The day of the Trunk or Treat went so smoothly that I thought nothing could go wrong. I got home in time, I took the car to the church and got the perfect parking spot and I double and triple checked my supplies. I was ready. When it was party time, we walked over to the church building and had a generally fun time. Our kids were pretty cute (Tinker Bell and Peter Pan, in case you were wondering). Then I went out to the car to set things up.
I got to the car, opened up the trunk and got out the extension cord. I plugged it in to the equipment in the back and then rolled it out to the wall. I was three feet short. I almost started to cry. I had estimated that a 50 foot cord would do but apparently I needed 53 feet. Did I let three feet stop me? No. I was prepared to drive my car up on the curb if need be. That said, I had a bit of serendipity as I saw some other people taking down the haunted house portion of the party and I got to borrow another extension cord. I ended up with 47 feet too much.
Disaster averted, at least until I started to set up the backdrop and a crucial piece of hardware went missing. I wasn't going to be able to put up the backdrop but then I spotted the hardware underneath a neighboring car. After that I got everything set up and turned on the computer and started the program. Then I unplugged the keyboard and mouse and plugged in an external keypad I had bought to use as the starting mechanism. All you had to do was hit "ENTER" and away it went!
My proximity to the outlet was important for functionality, but one thing I hadn't counted on was that everyone with cool trunks would conspire against me and park on the opposite side of the parking lot. In theory, anywhere in the parking lot was game, but by some weird coincidence (or unspoken rule) everyone parked in one area. So no-one came by for a while until a group of more adventurous older kids came over. They were impressed. The first group left and then soon returned with even more of their friends. Then, as time went on and the word got out there was a line. Lots of people, and groups, wanted to get their pictures taken. Unfortunately my printer, stalwart as it is, was not very fast. So towards the end people were waiting as long as 10 minutes for their prints. This fact drove people away, I think. I ended up having 50 people use the booth though more might have done pictures if not for the long wait time. I tried to be upfront with people as best I could. I even encouraged leaving and coming back later to pick up your photo, but not very many people listened. A good crowd of people surrounded my car the rest of the night.
What the pictures looked like, mostly.
So, as I had hoped I was given an award. "Cutest Trunk" - can you believe it? The judges said they loved my trunk but didn't know what category to put it under and "most awesome" wasn't a category. (I don't know what the categories were, but I am imagining something like "spookiest" and "best candy")
Cutest Car? Again? COME ON!
I want to make the code for this available, but I am currently in the process of moving from Windows Vista to Windows 7 and have not yet reinstalled my development tools. Once I do that I will make the code available, but as you can see it has taken over a month to write this blog post about it, so lets see how long it will take me to get the code up.
I didn't get many pictures of the actual event, ironically. Nor of the final setup.