Holler - Portfolio

  •  Jo Carter (she/ they)
  • Head of Engineering, London UK (Remote)

There are 68 examples of my work in this section.

innocent drinks - global innocent drinks - global innocent drinks - global

innocent drinks - global

An ongoing project throughout the year for which I was technical lead (and PHP developer and sometime pitched in on frontend CSS and JS) involved the global launch of the innocent website.

Already a multi-site setup CMS when innocent Ireland was launched, there was still a great deal of work involved in getting the site ready to support multiple languages and different country setups. Including altering styling to fit longer language phrases, reworking templates and making everything translatable.

A new server, bigger and better balanced, was required. Moving the databases to the Cloud and as many assets as possible to a couple of CDNs.

In addition, there was a complete rewrite of the product system to allow for new product types, and translatable URLs and many more useful features.

The whole process was documented throughout and involved creating some simple but comprehensive setup documentation for each country; and a bunch of PDF user guides.

The following sites have been since (re)launched:

And there are still more to come.

Initial launch date: 2 Jun 2014

Built with: PHP5, Symfony 1.4, Doctrine, CMS, MooTools, AJAX, HTML5, CSS3, SCSS, Twitter API, Automation, PDF and document conversion, multi-site, multi-lingual, I18N, Server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache)

the innocent foundation the innocent foundation

the innocent foundation

Responsible for creating a completely new site for the innocent foundation. Designed by innocent and based off the CMS used on the main innocent site, the innocent foundation site was coded to be completely manageable and customisable by innocent themselves. A new server was set up for this and the Chain of Good site

The CMS was set up to be completely flexible and supports multiple sites and multiple languages, with complete control over the content.

Initial launch date: 20 Dec 2013

Built with: PHP5, Symfony 1.4, Doctrine, CMS, Server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache)

innocent Chain of Good

innocent Chain of Good

Responsible for creating a microsite built around the video ads for the Chain of Good and the Chain of not so Good for innocent drinks. A single page (with a little bit of AJAX) site, which is content managed to allow innocent the most freedom in creating content.

On 27th Jan a compliment generator was added to both sites of which I did both the frontend styling and JS and backend development (on the /passiton URL)

Initial launch date: 19 Dec 2013

Built with: PHP5, Symfony 1.4, Doctrine, AJAX, Content managed, Server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache)

NOW TV Santa's Box Hunt

NOW TV Santa's Box Hunt

Responsible for upgrading the previous Boxhunt for a Christmas re-skin to Santa's Boxhunt. Adding leader boards and spot prizes (plus a few tweaks and bug fixes).


Initial launch date: 13 Dec 2013

Built with: PHP5, Symfony2, Doctrine, AJAX, JSON, Facebook Graph API

Co-op Electrical Share & Reveal

Co-op Electrical Share & Reveal

Responsible for setting up the framework for a simple symfony2 site with a sharing mechanic for Co-op Electrical.


Initial launch date: 2 Dec 2013

Built with: PHP5, Symfony2

#smart21 #smart21

#smart21

Responsible for creating a beautiful microsite for smart uk's #smart21 campaign; using the Google Maps API to submit guesses as to the car's virtual location. Also responsible for creating a user friendly admin interface which uses social APIs to pull in clues from Facebook, Twitter and Instagram (with images); and supplies all the necessary tools to add locations and clues, and to pull out winners and statistics.


Initial launch date: 25 Nov 2013

Built with: PHP5, Symfony2, Doctrine, AJAX, JSON, Facebook Graph API, Google Graph API

NOW TV Box Hunt NOW TV Box Hunt

NOW TV Box Hunt

Responsible for creating the NOW TV Box Hunt microsite; working closing with a frontend developer to provide a JSON API for use with Angular templates to create a seamless experience. The site makes use of the Google Maps API and Streetview API to allow people to guess the location of famous movie sets.

Responsible for creating an integrated admin area for the creation of new locations and clues, including the use of the Streetview API to perfectly locate the right viewing angle. Also providing daily leader boards for picking winners, and lovely graphs of statistics.


Initial launch date: 30 Sep 2013

Built with: PHP5, Symfony2, Doctrine, AJAX, JSON, Google Maps API, Streetview API, Google Graph API

the innocent Big Knit the innocent Big Knit

the innocent Big Knit

