subservient programmer
01110011 01110101 01100010 01110011 01100101 01110010 01110110 01101001 01100101 01101110 01110100 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01101101 01100101 01110010 00100000 01110011 01110101 01100010 01110011 01100101 01110010 01110110 01101001 01100101 01101110 01110100 00100000 01110000 01110010 01101111 01100111 01110010 01100001 01101101 01101101 01100101 01110010

Filming the Subservient Programmer

So you’re interested in creating a “subservient something” of your own? It isn’t too difficult as long as you dedicate ample time for planning your project. Our development team at 352 Media Group ran in to several interesting obstacles along the way in creating the Subservient Programmer. Now you can learn from our experience to create a great application of your own!


Creating the Set


Keeping items hidden away in drawers makes filming easier.

The set is the most important part of the planning for a subservient project. Every inch of space visible by the camera needs to be cataloged for consistency throughout filming from the position of the actors to the buttons on their shirts. This wasn’t filmed on a professional soundstage, but rather in an office using a standard camcorder and everyday items anyone can replicate. Remember, we were going for a webcam look, so better equipment didn’t equal better results. After trying out several options, here are some of the lessons we learned.

Find a comfortable reset position. At the end of each action, the actor will need to return to the starting position to ensure a smooth flow between scenes. If you are standing, mark a spot on the floor and find a spot on the wall to look at. In the case of Subservient Programmer, there were few more obstacles like the rolling chair at the desk. Not only did the chair need to be as close to the starting position as possible, but the wheels needed to be lined up the same in every shot. To do this, the actor felt the position of one of the wheels between his feet at the end of every shot to ensure its location was spot on. We also locked the chair’s recline and height settings to avoid any mishaps.

Setting up a television connected to the camera will help alleviate many consistency concerns. During filming, one person made sure the actor returned to the mark each time a command ended by marking the spot on the television. Calling out the mark was not only helpful for the actor, but also for the editor to know when to cut each scene. If you do use a TV, make sure the camera is directly above it so it doesn’t appear the actor is looking away.

Despite these measures, there were still uniformity issues during the filming for the Subservient Programmer. You’ll notice the Channel9 Guy teetering atop the flat panel monitor. No one noticed he had fallen, and several scenes were rerecorded after that discovery was made.


Notice the tape hidden on either side of Channel9 Guy.



Foiling the windows keeps out any uncontrollable light.

Know where everything is. Once you’ve completed the set design, take a picture of every item. A simple trick we used was to mark every single item with clear tape. That way when an item was used in a scene, it could be placed back to its exact position after the take. Since the computer’s mouse was touched in every scene, we used double-sided tape underneath it. That way the actor could feel the tape catch and knew he was back in the right position. Remember that anything that is moved during a scene needs to be replaced before the cut. That is why odd shaped objects should be put away in drawers, or in the case of the Subservient Programmer, the refrigerator.

Filming took several days for this project, which brought on some interesting complications. For example, the fruit resting on the fridge didn’t look as fresh after a few days. Replacement fruit needed to be the same size and color as the originals. The fruit didn’t smell nearly as bad as the actor’s clothing, which had to be worn each day of filming!

Lighting was also a crucial issue in the filming process. Scenes may be filmed on separate days but still need to transition seamlessly. First, we foiled the room’s windows to block the natural light. Next, we setup several floor lamps designed to avoid shadows from the actor and glare on the camera. Just like everything else in the room, the light positions were marked on the floor using tape.


Simple floor lamps are more than adequate for a low-cost set.


Creating the “Script” and Filming


Numbered tape ensures consistent light positions.

This is the fun part. After all the setup, you can finally get to filming. But before you hit record, make an extensive list of the actions you plan to film. Trying to think of them as you go is more difficult. For subservient programmer, we categorized actions into different topics; Basic actions (stand, jump, etc.), actions that required props, actions that required people, computer related commands, and commands that would require rendering post production. That way, we knew everything we would need along the way and had all the items and actors ready to go. Make sure you also film a few different versions of the “I don’t know” clip that you can use for keywords you don’t have an action for.

