Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 144 lines (113 sloc) 5.023 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
# encoding: utf-8

require "active_support"
require "active_record"


module Skills
  def skills
    {
      :direction => %w(User_Experience_Design Sound_Design Product_Design
Behaviour_Design Systems_Engineering Startup_Consulting
),
      :programming_languages => %w(Ruby Python Node PHP Scala Cpp_openFrameworks Java_Processing Actionscript3),
      :development_frameworks => %w(Rails Django Zend),
      :database => %w(MySQL Postres SQLite MongoDB Redis),
      :testing => %w(Test::Unit MiniTest RSpec Shoulda
Cucumber Selenium
),
      :orms => %w(ActiveRecord Sequel Mongoid MongoMapper),
      :front_end => %w(Actionscript Javascript CSS HTML
OpenFrameworks Processing WebGL
Backbone CoffeeScript
),
      :scm => %w(Git Perforce Subversion),
      :web_servers => %w(Nginx Apache),
      :app_servers => %w(Merb Phusion Passenger Mod_php WSGI)

    }
  end
end


module Experience
  def self.included(base)
    base.extend Skills
   
    class << base
      def experience
        jobs = []

        jobs << { :company => "flyingoctopus",
                  :industry => "Event Management Company, Installation and Sound Art, Interactive Visuals",
                  :roles => ["Creative Director"],
                  :when => (5.year.ago...Time.now.to_s) }
        
        jobs << { :company => "Hybridity",
                  :industry => "Record Label, Installation and Sound Art, Interactive Visuals & Events",
                  :roles => ["Technical Director", "Consultant"],
                  :when => (1.year.ago...Time.now.to_s) }
                  
        jobs << { :company => "Coverall Crew",
                  :industry => "Software as a Service, RoR Dojo",
                  :roles => ["Technical Design", "Technical Lead"],
                  :when => (3.year.ago...2.months.ago) }
                  
        jobs << { :company => "Blitzoo Games Inc.",
                  :industry => "Online Social Gaming",
                  :roles => ["Software Lead", "Platform Specialist"],
                  :when => (3.years.ago...2.year.ago) }

        jobs << { :company => "Microsoft",
                  :industry => "Online Social Gaming, Platforms Expert, Computer Vision Expert",
                  :roles => ["Software Engineer 2", "Platform Specialist", "User Experience Designer"],
                  :when => (4.5.years.ago..3.years.ago) }


        jobs << { :company => "BigPark",
                  :industry => "Video Gaming",
                  :roles => ["User Experience Designer", "Software Developer", "Sound Designer"],
                  :when => (6.years.ago..4.years.ago) }

        # TODO: add previous positions on request

        jobs
      end
    end
  end
end



class VincentVanHaaff < ActiveRecord::Base
 
  include Experience
  extend Skills
 
  has_one :passion, :through => "computing"
  has_many :skills, :through => "experience", :include => "practice"
  has_many :projects, :through => "github",
                          :foreign_key => "github.com/flyingoctopus"
 
  validates_presence_of :innovation
  validates_presence_of :learning_opportunities
  validates_presence_of :friendly_team
  validates_presence_of :pair_programming
 
  def self.objectives
    begin
      returning Array.new do |objs|
        objs << "Further develop my development skills"
        objs.push "Have fun while contributing to some smart people's growth plans"
      end
    rescue Exception => e
      puts e
      # TODO: retry harder
    end
  end
 
  def self.contact
    `open mailto:##{first_name.downcase}@##{last_name.downcase}.com`
  end
 
  def self.inspect
    who << "
I am a passionate designer/developer with nearly ten years of commercial experience
and full-stack skills in the design, development and maintenance of modern,
user centered design. I also create engaging experiences for installation and
video games on both the web and console, with a strong interest in performance,
engagement, clean code, and a pension for enjoying one's day.

Besides work, I am a co-founder of Vancouver Maker Faire as well as Vancouver Hackspace,
educator, and artist while living in Vancouver with my cat, Lord Nibbler.
I love climbing, cycling, good eats, and good times!"
  end
 
  def self.method_missing(method, *args, &block)
    if method =~ /^reference$/
      raise StandardError, "Talk to me first!"
    else
      puts "Got any questions about #{method} (#{args.join(', ')})?" \
      " then contact me!"
      contact
    end
  end
 
  private

  def self.returning(value)
    yield(value)
    value
  end

end
Something went wrong with that request. Please try again.