Abdullah Ali

Previous Employers

Just some of my previous employers
Jobsite
Photobox
Mobile Interactive Group
City University

University

Computer Science with Games Technology (BSc Hons) - City University
Year 1
Software Engineering86.0%
Programming in Java91.4%
Mathematics for Computing93.4%
Computation & Reasoning98.6%
Business Systems92.0%
Systems Architecture86.8%
Year 2
Data Structures & Algorithms93.2%
Network & Operating Systems99.7%
Programming in C++97.6%
Object-Oriented Design95.5%
Work Based Project97.0%
Games Technology90.6%
Professional Development90.7%

YEAR 3

Dissertation84.0%
Advanced Databases92.5%
Electronic Commerce91.5%
Professional Experience86.0%
Artificial Intelligence85.5%
Advanced Games Technology85.5%
Introduction to Data Mining86.0%
Overall

Class I

Overall Mark90.04%
Date of AwardJan 2015
Overall Credits360

A little about me

A summary of my skills (in Ruby, of course  )
module ComputerScientist
  module Skill
    module Level
      EXPERT = 4
      ADVANCED = 3
      INTERMEDIATE = 2
      BEGINNER = 1
    end

    # GIT ##############################################
    module Git
      attr_accessor :git_years_experience, :is_merge_conflict_master, :is_branching_ninja

      def has_git_experience?
        self.git_years_experience > 1 && self.is_merge_conflict_master && self.is_branching_ninja
      end
    end

    # BACKEND ##########################################
    module BackEnd
      attr_accessor :previously_used_gems

      BACK_END_SKILLS = [
        :ruby, :ruby_on_rails, :rspec_or_similar, :cucumber_or_similar,
        :nosql, :unix, :nginx, :capistrano, :unicorn, :heroku
      ]

      BACK_END_SKILLS.each do |skill|
        define_method("#{skill}_level=") do |level|
          if level.is_a?(Integer) && level >= Level::BEGINNER && level <= Level::EXPERT
            instance_variable_set("@#{skill}", level)
          else
            raise YouMadeABooBoo, "You must provide a valid level value"
          end
        end

        define_method("#{skill}_level") do
          instance_variable_get("@#{skill}")
        end
      end

      def backend_score
        BACK_END_SKILLS.collect do |skill|
          self.send("#{skill}_level").to_i
        end.inject(:+)
      end
    end

    # TEAMPLAYER #######################################
    module TeamPlayer
      attr_accessor :is_friendly, :has_good_communication_skills, :is_good_listener, :is_respectful
      def team_player?
        self.is_friendly && self.has_good_communication_skills && self.is_good_listener && self.is_respectful
      end
    end
  end

  class RubyDeveloper
    include ::ComputerScientist::Skill::Git
    include ::ComputerScientist::Skill::BackEnd
    include ::ComputerScientist::Skill::TeamPlayer

    def initialize(options={})
      options.each { |k,v| method("#{k}=").call(v) }
    end

    def has_required_experience?
      self.team_player? && self.has_git_experience? && self.frontend_score > 0 && self.backend_score > 0
    end
  end

  class YouMadeABooBoo < StandardError;;end
end

class AbdullahClass < ComputerScientist::RubyDeveloper

  def initialize
    super
    giggity_giggity_goo
    im_bringing_sexy_back
    team_lets_get_this_yeah_yeah_yeah
  end

  private

  # Git Module
  def giggity_giggity_goo
    @git_years_experience = 2
    @is_merge_conflict_master = true
    @is_branching_ninja = true
  end

  #BackEnd Module
  def im_bringing_sexy_back
    self.ruby_level = 3
    self.ruby_on_rails_level = 3
    self.rspec_or_similar_level = 3
    self.cucumber_or_similar_level = 1
    self.nosql_level = 2
    self.unix_level = 3

    self.nginx_level = 1
    self.capistrano_level = 3
    self.unicorn_level = 1
    self.heroku_level = 1

    self.previously_used_gems = [
      # server
      :god, :whenever, :capistrano, :passenger, :foreman, :heroku,

      # backend
      :resque, :redis, :airbrake, :httpary, :transitions,

      # auth
      :cancan, :devise,

      # test
      :factory_girl, :rspec, :simplecov, :capybara, :timecop, :sourcify
    ]
  end

  # TeamPlayer Module
  def team_lets_get_this_yeah_yeah_yeah
    @is_friendly = true
    @has_good_communication_skills = true
    @is_good_listener = true
    @is_respectful = true
  end
