48 Hour Challenge with filmSPARK

A few weeks ago, during our monthly meeting, a member of The RTP “Let’s Make a Movie” Meetup group mentioned the SPARKcon Festival coming up in Raleigh.  SPARKcon has been going on for 6 years and last year they added a 48 Hour Film Challenge to their filmSPARK.  At first I was a little hesitant about doing the challenge for a few reasons.  One, the 48 Hour Film Project, cost over $100 to enter, so I didn’t know how much this would cost.  Second, it was very short notice, so I didn’t now how many people I could get to do the film.  And finally, I had to okay it with the wife, since she enjoys spending time with her husband on the weekends.  Well, I found out that the challenge was free, the wife was okay with me filming for the weekend and so I set out to get recruits from the group.  I was surprised to get more than a handful of people signed up, even if I had some communication issues.  Also, my main camera guy said he was available for the shooting day, which would make life easier for me.

On Friday Sept. 9th, I drove down to Mission Valley Cinemas to pick up my team packet.  The pickup time was between 8:00 and 9:00 pm.  This is a late starting time, but then it gives you more time on Sunday for editing.  I was the first person there and had a nice little conversation with the challenge hosts before picking packet number 7 for my team.  I headed on home to beat the crowd that was supposed to meet at my house for brainstorming and writing.

The were some more communication issues, but eventually everyone showed up and we started kicking around ideas.  The packet contained or film elements, which were an oven mitt as a prop and the line “God, I love being a turtle!”   Apparently this was from a Teenage Mutant Ninja Turtles movie, because each team had a different movie line, but the same prop.  This was different from the 48 Hour Film Project, where each team had the same prop, line of dialog and character, but drew different genres.  The challenge only had a few genres and we selected Action/Suspense/Thriller for ours.  The time limit for the challenge was also shorter, only 5 minutes.  When the brainstorming started, we had several ideas, but it seemed a little impossible to tell the entire story in the short amount of time.  Most of our ideas when down the path of The Tortoise and The Hare, due to the nature of the line.  We even pondered doing a car chase.  In the end, we decided to go with a simple story of a person suffering from agoraphobia attempting to make her way outside.  After coming up with the basics of the story, the writer and I hashed out what seemed to be a barely over 2 minute long movie.  I wasn’t very pleased with the length.

On Saturday morning, I woke up at my normal time and started prepping my house for the shoot.  I had to clean out my kitchen of stuff and set the stage.  The benefit of this was, after the movie was done, my kitchen was picked up and clean!  After everyone showed up, we gave the actors their lines to go over and I walked out the first shot with the camera guy.  After a few walk through shots, we put the actress in her spot and started filming.  The great thing is, we only did a couple of test shots and then we were off to the races with the rest of the shots.  A couple of our actors had to wait around until 2 pm to say their lines, but that gave them more time to rehearse. In fact, the other female actor was rehearsing while looking through the sliding glass door at the back of my house.  At first we thought she was trying to say something to us, but then realized she was just going over her lines.  After a while, it seemed a little creepy.

Since the camera guy has a bunch of equipment, we setup a spot light and put a mic on the main character, just in case the volume from the camera wasn’t good enough.  In the end, we used only the sound from the camera.  We completed filming before 4 pm and tried to wait for the sun to get in a better position for a particular through the window shot.  Unfortunately, it didn’t work out and the shot wasn’t used.  After downloading the files, the editor started to work on the shots.  I download the film as well, but not the audio. Thinking that I would wait and get it from the editor, I didn’t do any editing, instead I cleaned up the house and called the wife to let her know we were done for the evening.

On Sunday, the editor and writer came over and we started cutting everything together.  After getting the rough cut down to a almost final cut, I got a hold of my F/X guy and we headed over to his place to add special effects.  Well, he had computer issues the week before and the editor’s computer kept putting out glitchy versions.  After attempts to do this and attempts to do that, we loaded the entire footage on to the F/X guys computer and he put in the special effects.  We didn’t have time to adjust the color, but I thought it looked fine.  With about 20 minutes to spare, I headed back to Mission Valley to drop off the final product.

The most frustrating part of this was the fact that we finished filming early on Saturday and Sunday was spent waiting for files to load.   Lesson to be learned, downsize the footage before editing.  The play back of the video submitted seemed to skip and jitter.  However, when the F/X guy played it again later and uploaded it to YouTube, everything seemed fine.  So, I just put the thought aside that there was something wrong with the film and waited until the screening.

On Sunday Sept. 17 at Kings in downtown Raleigh, they showed the 14 entries of which 12 qualified for.  Some of the films seemed much longer than 5 minutes, some had stories that didn’t seem to go anywhere and then there were some good films.  At most, I didn’t think we would win, but possibly be in the top of the group.  And that’s what happened.  A mockumentary about reality tv’s won the overall award, deserving so.   Our film, plus two others won honorable mentions.  I’m very proud of this film and I think it is my best film to date.  After a year, I think I’m getting a better at this movie stuff.