Responsible for creating a microsite for innocent's Big Knit campaign (for 2013 and future years). Created the main feature of the site which was a hat maker - dynamically creating (and uploading to a Rackspace cloud) shareable images of the custom hats, which increased the donation to age concern. The admin area included the ability for innocent to add ad-hoc pages, customise the homepage and the navigation to a large extent.


Initial launch date: 4 Sep 2013

Built with: PHP5, Symfony 1.4, Doctrine, Content managed, dynamic image creation with GD library, Rackspace Cloud Files API

Festival Beauty Book from Revlon

Festival Beauty Book from Revlon

A simple content-mangaged site with an entry point for a competition. I was responsible for managing and building the site, which consisted of several stages.


Initial launch date: 1 Jul 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API

Revlon B&INTM Beauty Booth

Revlon B&INTM Beauty Booth

A simple site with a competition entry point and social integration. Led and built by myself.


Initial launch date: 27 Jun 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API

#goodlucklewis

#goodlucklewis

Responsible for creating a simple API for the #goodlucklewis microsite. It used the Twitter Phirehose API to grab tweets with the appropriate hashtag and supplied a simple JSON feed for the website to use to calculate the position of the car and the laps completed (per day).


Initial launch date: 26 Jun 2013

Built with: PHP5, Symfony 1.4, JSON, Twitter API, Beanstalk, Phirehose

Social Reporter Social Reporter

Social Reporter

A complex site consisting of multiple stages and competitions with social integration for entry; a voting stage and winners. I led the tech side of the project and built the site.

Multiple facets had to be taken into account with this site as the different competition were often in different stages, and at some points nothing was open; so it was important that the site was never empty.


Initial launch date: 13 Jun 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, Twitter API, Instagram API

NOW TV Movie Fest

NOW TV Movie Fest

For this project I built a simple JSON API which pulled in tweets with a specific set of hashtags and extracted the vines from them for display on the site.


Initial launch date: 3 Jun 2013

Built with: PHP5, Symfony 1.4, JSON, Twitter API, Beanstalk, Phirehose

Suede by Sophia

Suede by Sophia

A simple site with a multi-stage competition with a different prize each week; and containing social and Paypal integration for winning and purchasing shoes. I was responsible for leading the dev side of the project and building the site.


Initial launch date: 28 May 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API

The GL-Class Road Trip The GL-Class Road Trip

The GL-Class Road Trip

A complex site which followed a virtual car on a journey and let people enter and win at different stages by answering a question; culminating in a show down with a ultimate winner.

I was technical lead on this project and build the site using social integration and some nifty cron jobs.


Initial launch date: 24 May 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, AJAX, Email, Automation and security measures

ABSOLUT Choice

ABSOLUT Choice

A simple mobile site with a CMS, a test project for social integration with Symfony2. I led the development and the technical side of the project.


Initial launch date: 3 May 2013

Built with: PHP5, Symfony2, Facebook API

#Tweet4YourTicket #Tweet4YourTicket

#Tweet4YourTicket

I led this complex and time-consuming project which was original divised in two stages.

The first stage was entry via Twitter-aggregation filling the stadium to win virtual tickets giving you a pass to watch the match/ race on NOWTV. This stage was used multiple times with different events and reskinned.

The second stage was an aggregation of statistics and tweets and information about the matches that users could follow on a second stream during the matches in question. This stage was not quite complete when it reached match time; however, technical issues with the stream meant that no-one noticed we were coding furiously to finish as goals were scored!

Initial launch date: 2 Apr 2013

Built with: PHP5, Doctrine, Symfony 1.4, JSON, Twitter API, Beanstalk, Phirehose, Email

JergensĀ® Spring Skin Boutique

JergensĀ® Spring Skin Boutique

I was the technical lead for this simple Facebook application, oversaw and managed the team and did code reviews. Pitching it with development as well.


Initial launch date: 11 Mar 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, Facebook app

Dare to be... Nearly Naked

Dare to be... Nearly Naked

A simple Facebook competition application. Developed and led by myself.


Initial launch date: 26 Feb 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, Facebook app

NOW TV Movie Awards Competition

NOW TV Movie Awards Competition

A simple Facebook application with a pretty animation. This used a randomised function to allocate prizes and allowed users to sign up to NOWTV.


Initial launch date: 22 Feb 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, Facebook app, Unit testing

smart cupid cards smart cupid cards

smart cupid cards

