The installation project that I was working on for the Tate Liverpool is finally finished and installed, and has been running for a few days. It turned out really nicely, although the process was a lot different to my usual kind of project. While I'm happy with the final result, there's a lot I'd do differently if I tried to tackle something like this again (and hopefully I will). Here's what I learned:
Choose your technology wisely.
I made the projector in Flash, as a dual-screen AIR application. The primary screen is the user-facing input part, where people write their comments. This screen also serves as the admin screen if a password is entered into the comment area. The second 'screen' is actually the projection itself. I used this handy class to make life easier, but it was still a bit of a pain making sure that focus was doing what I wanted. I'm also really concerned that the Flash player might be prone to crapping the bed when it's been left running for a few days, it's not something I've got much experience with.Only time will tell if it stays stable, it's been a few days and I've not heard anything. In hindsight, I kind of wish I'd gone with my initial plan to use Processing, but I ended up taking the comfortable option and going with the technology I knew best, despite the advantages that Processing would have given me. Ah well.
Testing an installation project is hard.
Working on a regular monitor for a piece that's eventually going to be a few meters wide is a total nightmare. I spent days working with font sizes that looked completely natural on-screen, but looked totally different when we projected. About halfway through the build we rigged up a McGyver-style setup in the studio (see below) and managed to approximate a projection at the right size, and immediately realised that the fonts were still miniscule. Whoops. Next time around, I'm going to try and run the maths on it first: if the client wants a certain text size (in inches for example) then I need to sit down beforehand and figure out what size to set my assets at. It would still need testing, but my approach on this one wasn't even an educated guess and really created a lot of extra work.
Never underestimate people's creativity when it comes to profanity.
Filtering swearwords was the biggest concern I had for the entire build. In the past I'd done some very basic filtering, but only for things like websites and apps. It doesn't really do much damage if someone decides to fill my forms with swearwords. However, if someone sneaks a few creatively-formatted cuss words through at a crowded Tate exhibition, it's potentially a huge deal. I ended up going for a three-tiered approach that seems to have a worked alright. I won't go into the technical specifics (that's a whole post on it's own) but it essentially checks input against a massive list, then searches for the more common words within words, including common letter/number substitutions. I tested what I thought was a solid system very early on, mainly through my Facebook friends, and within a few minutes realised that people are immensely clever at subverting filters and ruining my day. Hilarious as it was, the testing proved invaluable, and meant that I came up with what I'd like to think is a pretty robust system. I've not had an angry call from the Tate yet, so that's reassuring.
Letting staff edit content without the use of a mouse, is a pain.
The screen has a password-controlled admin screen that allows the staff at the exhibition to quickly access the user comments, in date/time order, and very quickly disable any offensive or unsuitable comments. This was an important feature: I was pretty confident in my profanity filtering, but of course there's a lot you can do without swearing. My big issue was the lack of a mouse, so I had to handle screen-to-screen focusing cleverly to make sure the user couldn't get out of place or lock themseleves out of the screen. Turned out really well though.
Block that keyboard.
In addition to filtering out swearwords, I needed to make sure that nobody was going to kill the presentation or alt-tab out of it, or whatever. This was absolutely mission-critical, and should really have been the very very first thing I sorted out, but of course I ended up getting stuck into the visuals and leaving it til last. Mistaaaake! Luckily, I found this little app that allowed us to quickly disable a lot of the keys. Again, if I'd done this in Processing I could have done this myself as part of the app, which would have been a much more streamlined solution than relying on a second external app to handle key blocking. Not to worry though.
Overall I'm very happy with how it went from a technical perspective. There was nothing that went particularly 'wrong' with it, I just think that with a little more planning in advance I could have saved myself time, and made life easier.
We did end up slightly simplifying it visually, just so we knew it would work. Again, this wasn't a mistake as such, I just kind of wished I'd done a bit more testing to see what I could have gotten away with. I also think this would have been a great learning experience had I picked Processing over Flash, but of course that comes with the risk of things not going as smoothly as it did due to be me using an environment I'm familar with. Perhaps there's better projects to cut my teeth on than ones that are going to be projecting in front of hundreds of people. Hmm.
Anyway, I really enjoyed the experience overall, and will definitely jump at the chance to do something like this again. If you're in Liverpool in the next two months, go check it out.