For your viewing pleasure : A Step Outside

Today is the day!

Well, today is the deadline for the Free BlackBerry Playbook offer.  This is the third and final deadline for getting applications submitted, and I hope that I can get mine in.  I’ve registered and sent identification information, so now I am waiting for a response back in order to actually upload my application to the App World. I have until midnight, so hopefully they’ll get the reply back to me and things will get done.

I have been trying to create an application since around Christmas.  I’ve had a few setbacks.  For one, I didn’t have a paid version of the development tool (Adobe Flex Builder), so I tried to make an application using he evaluation version.  Then BlackBerry updated their IDE for the PlayBook and things just crashed after that.  When the first deadline started approaching, I gave up trying to make a simple timer application and started working on a Meetup application to replace my initial Meetup Organizer Tool.   But, when I couldn’t get the OAuth to work with the PlayBook simulator, among other things, I decided to make a simpler search tool.  But, before I could finish working on that, my trial offer expired.  Luckily, my lovely wife took a course at Wake Technical College and we bought some Adobe software for the student price.  However, that still took some time to get and reload everything.

Finally, I have everything working and the deadline is close, so I finished up what I had and began the submission process.  Part of the submission process requires registration as a vendor.  Apparently this is something that should have been done much earlier, because it doesn’ t require an immediate upload, but it does require validation that you are a business or a real person.  So, last night I did the registration step 1 and today I got the first reply back asking for the verification, which I replied with immediately.   Now, I am waiting for the confirmation that I am now registered so I can upload the application.

To be honest, my search application is extremely basic, but I plan on updating it once I get the initial one uploaded to the App World.  I will also create a page for the application for the DeanLogic site as well.  After I get the Search Meetup application finished, then I’ll start working on the Organizer and Member Tools.  The good news is, Meetup is continually updating the API and adding new features, some of which are not available through the Meetup site.

Of course, work on these applications have to happen between married life and the movie making hobby.

The Meetup Organizer Tool

Meetup is a website that provides a tool for groups to organize community events.

“Meetup is the world’s largest network of local groups. Meetup makes it easy for anyone to organize a local group or find one of the thousands already meeting up face-to-face. More than 2,000 groups get together in local communities each day, each one with the goal of improving themselves or their communities.” – About Meetup

Meetup Organizer ToolI have been a member of Meetup since 2005 and have been running a The Raleigh-Durham Singles Meetup since 2006. From the beginning of being an Organizer, I have suggested many enhancements to Meetup and they have implemented a lot of them. However, as each group on Meetup is different, each Organizer runs their group differently and needs different tools to help run the group. Meetup started working on an API in 2008 to provide tech savvy Organizers a method of getting information from Meetup and creating tools that would help people use Meetup outside of the website. This is the tool that I created focused on my needs as an Organizer. I am hoping that other Organizers will find it useful and I plan to add more functionality as Meetup ads more functionality to the Meetup API.

  • Getting Started
  • Tool Functions
    • Groups – listing of user’s groups and basic group information
    • Members – listing and downloading of group members and mapping of member locations
    • Events – listing of group events, mapping of group events, event details, event rsvps, and PDF version of RSVP list
  • FAQs
  • Credits

If you are testing this for me, click here.
[contact-form 1 "Contact form 1"]

If the Meetup Organizer Tool was useful for you, please consider giving a donation to help further development.

Flex RichTextEditor, AS3 and RegEx annoyances

In my never ending desire to learn something new every day, RegEx (Regular Expression) has brought me my “ah ha!” moment of the week.

As part of my Meetup Organizer Tool application, I am providing an editable area for the Event description. This will allow the Organizer to view the current description and make some changes using a WYSIWYG tool. Flex provides the RichTextEditor control for easily creating rich text and converting it to HTML. Meetup provides a limited set of BBCode on their site for creating Event descriptions. In fact, the description area is even more limited than the Message Board area. The first thing I had to do with the RichTextEditor is only provide the functionality allowed on Meetup. This wasn’t too difficult to do, I just removed all the button controls and added the ones I needed. I even limited the number of colors to just those used by Meetup. appscreenshot_eventeditor
Plus, I added a new button for clipping the BBCode to the user’s clip board in order to paste it into Meetup Event edit page. The biggest issue with this was formatting the text from the Meetup BBCode into HTML and then turning it back into BBCode when it was clipped.

If you have ever worked with RegEx, you know that it is a pain in the behind. To most people it just looks like a bunch of slashes and characters without any particular meaning. Trying to test RegEx in your code almost makes it seem like there isn’t any rhyme or reason as to why it works. And, to make things worse, ActionScript 3 has a slightly different RegEx syntax.

