Every time we look at Andru, it makes us smile. From us to you, a bit of Android robot joy in a micro-USB charger.
Grand St. - https://grandst.com/p/andru

Every time we look at Andru, it makes us smile. From us to you, a bit of Android robot joy in a micro-USB charger.


Grand St. - https://grandst.com/p/andru

Party Hacking: Grand St. Builds a Google+ Party Mode Photobooth

Parties are awesome. You bring together good people with good music and some booze and you (sometimes) have yourself an great time. But everyone knows that some parties are better than others, and there are definitely ways to turn a decent party into a great one. We challenged ourselves, twice, to create an amazing party using online/offline social technology. And so begins the story of Grand St.’s attempt at party hacking.


After brainstorming a bit on what we could do to up our party game, we decided a photobooth would be the way to go. We didn’t have an extra $3,000 lying around to rent a booth, so we decided to just do it better ourselves. Hack the system and what not.

But this wouldn’t just be a regular photobooth - it’s quite easy to find information on doing that. Our goal instead was to make something better, something that took advantage of the incredible social tools available today, and combine it with an old fashioned photo booth to provide a more interactive and engaging experience (translation: more awesomeness —> better party).


Let’s begin.

First, we had to construct a booth that took amazing photos.

Second, we needed a sharing mechanism. For this, we decided to use a very under-celebrated feature of Google+ called Party Mode, released last year at Google I/O 2012. Party Mode is a real gem — it gives everyone the ability to share photos with the entire party in real-time. It also allowed us to show a live stream of the incoming photos on screens throughout the apartment.

Third, we wanted to print strips of photos for people to take home.

Finally, speed. The shoot/upload/share/print sequence had to happen as quickly as possible.


It all comes down to the space you are working with, and the amount and quality of light available. Honestly, you could pull this off with the camera on your phone and a creative light source, but we wanted to be able to provide people with photos that would look amazing printed out or viewed later online.

We went with an open standing booth, though there’s much room for variation with backgrounds and setup. The camera sat on a tripod and was secured with twine to the AV unit it stood on, and the tripod legs were then wrapped with a black tablecloth. An outline on the floor made with bright blue painters tape showed people where to stand without getting in the way. To trigger the camera, we mounted a wireless RF button to the wall by the standing area so that the booth could be self-service.


We selected a lens (for our camera it was a 50mm prime) that provided enough field of view for around eight crammed people standing. Using a particularly fast lens isn’t needed or beneficial as you’ll likely need to stop down to ensure adequate depth of field, and the flash is providing most of the illumination anyway. f4 seemed to provide enough depth with a nice slight blur of subjects far out of the focal plane and a shutter speed of 1/125 second was decently fast enough to freeze people moving around in the frame. The flash is going to be stopping the motion anyway.


We were lucky to have a somewhat controlled environment where lighting wouldn’t vary much throughout the party. Everything should be set to full manual (shutter, aperture, focus, flash, iso, and white balance) if the environment allows for it. If lighting is going to vary, then the only auto-exposure technique that should be really considered would be the flash’s TTL mode with everything else set to manual to keep shots looking as consistent as possible.


An external flash is mandatory for a photo booth, and getting the right effect will take some trial and error. We found that the speedlight mounted on the camera and bounced off the white ceiling to provide nice soft lighting with minimal shadows. Just make sure you have lots of AA batteries available, as the flash is going to get quite a workout.


When in Party Mode, any picture that you take on Android or iPhone* gets automatically posted and shared to Google+. We wanted to make sure every photo we took was immediately accessible, but auto-sharing to Google+ posed a serious problem as Google+ Events does not have any publicly exposed APIs.  

We started to try to solve this by writing an Android program that pulled images from an FTP server and adding them to the Android photo gallery, but this wasn’t to our satisfaction.

In doing it though, we noticed that for each event that we created and uploaded an image to also created a Picasa album which has a very simple API. After some testing it then became apparent that these simple lines of code would upload images to a Google+ Event:

