This Is Nowhere: Don’t Just Stand There!
Oct 11, 2018 11:35

While Zuppa Theatre had used apps to enhance their theatre experience once before in their “The Archive of Missing Things” production, “This Is Nowhere” was going to be at a whole other level. The basic idea was that the audience members would use an app to get clues and some kind of direction-finding to help them find the hidden performance locations around town, and then during the performances the app would provide some extra enhancements.

That was about all we knew at the start of the project, about a year away from opening night. The thing with software is you can’t ever be vague or hand-wavy about anything. Every detail will eventually have to be decided. So we had a lot of decisions to make over the coming months.

My process in building software is to start with rough ideas and prototypes and to keep adjusting and refining them until they fit what we need. The key, though, is to always have some kind of working program: no mockups or faked screenshots. Every step, especially the early ones, may be really simple and really ugly - but it’s built with actual working code that does something.

One of the advantages with actually building things is that you have to have something in each of the key places. There has to be at least a rudimentary navigation process. There has to be at least a basic set of data structures. There has to be some kind of user interface.

There’s a story I always remember, although I can’t remember exactly who told it, about a famous musical director who shouted at some of the background dancers who were just standing around during rehearsals: “don’t just stand there! At least do something so we can change it later!”

At least do something so you can change it later. That’s great advice for any creative endeavour. (It's especially good for writer's block.)

What often happens is that these things don’t get changed later. Or at least they don’t get completely replaced. They may get refined and adjusted out of recognition, but still the foundations are made from the original rough ideas. So much of my best work across my career has started as “just some basic stuff to get it working”.

So for This Is Nowhere, I started by building some rough iOS apps to experiment with technologies and frameworks. These were all single-screen apps, with similar names:

“Where Am I” just showed the GPS coordinates of your current position on the screen. It wasn’t all that impressive or even useful but it was a key to figuring out all the tracking technologies used for the rest of the show.

“Where It Is” had an arrow that pointed to a selected location in the world, based on where you were and which way your device was facing.

“Where They Are” was a simple app using a cool library called ARCL that let you place Augmented Reality elements in the real world based on GPS data. It used the same locations as “Where It Is” but displayed emoji images over where they would be in the world.

Augmented Reality books emoji

“Who Was Here” used the same technologies as “Where They Are” but superimposed semitransparent “ghosts” of people, taken from 19th century portrait photos.

Augmented Reality ghosts

While the Augmented Reality stuff was really cool looking, it didn’t end up in the final project - mainly because it only worked on recent iOS devices, but also because it didn’t work super reliably: GPS positioning can suddenly shift dozens of meters, completely destroying the illusion of an alternate layered reality.

That said, a lot of the lower-level logic for figuring out our position and relationship to other places in the world ended up in the final client software. It didn’t make as cool a demo, but it ended up being much more useful.

The bigger result from this project wasn’t really in the apps at all: because each app needed target location data, and it was easier to work with consistent datasets, I set up a web-based system to manage and serve up the location data to client apps.

This server side system was built with Ruby on Rails, something I’ve been using for over a decade and which I know really well. With so much new technology going into this project, it was nice to have some components that were really familiar to me. It started as a simple collection of Location models, editable through some simple web forms and served up as a JSON feed, but like everything else in this project, it was definitely a “just do something so we can change it later” component.

This server system, called “Parallel Worlds As-A-Service” or “PWAAS” ended up becoming the most important part of the whole project - the one key thing that tied everything else together.

This Is Nowhere: Finding My Duck
Oct 08, 2018 17:57
This Is Nowhere: The Single-Button UX
Oct 12, 2018 12:04
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" 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: 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