Saturday, 6 February 2010

iPhone Dev Crib Sheet #1

As I'm building iPhone applications, I spend quite a bit of time reading tips and techniques. I thought I'd centralise that kind of stuff in blog posts. Here's the first (probably of many). These are principally for my own reminder, but others may find them useful.
  1. When to call [super someMethod]? Apple documents the subclasser's responsibility, but a quick heuristic is to call [super someMethod] first, in methods that construct or initialize things, and call [super someMethod] last in methods that are tidying up, shutting down or deallocating things.
  2. To convert an integer to a string: [NSString stringWithFormat: @"%d", someInt]
  3. [NSArray array] is a shorter way of doing [[[NSArray alloc] init] autorelease]
  4. When building older projects, sometimes the linked frameworks are awry. I remove all linked frameworks then try to re-add them. The wrong way of doing this is to right-click the Frameworks folder and add that way. The right way of doing this is to open up the target, double-click to get the 'General' tab. At the bottom, there's 'Linked Libraries' and a (+) icon at the bottom. Add them this way instead. Make sure you add Foundation.framework and UIKit.framework.
  5. NSNumber is an object NSInteger is just a typedef for a primitive type. NSNumber will work with collections. To convert from primitive to NSNumber, just use the appropriate init: [NSNumber numberWithFloat:someFloat]
  6. When you need a singleton, use Matt's macro to make creating them easy. I sometimes use singletons as an entry point into a single Model for an app.

Tuesday, 2 February 2010

SynergyNet networked content

I've been working with James McNaughton on multi-touch projects since 2007. He is currently a research student with me in the TEL group at Durham. Here are some videos he's put together of some of his work. James is looking at the relationship between interactive tabletop physical design and corresponding software requirements.



And a setup system:



Some of his earlier work is also available to watch.

What's important here is that James worked on a system that quickly and easily allows a table to know where it is in a room. This is important for classrooms where furniture is frequently moved and reconfigured, or just moved out of the way. When applications need to know where other tables are, the teacher would have to inform the table. James' system requires minimum input from the teacher. Just a few interactions per table, taking no more than 30 secs or so. No reason why pupils couldn't do it either.

Thursday, 28 January 2010

ARMonkeyKit meets Rapid Prototyping

Working with Adam Clarkson this morning on getting some robust markers for augmented reality applications. We modeled up a simple marker design in 3DS Max, using NyARToolkit's marker scheme, and printed them on our Z650 3D printer:




These markers perform well as far as reflectivity is concerned (need to minimise disruption from reflections on the surface of the marker) even though they are infiltrated with cyanoacrylate, which can leave a shiny surface. These markers work well for on-table AR applications, but aren't so great for hand-held applications as fingers wrap around the white border disrupting detection. Next version of these will address this.

Thursday, 21 January 2010

ARMonkeyKit

I've been working on a Java based Augmented Reality system with Adam Clarkson, a research student with us in the Technology Enhanced Learning research group. The project title is Improving Stakeholder Understanding of Building Design using Augmented Reality. We've successfully blended together jMonkeyEngine with the NyARToolkit Java port of ARToolkit, along with some other bells and whistles. This effort has been aided by Shinobu Izumi's useful blog posts, and hampered by lack of published information. The main challenge was for me to get performance out of the video capture and rendering process, whilst sharing the video capture with NyARToolkit.   After these efforts, we can sustain 100+ fps on our sample demos, which include MP4 video rendering.



The solution here was to adapt some of the JMF/FOBS work done by llama, documented here, to use the same principles of video playback to video capture.

We've captured the whole of this in an open source project we quickly name ARMonkeyKit.

Tuesday, 12 January 2010

BETT 2010

NESS are showing at BETT 2010, and will be using some of our software on the stand. This is a screenshot of what you might see there. The neat thing here is that all of the content (except the buttons) can be transferred from one table to another just by 'throwing' the content towards the edge of the screen.



Works with video too. The top-right content item is a PowerPoint presentation. The other items are MP4 videos.

The SynergySpace/SynergyNet software framework easily supports networked content, allowing us, as developers, to quickly build network-capable multi-table, multi-user, multi-touch applications.

Monday, 7 December 2009

Reseach-Teaching Linkages


The Quality Assurance Agency for Higher Education has featured some of my work in a recent publication on the research-teaching nexus. This work is a collaboration between Prof. Liz Burd and myself in the School of Engineering and Computing Sciences and Colin Ashurst and Alan Jessop in Durham's Business School. Its focus is on project management patterns.

Wednesday, 25 November 2009

BECTA interview

I haven't dealt much with a film production company before, so I was very much looking forward to today's filming session with Xube. They were commissioned by BECTA to film a set of case studies for their website. News of our SynergyNet project provoked the interest of BECTA, who wanted to feature some of our work in the context of emerging technologies for education.



The films should be available on the BECTA website in early 2010.  I'll post a link when they arrive.