URL albumPostUrl = new URL(“https://picasaweb.google.com/data/feed/api/user/” + ConfigHolder.config.google.userId + “/albumid/” + pg.galleryId);

PhotoEntry myPhoto = new PhotoEntry();
myPhoto.setTitle(new PlainTextConstruct(” + ConfigHolder.config.google.imageTitle));
myPhoto.setDescription(new PlainTextConstruct(” + ConfigHolder.config.google.imageDescription));
myPhoto.setClient(” + ConfigHolder.config.google.clientName);

MediaFileSource myMedia = new MediaFileSource(pushToGoogle, “image/jpeg”);
PhotoEntry returnedPhoto = myService.insert(albumPostUrl, myPhoto);


Sweet, we could now automate the uploading of images to our Google+ Event.  

We then built a very simple program that simulated the experience of a photo booth. Here is the outline of how it works:

  1. Camera remote release would be pushed and would trigger 4 shots. The first shot was delayed 5 seconds, and the remaining three shots had 2 second delays.
  2. Jpegs (9MP Fine Quality) would be automatically sent from the camera to a computer directory via USB using a camera tethering application or via an Eye-Fi card.
  3. Every 10 seconds the programs check to see if there are 4 files in the directory
  4. If there are 4 files, grab and move them so we don’t pick them up on the next pass
  5. When the program grabs the 4 files, it would then:
    — Create a Square Photo for Uploading (2x2)
    — Create a Strip for Printing (4x1)
    — Add branding/backgrounds to each of these
    — Save the files
    — Upload Square (2x2) to Google+ Events
    — Print Strip (4x1)

The code is written in Groovy & Java using the Grails framework. The Grails framework, much like Ruby on Rails, is a quick and dirty way to get a lot done in a very short amount of time. We built a simple web interface to allow you to pick the album you want to upload to and a simple page that refreshes every 30 seconds and always shows the last finalized photobooth image.

For the New Year’s party we actually modified the code and added a second camera that was roaming around the party and by using the Eye-Fi, any picture taken at the party with that camera was uploaded to the event instantaneously.  

Here’s a link to the code, which we open-sourced: https://github.com/aaronhenshaw/photobooth-party


We then set about creating the printing experience. This was pretty straightforward - it took a bit of adjustment with the resolution and printer settings but we were able to rig it up with some gloss paper pre-cut into strips and a regular photo printer.


We then had 2 screens placed throughout the apartment that was rotating the real time feed of all the photos taken at the party (both photo booth and phone pics). It was great to be able to see what else was happening or who else was at the party at different times and places over the course of the night.


If you google “custom photobooth”, there are a ton of options for making photobooths, but nothing we found where photos could be shot, uploaded, shared, printed and downloaded in about a minute. We believed that the timing was just as important as picture quality or uploading to Google+, so we spent the time necessary to shave off seconds wherever we could.


Overall, we created and uploaded 212 photo booth images across the evening for our first party. The party started around 11 and it ended at 4 (We did this again for our new years party and we got even more pictures — 254 photo booth images across the evening). With over 5 hours of party, that’s a new set of photos every 90 seconds.

For us, the project was a huge success. People were amazed at how seamless everything worked and had a great time at the party.

…and the photos look amazing.






We open sourced the code and wrote this blog post so that others could do what we did. Here at Grand St. we are all about hacking together things to create better experiences and improve your life. Check out the code, change it, use it and most importantly, enjoy it. If you have any questions you can always reach us at hi@grandst.com.

Source: https://github.com/aaronhenshaw/photobooth-party



Nikon DSLR
50mm lens (normal)
16GB CF card
Eye-Fi Pro X2
RF wireless shutter release

PC - Quad Core i7, 12 GB RAM
Canon Photo Printer

DIYPhotobits.com Camera Control
Google+ Events
Picassa Web Albums
Code available at: https://github.com/aaronhenshaw/photobooth-party