Sep 19 2013

Fountain v1.0.1

Now that we’ve got our big Highland update out the door it’s time to give some attention to Fountain, our open source screenplay markup language. I’ve updated Fountain on Github to version 1.0.1. This sounds like a minor update, but there’s a lot here.

Dual Platform Support

Many people have asked for it, and here it is: Fountain now works for iOS.

Thanks to TextKit in iOS 7 the only thing that needed to change was references to NSFont. If you need Fountain to support < iOS 7, you just need to change FNPaginator’s height calculation method.

Tests, Tests, and More Tests

Thanks to wonderful work by John and Stu, Fountain is backed by a very nice spec, but unfortunately the Fountain source code wasn’t actually built against it1.

Fountain now has a complete set of tests that should cover the entirety of the Fountain spec. This will help speed up improvements to Fountain, and should make sure we don’t have any regressions.

One problem, not all tests pass with the current Fountain parser. Which brings me to the next point…

Future Work

Fountain needs a lot of work. First, FastFountainParser needs a fairly significant rewrite, not only to pass all the Fountain tests, but also to more modular and easier to manage.

Second, the Fountain API needs a significant cleanup. In hindsight, a lot of the choices I made when I first put it together turned out to be less than stellar. The API can definitely be cleaned up and made easier to work with.

Finally, we need a consistent naming convention that conforms to Apple’s naming guidelines. This would see FNScript change to FTNScript, and FastFountainParser become FTNParser. This would be a backwards incompatible change, but I think it will be in everyone’s long-term best interests.

I hope to get to these changes in the next few weeks. Stay tuned!

  1. Fountain started life as two separate specs – Fountain and SPMD. We were already pretty far along in development of Fountain and Highland when the two specs were merged together, and in our haste to get Highland out we just didn’t have enough time to go back and make sure Fountain worked against every part of the spec.

Jan 10 2013

Movies I Saw in 2012

As with last year, I’ve catalogued all the movies I saw that were released in 20121.

1. Contraband 25. That’s My Boy
2. Haywire 26. The Amazing Spiderman
3. Man on a Ledge 27. The Dark Knight Rises
4. Underworld: Awakening 28. The Bourne Legacy
5. Ghost Rider: Spirit of Vengeance 29. The Campaign
6. Safe House 30. The Expendables 2
7. This Means War 31. Total Recall
8. 21 Jump Street 32. Anna Karenina
9. Friends with Kids 33. Dredd
10. John Carter 34. Looper
11. The Hunger Games 35. Resident Evil: Retribution
12. Wrath of the Titans 36. Stolen
13. American Reunion 37. Argo
14. Lockout 38. Frankenweenie
15. The Avengers 39. Skyfall
16. The Cabin in the Woods 40. Taken 2
17. The Five-Year Engagement 41. Rise of the Guardians
18. Battleship 42. The Man with the Iron Fists
19. Dark Shadows 43. The Twilight Saga: Breaking Dawn - Part 2
20. The Dictator 44. Wreck-It Ralph
21. Abraham Lincoln: Vampire Hunter 45. Django Unchained
22. Prometheus 46. Jack Reacher
23. Snow White & the Huntsman 47. The Hobbit: An Unexpected Journey
24. Ted 48. Zero Dark Thirty

Here are my random thoughts:

The Cabin in the Woods is the best post-modern horror film since 1996’s Scream. It’s smart, scary, and funny. I.e., everything you want in a horror film.

21 Jump Street was this year’s surprise revelation of a great movie. Hilarious from start to finish, and even respectful of the original television series. I was outright hostile when I heard they were making this, but I was blown away by how much I loved it. It instantly made me a fan of Jonah Hill and Channing Tatum.

Rise of the Guardians’s truly original take on the holiday characters it features2 is beyond entertaining.

Anna Karenina is beautiful but insane, not unlike some women I know.

John’s film Frankenweenie was so wonderful. I saw it with a bunch of science nerds, and we all loved how delightfully pro-science education the film was. Plus, it was hilarious. If you missed it for some reason, do yourself a favor and check it out.

Ben Affleck’s Argo is a riveting film. It’s so well done it blows my mind that it was made by the guy that played the jerk in Mallrats.