end
  

Experience

My most recent employment opportunities
  • 2017
  • Senior Full Stack Developer – Contract

    @ JobSite / TotalJobs / StepStone

    FEB 2016 - CURRENT

    NodeJS and Ruby on Rails

    Extensive full-stack experience in object-oriented, functional programming and web development using various technologies, most notably NodeJS ES6 (promises, streams), Ruby on Rails, Clojure and Scala

    Writing highly efficient code which leverages core strengths in both SQL and NoSQL databases such as MySQL, Aurora DB, PostgreSQL, Cassandra DB, ScyllaDB, Redis, ElasticSearch and MongoDB

    Using container technologies (Docker) to build self-contained software which can be deployed with a high degree of confidence

    Designing lean software components which are highly decoupled to allow for a reliable microservices architecture

    Daily deployments to Live and CI servers using Jenkins

    Writing well-tested and documented code using TDD and BDD

    Developing system infrastructure using AWS’ S3 and EC2

  • Senior Software Engineer

    @ Photobox / Moonpig / Sticky9

    JUL 2015 - FEB 2016

    NodeJS and Ruby on Rails

    Developing full-stack, contained (Docker) microservies and backend APIs in NodeJS and Ruby on Rails

    Writing clean, maintainable and efficient code using TDD

    Working in an Agile team to lead backend system along with one other developer

    Participating in code reviews using GitHub

    Using background jobs/queues (Sidekiq, RabbitMQ) on an AWS stack to process jobs asynchronously

  • Ruby on Rails Developer

    @ Simply Business

    FEB 2015 - JUL 2015

    Overhauling the company's main financial system tracking and payment consolidation using Ruby on Rails

    Agile development, weekly card grooming sessions, TDD: RSpec, Cucumber, Gherkin and Pair Programming

  • Ruby on Rails Developer – Contract

    @ City University London

    JAN 2014 - FEB 2015

    Developed web-scraping services and APIs using NodeJS and Ruby on Rails to analyse software vulnerability data

    Turned dissertation project into a research tool to be used by the centre of Software Reliability and university professors for their on-going research

    Worked with various supervisors and professors on a frequent basis to ensure project requirements are met

  • Ruby on Rails Developer

    @ Mobile Interactive Group / Velti

    APR 2012 - JUN 2014

    The main provider for SMS campaigns for ITV channel (Britain's Got Talent Red Nose Day)

    Building highly scalable Mobile Payment APIs for Mobile/SMS Campaigns as well as Donation Systems

    Agile Development, Test Driven Development, RSpec

    Frequent deployment to remote servers and tested though CI

    An instrumental developer in JustTextGiving by Vodafone. Concurrent queuing using Resque and Upstart to monitor the queues with MySql and Redis databases

    A key developer in daily development of new features and maintenance of some the company's most widely used payment solutions with over 1 million daily transactions

  • Consultant Software Engineer

    @ Zaggora

    JAN 2012 - APR 2012

    The UK's leading activewear and sportswear clothing company exclusively for ladies

    Primary responsibilities included formulating system concepts as well as designing code logic and implanting the checkout system

    Acted as the project owner, formalising system requirements and communicated them between business analysts and an out sourced technology company

  • Application Developer

    @ Hackney Council Corporate IT

    FEB 2011 - JAN 2012

    Corporate and Financial Systems

    Developed various systems using C# and .NET technologies - customising main council systems as well as console scripts for background jobs

    Assist in maintaining test plans and reporting them to team leader

  • Game Developer

    @ PlayMob

    APR 2010 - FEB 2011

    A technology company that integrates charity campaigns in game using micro-payments.

    Developed and formalised the new system requirements that need to be captured in UML semantics.

    Developed the initial system prototypes using Unity3D in JavaScript and C#

  • Want to know more?

What am I looking for?

I love to build and marvel upon high performance applications! High availability and high throughput!

I enjoy working on Backend tasks and writing efficient code

I especially love learning and building different ways of writing secure APIs, working in-depth with AWS

I want to gain more DevOps knowledge – anywhere where I can further my skillset.

New technologies, hackdays and conferences!

Interests

I have worked with many technologies and would love to work with many more. Here are just a few.

Testimonials

I have worked with various of companies. Check what my awesome previous managers are saying about me