Building a Theater
Published: 2021-01-10 19:33:04

So three days after I graduated bootcamp I was approached by a friend to work on a project. Knowing bootcamp isn't the be all and end all of learning I asked why me? They had talked to plenty of Developers with experience but none of them had a concept of how a theatrical production operates... me on the other hand? I've been at it since I was 15 (21 years ago?!?! terrifying). Let me tell you real world coding is slightly more intimidating than bootcamp/localhost operating.

In bootcamp, you know what your tools are because there is a set curriculum as a dev trying to do something novel and outside the box the world is your oyster (you gotta learn fast though). At Flatiron I learned Ruby/Rails, Javascript and React. There are strengths and weaknesses of all of those languages. I learn in my time in theater, the right tool for the right job certainly will help. So after talking with the team involved with this project I found out about the requirements/vision they had. 

With notes in hand that led to trying to figure out what technologies best suited those needs involve the greatest tool of all... Google. Search and search to see what other people have done and if there was a similar use case that you can adapt. 

The requirements that helped decide on the tools.. There are certain scenes and acts... great to me that's yelling out for a React Component (hooray bootcamp notebook). Video/Audio/Image processing... also great, standard HTML CSS/SCSS... wonderful no problem.

Live Chat? Hmmm.... not something they teach us.... Rails does have a library for it but Sockets seemed to be a good use case. Sockets... oh I need to figure out Node.... oh I need to figure out Express... google google google. I guess mongoDB will be a good resource for this implementation to track conversation history.

Authentication and ticketing through Eventbrite... but but mongoDB... Alright so I can use the Eventbrite information pull the ticketholder list, add that to mongoDB on a per performance level. Google some more, oooo Mongoose is great interface in Node, and Eventbrite has an SDK built for Express use. Things were lining up.

Next up "We want a Stage Manager to control everything...." Ok.... Sockets to the rescue. You can build custom commands to emit and receive directions. So you can push them to areas on a cue. 

We want everyone to work on a timeline. Timers! My old friend clearInterval! Stopwatches and the Stage Managers who use them are truly the unsung heroes of the theater, and here I get the job of recreating that level of interaction on a coding level. 

Next up. There needs to be 5 different tracks that people can go down, sorted evenly... Sockets AGAIN for the savem since they can send real-time information to the server and disable links if they hit a certain cap.

This is a project that has grown and grown.  In bootcamp, you have that sprint and then you're on to the next stage of learning. Real world projects, you come to love refactoring and making it better, molding it for different use cases. 

I'm excited in following blogs to talk about the learning process and the technologies I've had to learn and seeing how the journey all pans out. The use cases I will go through are by no means best practices but when you are doing something novel, are there best practices (some Senior Dev somewhere is yelling "YES!"). As a developer that's what you do though.. Figure out what it is, make it work, make it better. All I can aspire to.

Yesterday was first preview and there's a lot of work to do now that we have real world feedback so... back to the drawing/coding board.