Responsible for the re-skin of the Christmas card app for Valentine's day, with a bit of redevelopment to take account of Facebook breaking changes with sharing with friends.


Initial launch date: 5 Feb 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, dynamic image creation with GD library, mobile, SCSS, jQuery, CSS

Who's On Heart online game Who's On Heart online game

Who's On Heart online game

Responsible for managing the project for HeartFM's Who's On Heart online game; integrating OAuth for authorisation and setting up Facebook actions, plus other bits and bobs of code.

Also responsible for setting up and configuring the server cluster (load balancer, backend server and a trio of application servers); and configuring a Capifony (Capistrano) deploy script to make deploying code over multiple servers easy.

The site was created to work both within the HeartFM framework, on mobile devices and within a Facebook application:

Initial launch date: 7 Jan 2013

Built with: PHP5, Symfony 1.4, Doctrine, OAuth, Facebook Open Graph, Facebook Actions, Facebook, Capifony, Capistrano, Load balanced server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache)

innocent - Healthy Jan 2013 innocent - Healthy Jan 2013

innocent - Healthy Jan 2013

Responsible for managing the project for innocent's Healthy Jan 2013.

Created the info graphic section of the site. This section will be developed into a plugin for use on the main innocent site in addition to this project. Integrated the site with Facebook (including Facebook actions) and created the ability to post customised and personalised info graphics to your wall.

Also responsible for various other bits and bobs including testing and bug fixes.


Initial launch date: 1 Jan 2013

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Actions, Facebook API, dynamic image creation (GD library), SCSS, CSS, HTML5, JQuery, AJAX, mobile

smart christmas cards smart christmas cards

smart christmas cards

Responsible for managing and building the Facebook app (and mobile site) for the smart christmas card creator.

Responsible for creating a mechanic for users to upload their own images for a christmas card and then create various size thumbnails of this image.

Created a personalised, dynamic christmas card based on these user uploaded images or pre-selected smart cars, user entered text and selected images with GD library. Integrated with Facebook to post this image to a user's Facebook timeline or a selected friend's timeline.


Initial launch date: 6 Dec 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, dynamic image creation with GD library, mobile

Redbull #FourByThree Redbull #FourByThree

Redbull #FourByThree

Responsible for creating a reusable plugin which integrates with Phirehose, track a particular keyword and unlocks levels based on how many tweets or on a certain date.

The plugin was used to advertise RedBull's #fourbythree video series, with each level being an exclusive video or a prize. The microsite (including the mobile version) also integrated with the Twitter API to allow users to log into the site to tweet predetermined tweets with the hashtag, and sign up for email updates when a new level is unlocked.

Also responsible for setting up a server to run the site and augmenting the Phirehose plugin to run multiple instances.


Initial launch date: 26 Nov 2012

Built with: PHP5, Symfony 1.4, Doctrine, Mobile, Twitter API + Phirehose, Server setup (PHP, MySQL, Nginx, PHP-FPM, Supervisor, Beanstalk)

Capital's Secret Santa with BlackBerry Capital's Secret Santa with BlackBerry Capital's Secret Santa with BlackBerry

Capital's Secret Santa with BlackBerry

Responsible for managing the project for CapitalFM's 2012 Jingle Bell Ball; and for creating the backend integration. This year's Secret Santa had a custom invite friend mechanic which made use of the Facebook notification API, and unlock codes to allow users to win gifts for themselves.

Responsible for creating a random prize mechanic, which was unit tested with specific attention to avoiding race conditions and ensuring that stocking filter prizes were not recycled. Also set up open graph actions on Facebook to allow the seamless sharing of the gifting and opening of presents.

Also responsible for setting up and configuring the server cluster (load balancer, backend server and a trio of application servers); and configuring a Capifony (Capistrano) deploy script to make deploying code over multiple servers easy.

The site was created to work both within the CapitalFM framework, on mobile devices (including BlackBerry) and within a Facebook application:

Initial launch date: 12 Nov 2012

Built with: PHP5, Symfony 1.4, Doctrine, OAuth, Facebook Open Graph, Facebook Actions, Facebook, Mobile, BlackBerry, Capifony, Capistrano, Load balanced server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache)

Redbull #CultureClash

Redbull #CultureClash

Responsible for creating a reusable plugin which integrates with Phirehose, track a particular keyword and unlocks levels based on how many tweets or on a certain date.