The only movie I really disliked was Resident Evil: Retribution. I’ve been a big fan of the Resident Evil series, but the last few installments have been pretty dismal. I’d love to see them return to the bleek desolation of the third Resident Evil movie, but that’s not where it looks like we’re headed. Still, the opening sequence of the film is pretty rad.

  1. To be clear, these are the movies I saw this year that were theatrically released in 2012. This is by no means a comprehensive list of every movie I saw this year. Yes, I watch a lot of movies.

  2. E.g., Santa Klaus as a tattooed Russian badass; The Sandman as a mute yet nigh-omnipotent hero.

Jun 25 2012

Fountain Update

Today I pushed the first significant update to Fountain, and boy is it a big one. This is the result of fantastic feedback from users, and work we’ve been doing with Highland. Here are the key changes:

1. An All New Parser

The old parser, FountainParser, works by hammering text files with a series of regular expressions. The advantage of this approach is that to port this to another language/system all one has to do is copy and paste a bunch of regular expressions. The downside is that this is obviously not the most efficient way to parse a document. This was considered an acceptable trade off for two reasons. One, since script documents aren’t expected to crack 200 pages, there’s a ceiling to how large files would ever expected to be. Two, on a modern computer it’s fast enough.

But, it came to our attention that on iOS devices the parser’s performance was less than stellar. In fact, it was pretty terrible.

Long story short, now there’s FastFountainParser. It’s a traditional line-by-line parser and roughly ten times faster than the old one. So, that’s a win.

FNScript now defaults to using the new parser, but if for some reason you want to use the old one it’s still available from the new methods - (id)initWithFile:parser: and -(void)loadFile:parser:, and the string equivalents. Parser options are FNParserTypeRegex for the old one, and FNParserTypeFast for the new one.

2. Descriptions on FNScript and FNElement

As I was putting together the new parser I realized that debugging FNScript and FNElement was kind of a nightmare. The problem is trying to use something like NSLog(@"%@", script.elements) to get the output of FNScript’s elements array would give you something like this:

(
    "<FNElement: 0x7f9abab03d30>",
    "<FNElement: 0x7f9abab030e0>",
    "<FNElement: 0x7f9abab03120>",
)

That is completely unhelpful. The fix to this was to implement NSObject’s - (NSString *)description method. This method allows for the creation of a string representation of an object. Now we get this:

(
    "Action: TITLE OVER:",
    "Action (centered): BIG FISH",
    "Scene Heading: INT.  HOSPITAL ROOM - DAY  ",
)

Much better. FNElement’s description returns an NSString in the pattern “Type: Text”. As shown above, centered elements are marked, as are dual dialogue and the depth of a section. For FNScript we return the full Fountain output of the script object.

Hopefully between the new parser, with it’s non-reliance on complex regular expressions should make it easier to modify and adapt, and the improved ability to debug people will have an easier time working with and integrating Fountain into their projects.

3. A Sample Project, HTML exporter, and FNPaginator

When we originally released Fountain we included the Fountain parsing and writing code, and the Xcode project consisted solely of tests. Several people requested that we provide a little more to get up and running. You’ll now find a sample project included that parses a script (the wonderful Big Fish) and displays it as HTML. Naturally, for this to work we added an HTML converter to the project. It’s very simple, but should at the very least illustrate how to work with FNScript and FNElement.

More importantly, we’ve decided to make our pagination code open source. FNPaginator was built under the supervision of a bonafide screenwriting expert, so it’s safe to say it’s pretty legit. It splits large dialogue blocks up across pages, adding the appropriate MORE and CONT’D, and is smart enough not to split in the middle of a sentence. I’m immensely proud of our work on this thing, and we’re giving it away for free.

What’s Next?

As previously mentioned, we’re going to release our FDR parser as soon as we’re done with Highland, and that will hopefully be soon. We’re also eager to hear about Fountain integration into your apps. Several apps, including Fade In Pro and Storyist, have already added support for Fountain. If you’ve developed an app to use Fountain or are incorporating Fountain into an existing app let us know. It makes us feel all warm and happy inside. :-)

Feb 18 2012

About That Thing

