Posts

Showing posts from March, 2013

Uber's Michelangelo vs. Netflix's Metaflow

  Uber's Michelangelo vs. Netflix's Metaflow Michelangelo Pain point Without michelangelo, each team at uber that uses ML (that’s all of them - every interaction with the ride or eats app involves ML) would need to build their own data pipelines, feature stores, training clusters, model storage, etc.  It would take each team copious amounts of time to maintain and improve their systems, and common patterns/best practices would be hard to learn.  In addition, the highest priority use cases (business critical, e.g. rider/driver matching) would themselves need to ensure they have enough compute/storage/engineering resources to operate (outages, scale peaks, etc.), which would results in organizational complexity and constant prioritization battles between managers/directors/etc. Solution Michelangelo provides a single platform that makes the most common and most business critical ML use cases simple and intuitive for builders to use, while still allowing self-serve extensibi...

Ruby notes

carlhuda janus dotfiles repo - create one ( for .bash, .bash_profile, .vimrc etc) e.g. gary bernhardt - github drb - https://github.com/garybernhardt/dotfiles rc - resource configuration intellisense vim - supertab pry, interactive_editor - irb tools

Getting a ruby/rails environment setup the easy way

Following directions in http://railscasts.com/episodes/292-virtual-machines-with-vagrant , I came up with an issue where vagrant box couldn't ping google, and therefore couldn't d/l packages. solution : http://askubuntu.com/questions/238040/how-do-i-fix-name-service-for-vagrant-client Also,  trouble with nokogiri and/or pg when you do 'bundle update' ?  Checkout http://nokogiri.org/tutorials/installing_nokogiri.html and/or http://stackoverflow.com/questions/6040583/unable-to-install-pg-gem-on-ubuntu-cant-find-the-libpq-fe-h-header .

Notes on Effective Java 2nd Edition

Chapter 3 - Methods Common to All Objects   Item 8 : Obey the general congract when overriding equals - page 33 If you decide to implement equals, make sure it is reflexive: for all x, x.equals(x) symmetric: for all x & y, x.equals(y) iff y.equals(x) transitive: for all x, y, z, if x.equals(y) and y.equals(z), then x.equals(z) must be true consistent: for all x & y, multiple invocations of x.equals(y) return the same result provided nothing used in equality is changed in either x or y for all x, x.equals(null) must return false Item 9 : Always override hashCode when you override equals Item 10 : Always override toString Item 11 : Override clone judiciously Item 12 : Consider implementing Comparable Chapter 4 - Classes and Interfaces   Item 13 : Minimize the accessibility of classes and members accessibilities private package-private (default) protected public classes with public mutable fields are not thread-safe Item 14 : In public cla...