Holler - Portfolio
- Jo Carter (she/ they)
- Head of Engineering, London UK (Remote)
- work@jocarter.co.uk
- Connect on LinkedIn
- Find me on Github
- My colleagues' recommendations
- My CV (download (pdf 95kb))
There are 68 examples of my work in this section.
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:
- Russia - innocentdrinks.ru (2nd June)
- France - innocent.fr (4th Sept)
- Sweden - innocentdrinks.se (4th Sept)
- Denmark - innocentdrinks.dk (29th Sept)
- Netherlands - innocentdrinks.nl (29th Sept)
- Belgium - fr.innocentdrinks.be (French) and nl.innocentdrinks.be (Dutch) (17th Oct)
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
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
- UK - innocentfoundation.org (20th Dec 2013)
- France - lafondationinnocent.fr (16th May 2014)
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
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.
- UK - chainofgood.co.uk (19th Dec 2013)
- Ireland - chainofgood.ie (16th Jan 2014)
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
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
#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
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
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
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
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
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
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
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
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
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
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
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!
- Iteration 1, Part 1: 2nd April - tweet4yourticket.com
- Part 2: 8th April (live stats)
- Iteration 2: 1st May - nowtvcatchthematch.com
- Iteration 3: 22nd May - nowtvwatchtherace.com
Initial launch date: 2 Apr 2013
Built with: PHP5, Doctrine, Symfony 1.4, JSON, Twitter API, Beanstalk, Phirehose, Email
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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