The plugin was used to for Redbull's #CultureClash event. Tweeting unlocked VIP Tickets and exclusive swag. The microsite also integrated with the Twitter API to allow users to log into the site to tweet predetermined tweets with the hashtag, and sign up for email updates when a new level is unlocked.


Initial launch date: 24 Oct 2012

Built with: PHP5, Symfony 1.4, Doctrine, Twitter API + Phirehose

American Street Feasts @FoodNetworkUK American Street Feasts @FoodNetworkUK

American Street Feasts @FoodNetworkUK

Responsible for managing the project, and creating a Twitter and Instagram integration for Andy Bate's Street Feasts in the UK. Dynamically pulling tweets (with images) and instagram photos with vendor hashtags and plotting them on a map; images and vendors were moderated and approved via a CMS.

Also responsible for refining the Google Maps integration for cross browser compatibility and augmenting some of the Javascript templates.


Initial launch date: 4 Oct 2012

Built with: PHP5, Symfony 1.4, Doctrine, JQuery, Google Maps API, Twitter + Phirehose API, Instagram API

Revlon - Just Bitten Kissable Revlon - Just Bitten Kissable

Revlon - Just Bitten Kissable

Responsible for creating the mobile journey and a CMS to manage entries for this simple competition application, which involved users creating a slogan for the latest Revlon Crayola product.

Also responsible for testing and helping out with the styling for the project.


Initial launch date: 27 Sep 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, SCSS, Mobile

Mercedes A-Class Roadshow Mercedes A-Class Roadshow

Mercedes A-Class Roadshow

Responsible for creating, building and styling the first stage of a Facebook app (with mobile site) for the Mercedes A-Class Roadshow (and a backend CMS to moderate entries and manage show dates).

Created the functionality to select an image to enter from Facebook, Instagram or via upload (uploaded to the Rackspace Cloud) - the mobile version had the same (without the upload section). These images could then be moderated and selected to display in a mutil-page gallery.

A later stage was added by another developer to allow images to be voted on.


Initial launch date: 6 Sep 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, OAuth, Facebook Graph API, Rackspace API, Instagram API, SCSS, CSS, MooTools, HTML5, AJAX, mobile

Smart Creators Smart Creators

Smart Creators

Responsible for creating and building both parts of a 2-stage Facebook app.

The first stage allowed users to register and upload a video to enter a competition.

The second stage allowed users to authorise the app and vote for their favourite video from a shortlist. This stage was mobile-enabled. It integrated with videoJS to provide HTML5 video with a fallback - working over all browsers and devices.


Initial launch date: 21 Aug 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, SCSS, MooTools, HTML5, mobile, AJAX

Revlon Colourstay Revlon Colourstay

Revlon Colourstay

Responsible for creating a task and a CMS to collect and manage Instagram entries for a specific hashtag for the Art of Shine competition. These entries, once moderated were displayed in a gallery.

Later, the shortlisted entries could be voted on.


Initial launch date: 10 Aug 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Instagram API, Mobile

innocent Competitions innocent Competitions

innocent Competitions

Responsible for creating and building a reusable competition application for innocent, which integrated with their existing CMS for managing competitions and entries.

Created a management module to setup the competitions, which allowed all aspects to be customised - including content, terms, form fields and requirements.

Also responsible for styling, testing and creating a mobile user journey (responsive design with Facebook integration via the Javascript API).


Initial launch date: 8 Aug 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, SCSS, MooTools, Mobile

Dunhill Voice Dunhill Voice

Dunhill Voice

Responsible for creating and building a multi-lingual Facebook tab and mobile site for Dunhill Voice 2012.

The site was set up to release each video at a different point, and contained a gallery of images. It integrated with videoJS to provide HTML5 video with a fallback - working over all browsers and devices. It was translated into 5 languages.


Initial launch date: 1 Aug 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, multi-lingual, HTML5, mobile, MooTools

ABSOLUT BLANK LIVE ABSOLUT BLANK LIVE

ABSOLUT BLANK LIVE

Responsible for creating a Facebook application for the ABSOLUT BLANK LIVE event. This involved creating a gallery of images from each of the precursor events, an events page, and various competitions. Users could tag themselves in a portrait or as going to an event, which would post as a Facebook action to their wall.

Also responsible for creating a second video competition, where users could comment on a frame of the video to enter the competition.


Initial launch date: 31 Jul 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, CSS, JQuery, AJAX

We All Make the Games We All Make the Games We All Make the Games

