Tuesday, December 03, 2013

Where's Jeremy (2013) - Part 3: Samaritan Casting - The Database (or, why Jeremy hated his life for four months)

This is post #15 in Where's Jeremy (2013)

In February 2013, the online casting software that I and my predecessor used for accepting talent submissions (automating the tedious task of collecting actors' headshots and contact information) announced it would soon start charging actors to upload headshots or submit for roles, features that had always been free. I have 2500+ people on my broadcast list, there is no way (logistically or morally) that I could ask all of them to spend money on the service just for my convenience. Therefore I had three options:
  1. Close down my company
  2. Accept email submissions (which is a HUGE pain)
  3. Develop my own online casting software
Believe me, option 1 was very tempting. As many friends have heard me bemoan, the casting company has been a major pain-in-my-butt since day 1. Given that, I'm frequently asked two variations on the same question: "why do you keep it?" and "why don't you sell it?"

The answer to the first is partly due to my pride and ego, and wanting to retain bragging rights to say I run a small business. Part is a feeling of obligation to my friend who built the company up over the past decade; who am I to have the right to close it down? And a large part is a feeling of obligation to continue providing this service to the community, both for the actors/extras, and also the producers, directors, and especially student filmmakers, who use the broadcast lists to post their casting notices. My therapist keeps trying to remind me: I don't owe anyone anything, but... I can't help feeling a sense of duty. I want to help people, I mean, after all, I named the thing Samaritan Casting.

The second question - "why don't you sell it?" - is much less emotionally complex (though people never have seemed to get it). There simply was no one who:
  1. had any interest in purchasing the company
  2. had the skill-set necessary to continue running it (in terms of technical ability, business management, detail-orientedness, etc), and
  3. I trust, in order to pass the torch
Any number of people meet one or two of those requirements, but [until recently; future blog post] there was no one who met all three.

I opted against closing down, at least for now, and started developing my own online casting software, specifically catered to extras casting. I'd actually hoped to build this software years ago for my friend, just never got around to it before the out-of-town company came in and offered him their software for free. But that meant I already had lots of ideas written down, and also, now having run the company on my own for a year, I had a good handle on what features I needed in order to make my life easier. Ultimately that was my goal with the software: to remove as much stress as possible from my extras booking process.

While working at Minnehaha, I developed an online back-to-school forms database called RORS. I say "back-to-school forms," but RORS did so much more than that - it also generated complex reports for superusers, dynamic PDFs and CSVs, all sorts of bells and whistles. RORS was my baby for the better part of four years. It was a massive project. Foolishly, I figured I could create this casting database, which would be as complex as RORS, in just a month or two in my spare time. Bahahaha how egregiously wrong I was!

To my benefit, though, I used many lessons-learned from my time developing RORS. For example: planning ahead as much as possible. This helped avoid countless late-in-the-game database changes that would have required extensive code re-writes. Before I wrote a single line of code, I brainstormed all my features and designed database tables to accommodate all their interconnectedness (like headshotIDs linked to talentIDs, which are then linked to userIDs, and resume items, and so on). Time very well-spent, because by the time I finally did start coding, I had already thought through many potential issues and figured out ways to avoid them.

<nerdy things>
In addition to basic project planning skills, I also knew from my RORS development that I wanted to use a different javascript framework. With RORS I had used Prototype and Script.aculo.us, having seen an impressive demo of them at WWDC07. However after years of continuous RORS development, I knew the next time I built something, I wanted to jump ship to a different framework called jQuery. In my opinion, jQuery is easier to use, and from what I can tell it has a larger user base, which translates into substantially more online resources to help solve problems.

On a less-happy note, despite my awesome planning I didn't account for needing to learn a brand new syntax for MySQL queries. PHP's new mysqli commands take three times as many lines of code as their predecessors, but supposedly are more secure. The learning curve was higher than I'd expected, but eventually I figured it out.
</nerdy things>

From March through June I devoted every spare hour I had to coding, to the detriment of my physical health, emotional stress, and ability to spend time with my friends and family. Programming on the database became my entire life outside of work. I reneged on volunteering at church, on phone calls with out-of-state friends that I already didn't get to talk to enough, and drew down on the time I allowed myself to spend hanging out with my local friends. Life sucked.

On that downer, to be continued...

No comments: