This Is Nowhere: The Server Side
Oct 15, 2021 20:40

Pretty early on in the planning stages for This Is Nowhere, it was clear that it would be a client-server system. Web or mobile app clients would check in with a central server for authentication as well as to get the latest updated version of the content. We'd also need to keep track of where the audience members were headed, to ensure we didn't break capacity limits for some of the venues.

Early on, I had considered having all of the data stored locally in the app, but it became pretty clear that the content would be constantly evolving and changing throughout the process, and up to the last minute. Instead, this project would need a server-hosted content management system to specify all the details about the locations and their related stories.

While many aspects of the client side of things were going to be new technologies for me, such as Swift and React Native, the server side would be something of a relief, built in technologies I’ve been working with for many years: a Ruby on Rails app with a PostgresSQL back-end and hosted on Heroku.

Rails lets you build and modify full featured web apps quickly and cleanly. It’s been my tool of choice and sometimes secret weapon in my freelance work for over a decade now. Data listings and forms are easy to set up. Most importantly for this project, it lets you describe complex data models with just a few lines of code. Outputting simple data in JSON format only takes a “.to_json” method, while complex data can be handled with a fairly simple description file.

Heroku is a cloud-based hosting platform I use for all of my Rails projects. Launching a new project on Heroku from scratch takes only a few minutes. Scaling on Heroku is a simple matter of moving a slider and picking from a menu on a web interface, or running a single line in a terminal.

The great thing with using Heroku for a theatre project is that it tracks billing by the minute. When we only have a handful of people working on the content or testing the client apps, I could run it on a single inexpensive instance for about $7 a month. When time came for the live show with hundreds of people hitting it in real time, I could ramp it up to multiple monster dedicated multicore servers to deal with the traffic - BUT ONLY FOR THE FEW HOURS OF THE SHOW and then dial it back to the base level again afterwards.

This heavy capacity would normally cost thousands of dollars per month - but for just five “shows” of about four hours each, the total hosting cost was about $30 - less than a round of drinks at the closing party.

It was fun to turn up the dial to ludicrous power even if just for a little while.

Other Blog Posts
My Expanded Twitter Thread about BurgerWeek 2021 This Is Nowhere: The Server Side Building a React Native App Without Tears - Part 3 Building a React Native App Without Tears - Part 2 Building a React Native App Without Tears (Mostly) This Is Nowhere: The Memento Edition This Is Nowhere: Aspects of Accessibility Presentations About NowHere This Is Nowhere: Head-First Into React Native This Is Nowhere: Bloomsday Halifax This Is Nowhere: Why an HTML/JavaScript Single-Page App With GPS Is A Bad Idea This Is Nowhere: GPS and Wayfinding and More UX This Is Nowhere: The Single-Button UX This Is Nowhere: Don’t Just Stand There! This Is Nowhere: Finding My Duck Finding Burgers Fast: My DIY Halifax Burger Week Site "This is Nowhere" at PodCamp Halifax 2018 The Diary Diaries: Fixing Remembary's Facebook Connection Special Leap Day Edition of "Some Weird Things About Time" What's Up With Remembary Can't get pg_dump To Work Now That Heroku Has Upgraded Postgresql to 9.4? The Best Thing I Ever Did To Promote My App If You Build It, They WON'T Come #deployaday, My Big Hairy Plan for 2015 Extracting Plain Text from an NSAttributedString My Year of "Hits" Part 2: Remembary Rolling My Year of "Hits" Part 1: Remembary Rises (and Stumbles) Handy Little Test Method to Check for Translations in Rails Apps My Suddenly Slow-Waking MacBook Air Indie App PR: Keeping Control of Your Tone A Quick Note on 'clone' in Rails 3.2 My eBook Apps 2: iOS, JavaScript, and Ruby My eBook Apps 1: Introduction Quick Tip: No Sound on Mountain Lion My Upcoming Talk at PodcampHFX 2012: My Year of "Hits" starshipsstarthere.ca: Building at the Speed of Funny Screencast Tips Remembary's Cool New Picture Support Indie App PR 2: Keeping On Top Of User Feedback Indie App PR 1: How to Handle an App Disaster Giles Bowkett Diary Project 2 Remembary Video Congratulations! Welcome to Your Nightmare! How My iPad App Remembary Took Off Why You Should Have an App in the App Store (Even If You Probably Won't Make Any Money) PodCampHFX Remembary Presentation - Part 3 How I Used MailChimp Autoresponders to Promote Remembary PodCampHFX Remembary Presentation Part 2 PodCampHFX Remembary Presentation Part 1 Why AdWords Ads Don't Work for iPad Apps Remembary is Sponsoring PodcampHFX Why Can't I Resize my Views in Interface Builder? Momento and Remembary Concerning Remembary iPad-Friendly eBooks of Gracian's Art of Worldly Wisdom Project Report: PTOS2 A Quick Note on Encryption We're all LUsers Thoughts on HAML Friday Afternoon Hack - Getting Beyond the Basics Halifax Friday Hack and Back to Basics Quote from Wil Shipley FutureRuby Make Web Not War Busy Week I: Toronto Ruby Job Fair Employment.nil - the Toronto Ruby Job Fair Code Count: Ruby on Rails vs. C#/ASP.NET A Brief Note on Twitter The Hub Halifax and Mobile Tech for Social Change Deep Thoughts on Microsoft From The Accordion Guy The Two Kinds of Defensive Programming Presentation - Fixing Careerious: From C#/.NET to Ruby on Rails Enterprise! Presenting at Ruby on Rails Project Night - May 7th New Name and New Look for Careerious/Clearfit FutureRuby and More From Unspace Health Tips for Programmers This tables meme won't die Careerious - Ruby and Rails vs. C#/.NET Yeah I Use Tables For Layout, So Sue Me The Different Kinds of Done Giles Bowkett's RubyFringe presentation OfficeTime: Great Time-Tracking App for OS X Back With A New Look Non-DRY Feed torontorb Keeping Your Sanity With The Command Design Pattern shindigital Is All Grown Up! (according to the spambots) Startup Stars? I'm so bored! The Magic Words for RMagick Jennifer from Operations You see? Naming is HARD Business Software as Process Documentation Deployment note: 'execve failed' Steve Jobs on Market Research Why Canada Is Better for Entrepreneurs "Program first and blog second" Toronto Tech Collage The MacBook Air Is A Roadster RubyFringe! Quote of the Week: Steve Yegge Starting Up: Cards Great design tool: browsershots.org Starting Up: The Logo Quotes Of The Day: Hedge Fund Interview TSOT Ruby / Rails Presentation Night - Part 1 Moneyworks: Accounting Software for Canadians on OS X Starting Up: The Name Nice logo, but why is your site so bland? Welcome to shindigital.com