We All Make the Games

Responsible for creating and building the McDonalds We All Make the Games Facebook app and mobile site (and a backend CMS to support it).

Integrated with the Facebook Graph API to analyse users' Facebook activity over the past month and categorise them based on it.

Created a dynamic image of the mood meter for emails from a random image and randomly placed tags (with GD library) - mirrored after the styled version on the app.

Implemented the challenges, including various methods of uploading completed challenges to the app - via instagram (gathered using the Instagram API), upload, Facebook, text entry, etc - depending on the type of challenge.

Created the mobile site with swipe between challenges and limited support for entering challenges (excluding file upload).

Whole campaign won Grand Prix at Marketing Society Awards for Excellence 2012. Also won Gold at the 2013 FAB awards.


Initial launch date: 13 Jul 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook, Facebook Graph API, Instagram API, dynamic image creation with GD library, MooTools, SCSS, CSS, HTML5, mobile

Sweet Boutique Sweet Boutique

Sweet Boutique

First project lead. Responsible for organising the project, creating the framework and functionality, managing other developers, and setting up a server for it to run on.

This application involved creating a 2-week period of short prizes draw, culminating in a longer prize draw with only one winner (all winners were picked daily by an automated task). The application was set up to work on both Facebook on the desktop and on mobile devices - including integrating Facebook OAuth for the mobile site (as it is not within Facebook).

Due to its immense success and popularity in June - the Sweet Boutique was reopened in November 2012 for a second phase of competition.


Initial launch date: 7 Jun 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook Open Graph, Facebook, Mobile, MooTools, CSS, Server setup (Nginx, PHP-FPM, APC)

innocent drinks Irish site

innocent drinks Irish site

Responsible for augmenting the existing innocent drinks site to function nicely with multiple sites; and have both shared and distinct content, and templates. Including updating the existing blog import to cope with site-specific content with cross-blog links and images.


Initial launch date: 1 Jun 2012

Built with: PHP5, Symfony 1.4, Doctrine, multi-site

Look Good... Feel Better

Look Good... Feel Better

A simple Facebook tab to be pulled in on many Facebook pages for the Look Good... Feel Better cause. Tab includes a simple tracking link, which changes depending on what Facebook page the tab is on.


Initial launch date: 28 May 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook

Challenge Travis

Challenge Travis

Responsible for helping out with this campaign, from implementing OAuth login to altering mobile styles and javascript.


Initial launch date: 18 May 2012

Built with: PHP5, Symfony 1.4, Doctrine, OAuth, CSS, MooTools

Sheer Blonde

Sheer Blonde

Responsible for creating the schema and mechanic behind the competition for this simple Facebook tab.


Initial launch date: 8 May 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook

ABSOLUT Spirit of London ABSOLUT Spirit of London

ABSOLUT Spirit of London

A gorgeous little microsite created in Symfony and jQuery. I was responsible for blending the Backbone JS site with Symfony, and integrating it with Facebook OAuth and Open Graph actions.

Also responsible for creating a simple CMS to manage content; and several JSON webservices for the jQuery backbone site to retrieve and save data.

Later on, I was responsible for adding new pages and popovers to the Backbone site.


Initial launch date: 30 Apr 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook OAuth, Facebook Open Graph, jQuery, Backbone.js

CapitalFM Summertime Ball 2012 CapitalFM Summertime Ball 2012

CapitalFM Summertime Ball 2012

Responsible for creating the competition microsite (and corresponding CMS) for this year's Summertime Ball - Take Your Seats. This involved integrating with Facebook and Twitter OAuth to register and log in users (pulling in their name and profile picture); integrating with Facebook via an Open Graph action to allow the user to "make some noise"; and processing open graph actions and tweets to unlock prizes and increment the noise meter.

Responsible for augmenting our existing Phirehose integration to use Beanstalk and workers to process incoming tweets, allowing the work to be split over several application servers.

Also responsible for setting up and configuring the server cluster (load balancer, backend server and a couple of application servers); and configuring a Capifony (Capistrano) deploy script to make deploying code over multiple servers easy.


Initial launch date: 25 Apr 2012

Built with: PHP5, Symfony 1.4, Doctrine, OAuth, Facebook Open Graph, Facebook, Twitter, MooTools, Phirehose, Beanstalk, Capifony, Capistrano, Server setup (PHP, MySQL, Nginx, PHP-FPM, APC, Memcache, Supervisor, Beanstalk)

