Here at Made by Many we’re very interested in whether things are available or not. Our first venture into this exciting space was, of course, the excellent toilet project, but our collective imagination was already set racing. To which area of the studio could we next apply our keen availability solutions?

We have two meeting rooms, and they can be booked as a resource in Google Calendar. If you’re at your desk and you have the web app open, it’s easy to see if a room is in use, and for how long. That works pretty well. If you’re just wandering around though, and just want to saunter into a meeting room for ten minutes for a little thing, it’s less convenient. There was a problem with people camping out in meeting rooms, unaware of any bookings, and making booking one properly a little meaningless. We wanted an at-a-glance display of what the day looked like for the meeting room you were potentially about to occupy. We might have bought an existing product from someone. They certainly exist, and (when factoring in my time) might have been cheaper – but it’s not as fun, is it? I had some time between projects, so set about our own little solution.

I’m a software sort of creature, so this wasn’t going to be a soldering iron event. It also had to look good and so we thought we’d outsource all that to Apple. They usually do a rather good job of that kind of thing. We got a couple of Retina iPad minis, some wall-mounting magnets, some sticky-pad cable clips, and a couple of long power cables for them. I’d be dusting off my Objective-C.

It was around 2002, soon after I got my first Mac, when I started looking into Cocoa and Objective-C. I never did anything particularly big or serious in it: Conway’s Game of Life, a menu extra showing Swatch Internet Time, a little MIDI utility that does something I’ve forgotten. You spent half your time managing memory: retain this, release that. It was okay. I got told off by 2014’s Xcode when I tried to do that. “Allow me,” it said, kindly but firmly. Not wanting to annoy my new IDE chum, I let it do its thing. Software development tools have a way of making your mistakes look scary.

So the brief was a clean, clear view of the meeting room’s day: its current availability, the length of any free slots, and who’s booked what. Owen put together a lovely, simple design for such a thing. The top bar’s background is coloured to show the current status of the room (with text in white), and the remaining rows are the reverse.

All I had to do then was write it. It didn’t take me long to find the Google API Objective-C Client, and authenticating and getting data out of a resource’s calendar is nice and easy. Stumbling blocks came in the form of listing resources in the domain: the calendar resources API uses a different authentication mechanism to the regular calendar API, which makes it a bit of a fiddle. I opted to shelve that problem for version one: hard-coding two resource addresses is no great hardship. The rest of it is a couple of UITableViews and some glue. Nothing complex, but it was a nice little nose around building an iOS app and today’s Apple developer tools and APIs.

So that the iPad stays awake, the app sets idleTimerDisabled = YES (my favourite: the double-negative API symbol) between the hours of 0900 and 1800; the built-in iOS auto-lock puts it to sleep outside of those times. Unfortunately there doesn’t appear to be a way to wake the iPad at the start of the day, but it doesn’t take much for someone to hit the Home button when they get in. I enabled Guided Access so that people can't switch apps to something less useful.

Of course there are already plenty of ideas for improving it: booking slots through the app is a major one; also to have a detail view of a particular slot by tapping on it. If you’d like to have a go at these, or just see the source, I’ve shared it on the Made by Many GitHub account. It’s called “Calappy”, it’s not a very good name. It’s not on the App Store, it has no icon – just use it if you’d like to. BSD 3-clause license. There's also no pretty setup or configuration – I had limited time and wanted to get something working, so configuration is through constants in the source at the moment. This is “here's a dump of source code you can play with if you find it useful and it might be updated sometimes” rather than “I'm announcing a wonderful new open-source project that will be built upon and maintained.” I've written a bare-bones Readme to get you started, though. Have fun!

Dan Brown

Dan Brown

Hairy geeky coder-type, so I'm obviously totally unique. I like interesting, expressive programming languages, modelling real-world data, and putting together big-ish systems. My fascination with complex systems extends into music, nature, and sometimes some very inexpert linguistics. The world is cool.

@stompydan

Continue reading

TimeOut MxM 14

This week the Many are attending events on intentional inclusivity and the future of travel, learning from failure and criticism, playing gamelan instrume...

Zofia Ciechowska   ·   3 October 2014

[CLOSED] Hiring: Freelance QA Engineer

We’re looking for a freelance QA engineer to help us out on a range of projects for a minimum of three months, with an immediate start.

You will be helpi...

James Higgs   ·   26 September 2014

TimeOut MxM 13

This week we're excited getting about Small Talks, learning about food start ups, park designs and brainwaves, internal agency models and hamburger icons....

Zofia Ciechowska   ·   26 September 2014