In his announcement of Highland John included “One More Thing”: I figured out a simple way to export text from Final Draft’s legacy .fdr format. To be clear, I’m basically smashing the format with a baseball bat, and collect the guts that spill out. It’s not pretty or elegant, and frankly it’s ridiculous that this even works. In my defense, I have no idea what I’m doing.

In addition to making the .fdr parser a part of Highland – allowing users to export legacy .fdr files to Fountain, .fdx, and PDF formats – John suggested releasing the .fdr parser as a way to give back to the community. My initial reaction was to scream “Never!” and whip my fist into the air; I argued we would be better off making money from people buying Highland to export .fdr files than we would be releasing it for free. After all, the more we can make selling our apps, the more time and energy we can commit to making these and future apps better.

The problem is, we’ve all complained for years about the lack of a .fdr to .fdx converter, forcing users to purchase a new, proprietary app in order to move their writing to an open format, yet here we are essentially saying the same thing, with Highland taking Final Draft 8’s place as the proprietary app.

So, I’m happy to announce that we will be making open source our .fdr parser. As usual, John is right – releasing this code is the right thing to do.

As John mentioned, we’re beta testing Highland right now, but once the app is released I’ll put our Objective-C code up on GitHub, under a MIT license (just like Fountain). I should warn you in advance, you’ll probably face-palm when you see how the code works.

I still hope people will buy Highland and the other Quote Unquote Apps products. We literally can’t do this without your support. But we also hope this will mean no one will have to worry about exporting their files from the .fdr format. We’re not big fans of Windows, so there’s definitely room out there for other programmers to build useful tools based on our code.

I’ll talk more about the parser when it’s ready for release. Stay tuned.

Dec 31 2011

Movies I Saw in 2011

I watch a lot of movies. Whenever people complain that Hollywood isn’t making any good movies I get annoyed, because most of the movies I see are pretty good. Yes, there are occasionally some turds, but really, I saw a lot of great movies this past year, and only one or two that I felt were a waste of my time. I ran through the list of movies released in 2011 and marked down which ones I’d seen, either in theaters or at home, and here’s that list1:

1. The Green Hornet 21. Horrible Bosses
2. No Strings Attached 22. Harry Potter & the Deathly Hallows Part 2
3. The Mechanic 23. Captain America: The First Avenger
4. Just Go With It 24. Friends with Benefits
5. I Am Number Four 25. Cowboys & Aliens
6. Unknown 26. Crazy, Stupid, Love
7. Drive Angry 27. Attack the Block
8. Source Code 28. The Devil’s Double
9. Hanna 29. The Change-Up
10. Scream 4 30. 30 Minutes or Less
11. Fast Five 31. Conan the Barbarian
12. Thor 32. Fright Night
13. Bridesmaids 33. Our Idiot Brother
14. The Hangover II 34. The Debt
15. Kung Fu Panda 2 35. Red State
16. X-men: First Class 36. Real Steel
17. Super 8 37. In Time
18. Green Lantern 38. Immortals
19. Bad Teacher 39. Mission: Impossible - Ghost Protocol
20. Transformers Dark of the Moon 40. Newlyweds

I started writing little mini-reviews for all of the above, but that got tedious. Instead, I’m going to jot down some choice notes:

Fast Five was my favorite film of the year. It’s an awesome heist film. I had to brow-beat people into seeing this movie, but they have all not only loved the flick, but they’ve walked away wanting to see the other films in the series (if they hadn’t already). I’m telling you, if you have doubts, put them aside. The flick is a winner.

Attack the Block was the worst film I saw. It’s about a group of kids that fight back an alien invasion. Only the movie starts with the kids brutally attacking and mugging an innocent woman, then hunting down and beating to death the first small alien that lands, then dragging its carcass back to their building to present as tribute to a drug dealing gangster. Yeah, great people these kids.

No Strings Attached and Friends With Benefits have the same set-up, but FWB executes better. It’s tempting to say that these are really the same movie, but honestly that’s not fair. Although they share the same premise, and basically end up in the same place, they feel very different, in large part due to a strong subplot dealing with Justin Timberlake’s father in FWB. I also have to say that I think Mila Kunis did a better job in her movie than Natalie Portman did in hers – Kunis sells being in love better than Portman does.