The Collective assignment #1

The Collective assignment #1

Responsible for creating a new bundle in Symfony2 for The Collective's Facebook tab, which integrated with the Facebook SDK via a Symfony2 service to parse the signed request and pull in the user's details.

Also responsible for integrating with MailChimp instead of a standard MySQL database for storing competition entries, and checking whether users had already entered.

Included creating templates and custom form fields in Twig.


Initial launch date: 10 Apr 2012

Built with: PHP5, Symfony2, Twig, MailChimp integration, Facebook SDK

This Water Peace One Day

This Water Peace One Day

Responsible for creating a Facebook tab to allow users to enter a unique code for entry into a daily prize draw. Also responsible for creating a unit test, a mechanic and a series of tasks for picking random winners and prizes, and generating various codes and files.


Initial launch date: 29 Mar 2012

Built with: PHP5, Symfony 1.4, Doctrine, Facebook

innocent kids: The Gang's Garden

innocent kids: The Gang's Garden

Responsible for creating a simple webservice for the flash to interact with. This webservice allowed the flash to create or update a user and unlock seeds and entered them into competitions based on these; it also provided a means for it to upload images. Also responsible for creating an admin interface to allow images to be moderated, and provide a visual representation of the seeds and user data.


Initial launch date: 6 Mar 2012

Built with: PHP5, Symfony 1.4, Doctrine, JSON, XML

innocent drinks UK site innocent drinks UK site

innocent drinks UK site

Responsible for creating a versionned, templated, multi-site and multi-locale CMS with dynamic routing, which was used as the base for the innocent drinks UK site.

Also responsible for creating and integrating various other modules with the CMS to provide other functionality. This included a product management system, a blog, and a career management system.

Also responsible for augmenting a blog import for parsing a Typepad export file to include comments and support multiple blogs.


Initial launch date: 23 Feb 2012

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, AJAX, HTML5, CSS3, SCSS

Absolut London - Facebook tab Absolut London - Facebook tab

Absolut London - Facebook tab

Responsible for creating, coding and styling a Facebook tab for the Absolut London Vodka launch. This tab included a competition on Instagram, which involved integrating with the Instagram API to pull in competition tagged photos, and displayed them in a gallery. The challenge with this tab was the portal type design, where the content was under the portal window, yet still clickable through it.

Also responsible for creating a winner page, which authenticated with Instagram to check if the user had won a prize; and an admin interface to moderate entries and award prizes.

A buy section was added to the site on 22nd March, which involved a simple implementation of a Paypal button with a GeoIP lock.


Initial launch date: 7 Feb 2012

Built with: PHP5, Symfony 1.4, Doctrine, HTML5, CSS3, SCSS, MooTools, Instagram API, OAuth, Facebook

innocent The Big Knit tab innocent The Big Knit tab

innocent The Big Knit tab

Responsible for creating a Facebook tab which allowed users to upload hat tag photos to enter into a weekly competition. Also created a gallery of these uploaded photos, which could be individually viewed, shared and voted for. The photos could be ordered; and the top photos for the week were displayed at the top of the gallery.

Also responsible for creating an admin area to allow for moderation of uploaded images; and view statistics on the competition.


Initial launch date: 31 Oct 2011

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, Facebook

Postcards from the Past

Postcards from the Past

Responsible for creating a Facebook application for River Island in which 3 competitions were run consecutively. Each competition consisted of a clickable postcard, which integrated with the Google Maps API to provide a treasure hunt with hidden objects and popups. Once all objects were found the user could enter the competition.

Also responsible for creating an admin interface for managing competitions and entries.


Initial launch date: 24 Oct 2011

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, Facebook, Google Maps API

innocent fruit machine

innocent fruit machine

Responsible for creating a Facebook app, and a webservice that integrated with a flash fruit machine. The webservice generated a random prize (or supplied a previously unredeemed prize), which the user could gift (via a Facebook invite) or redeem. The redemption of a prize triggered a different mechanic depending on the prize won, prompting the user to enter their details, or generating a link to redeem a coupon. Gifts could also be rejected, which would put them back in the pool.

Also responsible for creating an admin interface to manage prizes and collate statistics on wins.


Initial launch date: 21 Oct 2011

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, Facebook, Couponstar integration

innocent juice tab

innocent juice tab