One trick is to setup as much of the room as you can first. Then, look at the set as a user would. If there is a phone, you need to anticipate the user will type in a command relating to it. Make sure every prop has an action associated with it.

The keyword list requires additional attention after filming. Some clips could be used for multiple, and in some cases very different keywords. For example, asking the subservient programmer to play basketball or to take out the trash loads the same clip of him wadding up paper and shooting it in to the wastebasket. Look back at all of the clips and consider alternate uses to beef up your command list. For common commands, we found it a good idea to film multiple responses that can later be randomized to keep things fresh.


A simple reboot wouldn’t fix this computer after filming.


Editing and Compression Tips

When the fun part is over, it’s time to take the raw video and get it in to a good format for the Web. Unfortunately, thereis more to it than just cutting the video segments in to individual files. You will need to consider compression and frame rates, filters, post-production animations, and timing issues.

When all was said and done, we had 4 tapes worth of video. As we started separating the segments, we found that the color balance was slightly different from tape to tape. This resulted from a combination of a few factors. Standard light bulbs aren’t 100% consistent over time in terms of light output, ordinary camcorders aren’t great at holding a color balance, and the light in the hallway off camera was not always off. We used a basic color filter to get the levels as close to consistent as possible. If you pay close attention, you can still see the variations between certain clips.

The next step once the segments are cut is to create a base loop. This is the clip that is playing when you first come to the site, as well as in between the commands. On the Subservient Programmer, it is only about a 10 second movie with a nearly seamless loop. We were then faced with the problem of a potentially jumpy cut to the command movies. There will always be slight inconsistencies no matter how hard you try to get back to the reset position. We came up with a solution to avoid the jumpy cuts seen in other subservient sites. After a command is entered and buffered, the loop actually fades in to the clip ever so slightly. This makes the transition much smoother. This fade was inserted at the beginning and end of each video segment.

Another option is to use the jumpiness of a webcam-style video to your advantage. If you reduce the frame rate even lower than 15fps, the uneven transitions will likely be overlooked by the user.

After the segments were cut, we added any additional animation. For example, the “MSN” command on Subservient Programmer features a butterfly coming out of the computer screen. This was inserted using Adobe Premier.

With all the videos edited, it was time to make the final result appear more like a webcam. We achieved this by reducing the frame rate to 15 frames per second. Then, we used Windows Media Encoder to convert the files to .wmv. This also allowed us to set a proper compression rate for streaming over the Web.

At that point, each video was assigned a unique ID number. We then created an XML file that referenced each video and the associated keywords as formatted below:


Props were strewn across the set at the end of the process. Notice the television which was hooked up to the camera so the actor could make sure he was always in frame.
<clip id ="1" file ="wave.wmv">
    <keyword>wave</keyword>
    <keyword>hi</keyword>
    <keyword>hello</keyword>
    <keyword>bye</keyword>
    <keyword>goodbye</keyword>
    <keyword>ttyl</keyword>
</clip>
<clip id ="2" file ="headdown.wmv">
    <keyword>sleep</keyword>
    <keyword>good night</keyword>
    <keyword>tired</keyword>
    <keyword>nap</keyword>
    <keyword>dream</keyword>
    <keyword>bed</keyword>
    <keyword>pillow</keyword>
    <keyword>snooze</keyword>
    <keyword>hibernate</keyword>
</clip>

From there it was just a matter of integrating the Click Once application, and the project was complete! By tracking the commands users give the programmer, we’re able to uncover new ideas we might have missed the first time around. Keeping the studio setup allows us to easily add more videos in the future.

Watch the behind-the-scenes videos and outtakes!

Because chickens can't code.
Home | How To Create Your Own Subservience | Forward to a Friend