Mon moteur Swift

So a long, long time ago I developed some technology for an awesome company, for an awesome project. I wrote this in Java using Processing, a really amazing IDE which I recommend everybody should use at least once. In previous years I had bought a book titled Sams Teach Yourself C++ in 10 minutes which sparked my interest in OOP so this new challenge became a personal and technical exploration. Looking back it represents my departure from other mainstream environments.

Any hoot, the basic core requirements for this technology were to draw and animate 3D objects so after some highly intense research I designed and developed a very primitive scene graph which exposed parameters. Most importantly it proved to be successful, most interestingly because it was versatile. Food for my brain.

I later built another more mature version in Objective-C which sits behind iSnowglobe.

Which moves me on to the present-day. Firstly I must admit when I heard of Swift my initials thoughts were not so positive, thankfully we are now developing a strong relationship. It’s been frustrating at times but we’re cool, DUDE, SWEET.

I have this project I started, a game which I have been developing for what feels like a 1000 years, so I smashed my head against a brutally resistant wall a few times and thought I know, this is a great opportunity to learn Swift. Usually I find practicality always throws up unexpected things and I prefer to apply myself constructively. So now I’m writing a cleaner version and felt like sharing some experience.

Figure 1
Figure 1

Looking at the diagram (Figure 1) one can observe at the heart lies a simple hierarchy which describes a dynamic data-set abstracted into discrete core components: properties, parameters and variables. Through research I have discovered this design pattern appears to be a presence in more sophisticated API.

Only a small piece of a larger puzzle is highlighted here but the strength is within clear simplicity. New property-sets can be created using a Property, property-sets contain any number of parameters, the Parameter value is bound to a Variable through closures. Custom subclasses can expose a Variable using ivar(s). Lower down the chain parameters can support animation by evaluating a FunctionCurve at any supported time-frame. Sweet.

During development there were times when I missed the high level of dynamism offered by the Objective-C runtime, no pun intended, but I have realised Swift offers a new world where I can continue to grow and in many ways it feels reminiscent.

As my Swift matures I’m certain this narrative will seed new interesting fruit.

The Foundry:Colorway

Recently I was handed a great opportunity to be involved with the Colorway product line at The Foundry. The experience has had a positive impact on my outlook with many interesting ideas, open conversation, creative thinking, passionate and dedicated professionals. Overall it has reinforced my belief that such qualities hold value and are personally fulfilling .

Any hoot, back to the real world and talk of work because I am very proud of the app I implemented while there. Although iPad was the only target requirement for the original project I’ve compiled on iPhone 6 Plus and included a demonstration film to showcase the features which will probably have the greatest impact on UX. Although a little detail is lost in translation.

Read full story…

Transforming with MPC

RN Diptych

After a brief consultation I was first invited by MPC to complete some R&D work. This led to my role as individual and lead developer for the project.

The initial goal was to achieve real-time full screen playback of retina resolution video with alpha transparency using iOS 6.0 SDK targeted at 4th generation iPad, not natively supported.

A small number of lightweight implementations were explored: composting deriving alpha information from colorised frame data, composting multiple video source, supporting FFmpeg conversion. All these tests highlighted a common drawback, speed. An educated decision was taken to supply the video source as sequential png image sequences, this data could then be scaled, compressed, pre-complied and packaged in to a single binary file.

Read full story…

ITV Player UI

Responsible for accurate interpretation of the user interface (UI). Ensuring the integrity of the design brief was maintained custom drawing of cached gradient paths was implemented using Quartz 2D, this dynamic approach aided resource independence. Many other elements where also approached dynamically and dependant resources were used sparingly where it was felt appropriate.

Read full story…

SuperGroup distributed presentation

This was a great opportunity to be involved in the design and development of a new applications suite, compiled using a single Xcode project template. An interpretation of the Photos app with the addition of a ‘slideshow’ feature which cycled though a cache. All applications performed a one-time buffering of image data on startup installation, this aided performance.

Read full story…

A Spectrum of apps…

Recently completed work on The Times crossword apps, Concise & Cryptic.

…huge thank you for your hard work on both the Times Crossword apps Peter. You have portrayed an impressive level of professionalism, intelligence and knowledge throughout the project, which made it a huge pleasure working with you. You truly are a walking-talking iPhone development guide! All the best for your future endeavours…

It is always a challenge to pick up a new project, in particular when one must hit the ground running. As well as being able to pull on my practical skills, my knowledge of the iPhone/iPod touch platform and SDK proved to be a great benefit, being able to understand one’s media and work to its strengths, quickly.

Read full story…

Barclays flagship installation

Asked to build Barclays Flagship in Piccadilly Circus…

This was a fantastic project, and a challenge. It began with a brief consultation about hardware setup & recommendations, having this research time was very beneficial. A great find was the ‘Osprey 100 Capture Card’ from ViewCast, which we used to interface between: multiple serial camera’s, and a desktop PC running bespoke software.

Read full story…

Wireless data services @ Wimbledon


The first venture into Windows based desktop applications, and installed at Wimbledon Tennis Tournament 2008. Provided consultation support as well as development, initially advising on a suitable hardware interface between the two devices: desktop PC & wireless tablet, and the common implications that can arise.

Read full story…