Responsible for creating a simple Facebook tab with a caption competition for innocent juice. Also responsible for creating an admin interface for managing the captions, and moderating any flagged entries.


Initial launch date: 11 Oct 2011

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, Facebook

innocent Fruit Field Trips

innocent Fruit Field Trips

Responsible for finalising the functionality of a Symfony2 Facebook tab created for innocent drink's Fruit Field trips. This included the build of the tab, the integration with the Facebook API, creating dynamic thumbnail crops from profile pictures, and integrating the part 2 destinations. Also responsible for creating a task to nudge participants via email, and emails for notifying winners.

Part 2 (new destinations) was put live on 6th Oct.


Initial launch date: 22 Sep 2011

Built with: PHP5, Symfony 2, Doctrine 2, Facebook API, JQuery

Logica Sustainability - Offline Tool Logica Sustainability - Offline Tool

Logica Sustainability - Offline Tool

Initially, responsible for creating a content management system for integration with an offline AIR application. The CMS provided functionality to import JSON files, and generate JSON files in a specific format from entered data (in 5 different languages).

For the second part of the project I was responsible for creating a dynamic HTML5 site powered by CSS3, MooTools and JSON (which integrated with animation in an iFrame created by another developer on the team). This HTML5 site was then compiled into an AIR application.

This was initially created on 3rd June.

Initial launch date: 21 Sep 2011

Built with: PHP5, Symfony 1.4, Doctrine, HTML5, CSS3, JSON, i18n

innocent #tweetandeat innocent #tweetandeat

innocent #tweetandeat

Responsible for creating a micro site and Facebook tab for the innocent drinks #tweetandeat campaign. Based around the idea that the more you tweet, the cheaper you eat - and you can download a coupon for money off an innocent veg pot.

Responsible for integrating with Twitter Phirehose via a supervisord process to collect qualifying tweets, and building a moderation backend and various tasks to process the tweets and unlock the coupons (via integration with Couponstar). Also responsible for integrating with the Twitter API to send direct messages to those who subscribed.

This campaign was nominated and shortlisted for several awards.


Initial launch date: 19 Sep 2011

Built with: PHP5, Symfony 1.4, Doctrine, MooTools, Twitter API + Phirehose, Facebook, AJAX, Couponstar integration

CBS: Star Trek

CBS: Star Trek

A simple Facebook tab with a prize draw competition entry form.


Initial launch date: 15 Aug 2011

Built with: PHP5, Symfony 1.4, CSS, Facebook

sfMooToolsFormExtraPlugin

sfMooToolsFormExtraPlugin

My first official contribution back to the open source community, based on the very popular sfFormExtraPlugin (which uses JQuery).

I started out creating a rich text widget using MooEditable. This then segued into creating a datepicker widget using a MooTools Datepicker plugin. And thus, the sfMooToolsFormExtraPlugin was born, with the first two (of hopefully many) widgets.

Creating a symfony plugin was a learning experience for me in many ways. Additionally, I explored how the code for MooTools and its plugins worked, and had the opportunity to contribute further by fixing and improving the MooEditable CleanPaste (pasting from Word) script - a fix which has been integrated back in the original plugin.


Initial launch date: 11 Aug 2011

Built with: PHP5, Symfony 1.4, MooTools, plugin, open source, PEAR

innocent Hungry Grassy Van innocent Hungry Grassy Van

innocent Hungry Grassy Van

Responsible for creating a simple Facebook tab to gather data from people interesting in getting a visit from innocent's Hungry Grassy Van

The tab was updated on the 8th September to display dynamic information about the van's 500 mile journey form London to Glasgow. The tab displayed tagged photos via the Instagram API and pulled in tweets from a twitter search, and blog posts via a custom RSS feed.


Initial launch date: 9 Aug 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, CSS, Facebook, Moderation, Instagram API, Twitter

Red Bull Reporter

Red Bull Reporter

Responsible for ongoing maintenance and code fixes for the Red Bull Reporter site. Also upgraded the site to allow logging in with Twitter, and an improvement of the submission procedure.


Started maintenance: 12 Jul 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, CSS, Twitter API, Facebook Open Graph

Red Bull Flugtag Pun-damonium

Red Bull Flugtag Pun-damonium

Responsible for creating a competition to allow users to win tickets to Flugtag, by submitting and sharing flight related puns. Integrated moderation tools to allow users to report inappropriate puns.


