First, create the interface as a “mixin” (a Ruby module that will be included into another). module Sociable @@must_have = [:smile, :feign_interest, :paraphrase, :laugh_at_bad_jokes] class << self def included (b) @@must_have.each do |m| raise NotImplementedError, "’#{b}’ must implement the ‘#{m}’ method" unless b.method_defined? m end end end end Here you can see we have a [...]
So, Google has finally had enough of the hostile business environment in China and has decided to leave. Actually, Google gave the CCP an ultimatum (one that the CCP would never accept) which is to allow Google to operate uncensored in China or they will leave. This is such an explosive move by Google that [...]