Instead of just plopping out a bunch of RegEx into a replace string, I figured it would be easier to the String method. String by declaring variables for the pattern and the returnString. I passed in either the HTML or BBCode to the returnString and started working on patterns from there.

var pattern:RegExp;
var returnString:String;

For each tag, I created a new RegExp pattern and then passed that into the replace method for the String. In this example, I am finding all the bold tags and replacing them with the BBCode version. As you can see, the RegExp starts with a \ instead of a /. And then you need to make sure the special characters (,/) don’t cause issues with the search. I found most of the RegEx in a forum somewhere, but in the end, I had to change those codes in order for it to work with AS3.

// format the bold tags: <b></b>
// becomes: [b][/b]
pattern = new RegExp("\\<b\>\(.+?)\\<\\/b\>", regExFlags);
returnString = returnString.replace(pattern, "[b]$1[/b]");

Here is the code for turning the BBCode back into HTML code.

// format the bold tags: [b][/b]
// becomes: <b></b>
pattern = new RegExp("\\[b\]\(.*?)\\[\\/b\]", regExFlags);
returnString = returnString.replace(pattern, "<b>$1</b>");

The issue I had the biggest problem with is the list format from the BBCode. A list item is represented as [*]. Which is all fine and dandy until you try to convert it using RegEx. The main issue is that the [ and the * and also the ] are all special characters that you have to cancel out in order your you to search on them. And, to top things off, the list item from the BBCode doesn’t have a closing [/*] tag, which also caused issues. Well, after tying to get it to work on multiple RegEx evaluators, I finally by chance figured it out.

// format the center tags: [*]List Item
// becomes: <li>List Item
pattern = new RegExp("\\[[*\]\]", regExFlags);
returnString = returnString.replace(pattern, "<li>");

If you look at the RegExp, you will see that I have two [ characters, where as in the previous example I didn't need an extra one. I also have another ] character to end the expression. The second [ character makes the * part of the search string. Honestly, it was just by accident that I figured that out. I'm sure there is some obvious text in the manual that points to this, but all I could find was that the \ character would cancel any special characters.

To make the fun continue, when the HTML is passed back during the clip board process, the RichTextEditor adds extra format tags and doesn't include a <ul> tag. Instead it just wraps each bullet point in <li></li> tags. Luckily, that is all that is needed when pasting the BBCode back into the Meetup Event editor on the site.

As I mentioned at the start, I set the Color Picker button to only use the colors that Meetup allows. Part of making this work was creating an array of color names (used by Meetup) and color Hex values (used by Flex).

// Color list used by Meetup
public static const DARKRED:String = "darkred";
public static const DARKRED_VALUE:String 	= "0x8B0000";
public static const FIREBRICK:String = "firebrick";
public static const FIREBRICK_VALUE:String	= "0xB22222";
public static const CRIMSON:String = "crimson";
public static const CRIMSON_VALUE:String	= "0xDC143C";
public static const RED:String = "red";
public static const RED_VALUE:String = "0xFF0000";
public static const TOMATO:String = "tomato";
public static const TOMATO_VALUE:String = "0xFF6347";

[Bindable]
public static var colorArray:ArrayCollection = new ArrayCollection([
 {label:MeetupUtils.BLACK, color:MeetupUtils.BLACK_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.BLACK_VALUE)},
 {label:MeetupUtils.WHITE, color:MeetupUtils.WHITEVALUE, hex:MeetupUtils.flashToHex(MeetupUtils.WHITEVALUE)},
 {label:MeetupUtils.DARKRED, color:MeetupUtils.DARKRED_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.DARKRED_VALUE)},
 {label:MeetupUtils.FIREBRICK, color:MeetupUtils.FIREBRICK_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.FIREBRICK_VALUE)},
 {label:MeetupUtils.CRIMSON, color:MeetupUtils.CRIMSON_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.CRIMSON_VALUE)},
 {label:MeetupUtils.RED, color:MeetupUtils.RED_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.RED_VALUE)},
 {label:MeetupUtils.TOMATO, color:MeetupUtils.TOMATO_VALUE, hex:MeetupUtils.flashToHex(MeetupUtils.TOMATO_VALUE)});

I created a little function that works inside of the replace method. All I do is use the Filter method on an Array and find either the color name or Hex value and return the other. All I have to do with the RegEx is find the color value, which is passed into the function with the string value between the color tags. If I ever need to add more colors, I just add them to the constants and the array.

pattern = new RegExp("\\<FONT COLOR=\"(.+?)\\\"\>(.*?)\\</FONT\>", regExFlags);
returnString = returnString.replace(pattern, replaceHexPattern);