Initial launch date: 6 Jul 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, CSS, Facebook, Moderation

National Citizen Service

National Citizen Service

Responsible for the behind the scenes functionality to allocate candidates to providers, and provide access for the providers to export only the applicants assigned to them.

Also, responsible for updating the Facebook tab functionality to make it dynamically display which areas had spaces available still.


Initial launch date: 30 Jun 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, CSS

Jergens - Fantastic-O-Meter Jergens - Fantastic-O-Meter

Jergens - Fantastic-O-Meter

The initial Jergens Feel Fantastic Facebook tab was updated mid campaign to allow people to rate their life.

Responsible for using HTML5 and Canvas to take the answers given a dynamically create a Fantastic-O-Meter, calculating mouse position on the fly to display appropriate tooltips with hints on how the user was doing with each area of their life.

The Meter was re-introduced on 15th August.


Initial launch date: 15 Jun 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, HTML5 and Canvas, MooTools, CSS

innocent Games innocent Games innocent Games

innocent Games

Part of the innocent Juice website, but a separate project and competition.

Responsible for augmenting the high score webservice to enable partial personal high scores to be retrieved, and to find out the player's position on the leaderboard when a score is submitted.

Also responsible for setting up the game hub and integrating the flash games into the site.

Game 1 - Orange Harvest - launched 10th June
Game 2 - Catapulp - launched 28th June
Game 3 - Keep 'em peeled - launched 2nd Aug


Initial launch date: 10 Jun 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, custom webservice, Facebook Javascript SDK, CSS

CapitalFM Summertime Ball 2011 CapitalFM Summertime Ball 2011

CapitalFM Summertime Ball 2011

The road trip website consisted of a series of multi-region queues created by a materialised view dynamically updated each time a user answered a question or entered a queue jump code.

Responsible for creating, maintaining and styling the website to display the queue and crafting additional interactions, such as spot prizes. The queue page itself consisted of an AJAX driven animated queue, using a dynamically generated large profile pictures (temporarily cached from Facebook).

The competition (and website) closed on the 6th June.


Initial launch date: 17 May 2011

Built with: PHP5, Symfony 1.4, Doctrine, Postgres, MooTools, Facebook Open Graph, Nginx

Jergens - Feel Fantastic Survey Jergens - Feel Fantastic Survey Jergens - Feel Fantastic Survey

Jergens - Feel Fantastic Survey

Responsible for creating several Facebook tabs containing multi-page forms enhanced with Javascript. The tabs integrated with Facebook open graph to pull in user data.

Depending on when the user answered the initial survey and subsequent follow-ups, different versions of the tab were presented.

The tab was paired with an HTML email campaign to encourage people to leave feedback about the experience.

Also, responsible for creating an admin interface to allow the compilation of the results of the surveys.

The initial survey - launched 16th May
The week 2 survey - launched 21st June
The final (week 4) survey - launched 5th July
The tab closed 29th July


Initial launch date: 16 May 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, CSS, MooTools, Facebook Open Graph, MailChimp, HTML emails

Red Bull Flugtag

Red Bull Flugtag

Responsible for creating a simple Facebook tab in an iframe. Integrates Google Analytics for download tracking.


Initial launch date: 20 Apr 2011

Built with: PHP5, Symfony 1.4, Facebook, Google Analytics, CSS

Red Bull Energy Station Red Bull Energy Station

Red Bull Energy Station

Responsible for creating an infinite scrolling site for Red Bull Energy Station, which consists of random dynamic content pulled in via AJAX as the user scrolls down the site.

Additionally, a webservice (and Facebook integration) was developed for a Flash game called Elevator Pitch (added to the site on 4th May) to enable random questions and answers to be pulled from a pool; and to store scores.


Initial launch date: 10 Mar 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, MooTools, Facebook Open Graph, CSS

innocent juice innocent juice

innocent juice

Responsible for creating the innocent juice hub site; which consists of a simple but effective dynamic page and content management system. I integrated with a flash game via a custom-built webservice to provide prizes and record user activity, this service also integrated with a 3rd party API to provide coupons for innocent juice to winners.

Also responsible for updating the innocent juice website for their Royal Wedding street party competition in April (11-26th).


Initial launch date: 24 Feb 2011

Built with: PHP5, Symfony 1.4, Doctrine, MySQL, MooTools, custom webservice, 3rd party API integration, Facebook Open Graph, Twitter, CSS