Projects

Decanter Fine Wine Reviews

As it turns out, there's more to wine than just the colour.

Decanter Fine Wine Reviews was a growth project by TimeInc to provide the Decanter team a CMS capable of handling the complex data structures that wines require. The project consisted of 3 sub-projects:

  • A 'Wine API' that will provide an interface to the database
  • A 'Wine CMS' that will provide Decanter with a UI to edit the database (via the API)
  • The "Wine Reviews" section to display public data.
  • Wine API in PHP 7.1, Symfony 3 with ElasticSearch, AWS APIGateway and AWS RDS

  • Wine CMS in React with Redux

  • Wine Reviews in a Symfony Components micro-framework and React

decanter fine wine review

Activ Financial Intranet

When I joined Activ, their Intranet was being written by C++ developers in PHP. My task was to transform their web tools into a fast, robust and maintainable codebase. The resulting system was a stable codebase in which to build on utilising:

  • Object Oriented PHP

    Making use of the advantages of MVC principles, the codebase was efficient and maintainable. Recently, migration to the Symfony2 framework started, decreasing overall development time and providing easy testability for complex and critical tools.

  • MySQL

    Due to Activ being a global company, the main intranet was mirrored around the world using MySQL's inbuild replication. My job encompassed taking charge and responsibility for the entire replication network. I worked extensively with the database structure to enforece normalisation and correct indexing to make the site responsive and up-to-date wherever it was accessed.

  • HTML, CSS and JavaScript

    Creating a clean, fast and intuitive UI was critical as the company relied on the intranet to maintain and monitor over 3500 servers wordwide. This was achieved by utilising the latest in web standards. Amongst others, these were:

    • jQuery library
    • AJAX
    • CSS3
    • AngularJS framework
    • Bootstrap CSS and JS components
  • Bash and Python (with Django)

    Bash and Python was used throughout the Intranet for scripting in the back end for performing tasks that were not suitable for PHP.

    Python's Django MVC framework was also utilised in the company's project management tool.

  • Source Control

    Due to the high volume of changes made to the vast codebase (stored in SVN and GIT), it soon became clear that proper version management and task tracking was needed. I solely designed, developed and implemented a PHP and Python based SVN release tracker, that interacted with SVN via commit hooks. The tool was able to handle multiple tiers of release stages along with merging release and trunk branches, solving conflicts, creating release tags and generating release notes with detailed documentation and blame history.

code

Fifa Ultimate Team Market Data Analyser

Written as a personal project based on requests from the community, the system interacts with EASport's Fifa14 Ultimate Team trading game. The system is implemented using a Symfony2, Doctrine2 and Twig back end; A HTML5, CSS3 and JavaScript using jQuery, AngularJS, WebSockets and Bootstrap in the front end and a MySQL backend.

  • Latest Web Technologies

    The system provides up-to-date real time data based on server events by pushing data to clients through WebSockets.

    The socket server is written in Ratchet and allows client to client, server to client and client to server persistance through using the ZeroMQ transport layer.

    To provide a seemless experience, AngularJS was chosen as to provide maxium speed due to reduced HTTP overhead and page sized by only requesting JSON from the WebSocket server and AJAX API calls.

  • Market Data

    The tool tracks the in-game auction house by scraping their web facing API, detecting:

    • Market peaks, troughs and trends
    • Meaningful and relevant history by rolling windows and percentiles
    • Transfer analysis, predicting potential peaks based on future form
    • Functionality to trade items based on market rates and thresholds
fut-graph
fut-scraper
fut-websockets