The sequence in Transformers: Dark of the Moon where the building falls over is the most amazing action sequence I’ve ever seen. The movie is worth seeing just for that. That said, I couldn’t get over how weird the new love interest’s lips were. Plus the plot makes absolutely zero sense, and is wholly inconsistent with the previous films. Also, it’s too long. Come to think of it, I kind of hated this movie. Still, Patrick Dempsey brought his A-game and that action sequence was badass.

This was the year of comedies, and it’s very hard for me to pick a favorite (so I won’t), but I will note that Crazy, Stupid, Love and The Change-Up are full of hilariously surprising moments. I mean, look, I’m a pretty sophisticated movie goer, and I’m a pretty funny guy ((Based on the fact that women always laugh when I take my pants off. Hey, wait a minute…)) but a lot of the jokes and plot points in these two movies caught me completely off guard. It’s great to see a movie like that. Two in one year? Amazing.

Melissa McCarthy owned Bridesmaids, and that’s saying a lot given that the film was chock-a-block full of funny ladies. Likewise, Kevin Bacon dominated X-men: First Class, though with decidedly fewer funny ladies to compete against.

Cameron Diaz vs Lucy Punch! Bad Teacher turned out to be a really funny movie.

John thought Just Go With It was a Katherine Heigl movie. It’s that Adam Sandler flick where he has to pretend to be married to Jennifer Aniston in order to pork a twenty-year-old model. I liked it. There’s a great Nicole Kidman cameo, and Nick Swardson is awesome (as always). I mean, it’s neither Sandler nor Aniston’s best work (and she was also in the great Horrible Bosses this year), but it’s worth a viewing, if only because there’s a refreshing message about dating someone age-appropriate here.

Real Steel is the Hugh Jackman robot boxing movie. It’s a modern day Over the Top. If you’re not sold after those two sentences then we’re probably not friends.

Kevin Smith’s Red State was surprisingly good and a mess at the same time. Ed Burns’s Newlyweds was unsurprisingly good, but felt cheap. Which it was. The budget for the film was $9,000. Yes, nine thousand dollars.

Drive Angry stars Nick Cage as a man that escapes Hell in order to rescue his baby granddaughter from a Satanic cult. The movie is as awesome as it sounds. It doesn’t take itself too seriously, and is fun, fun, fun. Plus there’s Amber Herd being hot, and William Fichtner being creepy, but in a funny way.

If you haven’t seen the original Fright Night you’ll probably really enjoy the remake. If you have seen the original you’ll probably be disappointed. I don’t blame the filmmakers, though. Recapturing the feel of the original is a tall order (even the original film’s sequel couldn’t pull that off). At the very least it’s a good vampire flick.

Source Code is a fantastic movie. I haven’t ranked the movies I saw, but it would be near the top of the list if I did. It’s a perfect mix of mystery, sci-fi, romance, and drama. It’s a remarkably beautiful film.

I wanted to see The Girl With the Dragon Tattoo, but just didn’t get around to it. I’m not sure if I’ll see it in theaters.

So 2011 turned out to be a very good year for movies. 2012 has (among others): Haywire (Soderbergh’s Gina Carano punching guys in the face movie), Underworld: Awakening, The Grey (Liam Neeson being badass), The Woman in Black, The Lorax, The Hungar Games, Wrath of the Titans, American Reunion, The Cabin in the Woods, The Avengers, Dark Shadows, Snow White and the Huntsman (one of the best trailers I’ve seen in a long while), Rock of Ages, Prometheus (Ridley Scott’s Alien prequel and THE best trailer I’ve seen in a long while, Jack the Giant Killer, GI Joe: Retaliation, The Amazing Spiderman, The Dark Knight Rises, another Bourne film, the Total Recall remake, another Resident Evil, new Judge Dredd, another Taken, Frakenweenie, Skyfall (the next James Bond movie), the Red Dawn remake, and, last but not least, Premium Rush (No brakes. Can’t stop. Don’t want to either.). So, yeah, no good movies anymore, right?

  1. Keep in mind this isn’t all the movies I watched this year. These are only the ones that I saw that were released theatrically in 2011.