SlideShare une entreprise Scribd logo
1  sur  86
Around

Hello World
         in   30 Days

   David Eisinger // @deisinger
 DevNation Chicago // May 15, 2010
Around “Hello World” in 30 Days




    1. The Motivation
    2. The Methods
    3. The Mindset
    4. The Moral
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days              1. The Motivation




                                  About Me
Around “Hello World” in 30 Days          1. The Motivation




                              Falling behind
Around “Hello World” in 30 Days          1. The Motivation




                              Falling behind
Around “Hello World” in 30 Days            1. The Motivation




                                  O NOES
                              Falling behind
Around “Hello World” in 30 Days             1. The Motivation




                          Not on the job.
Around “Hello World” in 30 Days          1. The Motivation




                            Keeping Up
Around “Hello World” in 30 Days               1. The Motivation




                                  The Great
                                  Demotivator
Around “Hello World” in 30 Days          1. The Motivation




                                    I love
                                  this town.
Around “Hello World” in 30 Days




     1. The Motivation
     2. The Methods
     3. The Mindset
     4. The Moral
Around “Hello World” in 30 Days            2. The Method




                             The Project
Around “Hello World” in 30 Days          2. The Method




                       Making the list
Around “Hello World” in 30 Days                                 2. The Method




     The List
         Cassandra                10. HTML5       20. ooc
    1.    Chrome Extensions       11. Io          21. Redis
    2.    Clojure                 12. Jekyll      22. Riak
    3.    CoffeeScript            13. jQTouch     23. Scala
    4.    CouchDB                 14. Lua         24. Scheme
    5.    CSS3                    15. MacRuby     25. Sinatra
    6.    Django                  16. Mercurial   26. Squeak
    7.    Erlang                  17. MongoDB     27. Treetop
    8.    Go                      18. Node.js     28. VIM
    9.    Haskell                 19. OCaml       29. ZSH
Around “Hello World” in 30 Days                                 2. The Method




     Thirteen Languages
    1.   Cassandra                11. HTML5       21. ooc
    2.   Chrome Extensions        12. Io          22. Redis
    3.   Clojure                  13. Jekyll      23. Riak
    4.   CoffeeScript             14. jQTouch     24. Scala
    5.   CouchDB                  15. Lua         25. Scheme
    6.   CSS3                     16. MacRuby     26. Sinatra
    7.   Django                   17. Mercurial   27. Squeak
    8.   Erlang                   18. MongoDB     28. Treetop
    9.   Go                       19. Node.js     29. VIM
    10. Haskell                   20. OCaml       30. ZSH
Around “Hello World” in 30 Days                                     2. The Method




     Thirteen Languages
    1.   Cassandra                11. HTML5           21. ooc
    2.   Chrome Extensions        12. Io              22. Redis
    3.   Clojure        x         13. Jekyll          23. Riak
    4.   CoffeeScript             14. jQTouch         24. Scala
    5.   CouchDB                  15. Lua             25. Scheme         x
    6.   CSS3                     16. MacRuby         26. Sinatra
    7.   Django                   17. Mercurial       27. Squeak
    8.   Erlang         x         18. MongoDB         28. Treetop
    9.   Go                       19. Node.js         29. VIM
    10. Haskell         x         20. OCaml       x   30. ZSH
Around “Hello World” in 30 Days                                 2. The Method




     Five Datastores
    1.   Cassandra                11. HTML5       21. ooc
    2.   Chrome Extensions        12. Io          22. Redis
    3.   Clojure                  13. Jekyll      23. Riak
    4.   CoffeeScript             14. jQTouch     24. Scala
    5.   CouchDB                  15. Lua         25. Scheme
    6.   CSS3                     16. MacRuby     26. Sinatra
    7.   Django                   17. Mercurial   27. Squeak
    8.   Erlang                   18. MongoDB     28. Treetop
    9.   Go                       19. Node.js     29. VIM
    10. Haskell                   20. OCaml       30. ZSH
Around “Hello World” in 30 Days                                 2. The Method




     Five Web Frameworks
    1.   Cassandra                11. HTML5       21. ooc
    2.   Chrome Extensions        12. Io          22. Redis
    3.   Clojure                  13. Jekyll      23. Riak
    4.   CoffeeScript             14. jQTouch     24. Scala
    5.   CouchDB                  15. Lua         25. Scheme
    6.   CSS3                     16. MacRuby     26. Sinatra
    7.   Django                   17. Mercurial   27. Squeak
    8.   Erlang                   18. MongoDB     28. Treetop
    9.   Go                       19. Node.js     29. VIM
    10. Haskell                   20. OCaml       30. ZSH
Around “Hello World” in 30 Days                                 2. The Method




     Seven Others
    1.   Cassandra                11. HTML5       21. ooc
    2.   Chrome Extensions        12. Io          22. Redis
    3.   Clojure                  13. Jekyll      23. Riak
    4.   CoffeeScript             14. jQTouch     24. Scala
    5.   CouchDB                  15. Lua         25. Scheme
    6.   CSS3                     16. MacRuby     26. Sinatra
    7.   Django                   17. Mercurial   27. Squeak
    8.   Erlang                   18. MongoDB     28. Treetop
    9.   Go                       19. Node.js     29. VIM
    10. Haskell                   20. OCaml       30. ZSH
Around “Hello World” in 30 Days              2. The Method




                                  The Hour
Around “Hello World” in 30 Days      2. The Method




                  The Buddy System
Around “Hello World” in 30 Days              2. The Method




                                  The Fold
Around “Hello World” in 30 Days              2. The Method




                                  The Fold
Around “Hello World” in 30 Days              2. The Method




                                  The Fold
Around “Hello World” in 30 Days          2. The Method




   WTF’s a fold?

   # sum an array of numbers
   [1, 2, 3, 4, 5].inject {|sum, i| sum + i }
   # => 15
Around “Hello World” in 30 Days          2. The Method




   WTF’s a fold?
    # collect an array of squares
    [1, 2, 3, 4, 5].inject([]) do |coll, i|
        coll + [i * i]
    end
    # => [1, 4, 9, 16, 25]
Around “Hello World” in 30 Days             2. The Method




   C0ffeeScript
    fold: (values, lambda, init...) ->
      if init[0]?
        result = init[0]
      else
        result = values[0]
        values = values[1..values.length]

       for value in values
         result = lambda(result, value)

       result
Around “Hello World” in 30 Days        2. The Method




   C0ffeeScript

    sum: (values...) -> fold values,
      (a, b) -> a + b

    x: sum 1, 2, 3, 4, 5

    // x == 15
Around “Hello World” in 30 Days                            2. The Method




   C0ffeeScript
  (function(){
    var fold;
    var __slice = Array.prototype.slice;
    fold = function fold(values, lambda) {
      var _a, _b, _c, _d, init, result, value;
      init = __slice.call(arguments, 2, arguments.length - 0);
      if ((typeof (_a = init[0]) !== "undefined" && _a !== null)) {
        result = init[0];
      } else {
        result = values[0];
        values = values.slice(1, values.length + 1);
      }

        ...
Around “Hello World” in 30 Days            2. The Method




   Lua
    function fold(values, lambda, init)
      index, value = next(values, nil)

        if init then
          result = init
        else
          result = value
          index, value = next(values, index)
        end
Around “Hello World” in 30 Days   2. The Method




   Lua
Around “Hello World” in 30 Days            2. The Method




   Lua
        while index do
          result = lambda(result, value)
          index, value = next(values, index)
        end

      return result
    end
Around “Hello World” in 30 Days             2. The Method




   Lua
    function sum(values)
      return fold(values, function (a, b)
        return a + b end)
    end

    -- sum the set of numbers
    sum({1, 2, 3, 4})
Around “Hello World” in 30 Days            2. The Method




   Lua
   function map(values, lambda)
     return fold(values, function (c, i)
       c[i] = lambda(i)
       return c end,
     {})
   end

   -- get the list of squares
   map({1, 2, 3, 4}, function (x)
   	 return x * x end)
Around “Hello World” in 30 Days                    2. The Method




   Scheme

 (define fold
   (lambda (arr f result)
     (cond
       ((null? arr) result)
       (else (fold (cdr arr) f (f result (car arr)))))))
Around “Hello World” in 30 Days                        2. The Method




   Scheme

 (define fold
   (lambda (arr f . result)
     (cond
       ((and (null? arr) (null? result) `()))
       ((null? arr) (car result))
       ((null? result) (fold (cdr arr) f (car arr)))
       (else (fold (cdr arr) f (f (car result) (car arr)))))))
Around “Hello World” in 30 Days                2. The Method




   Scheme

 > (fold `(1 2 3 4) (lambda (x y) (+ x y)))
 10

 > (fold `(1 2 3 4)
     (lambda (squares x) (cons (* x x) squares)) `())
 (16 9 4 1)
Around “Hello World” in 30 Days          2. The Method




   Erlang

    -module(fold).
    -export([fold/2, fold/3]).

    fold([First | Rest], Fun, Result) ->
      fold(Rest, Fun, Fun(Result, First));
    fold([], Fun, Result) ->
      Result.
Around “Hello World” in 30 Days   2. The Method




   Erlang
Around “Hello World” in 30 Days          2. The Method




   Erlang
    fold([First | Rest], Fun) ->
      fold(Rest, Fun, First);
    fold([], Fun) ->
      [].

    % > fold:fold([1,2,3], fun(Sum, Item) ->
    	 	 	 	 Sum + Item end).
    % 6
Around “Hello World” in 30 Days     2. The Method




                                  The
                                  Blog
Around “Hello World” in 30 Days




     1. The Motivation
     2. The Methods
     3. The Mindset
     4. The Moral
Around “Hello World” in 30 Days             3. The Mindset




                                  Mastery
Around “Hello World” in 30 Days          3. The Mindset




                                  Flow
Around “Hello World” in 30 Days   3. The Mindset
Around “Hello World” in 30 Days          3. The Mindset




                                  Grit
Around “Hello World” in 30 Days                  3. The Mindset




                            Intelligence
                      (Incremental vs. Entity)
Around “Hello World” in 30 Days          3. The Mindset




                                  Hard Work
Around “Hello World” in 30 Days




     1. The Motivation
     2. The Methods
     3. The Mindset
     4. The Moral
Around “Hello World” in 30 Days        4. The Moral




                   Biggest Surprise:
Around “Hello World” in 30 Days        4. The Moral




                   Biggest Surprise:

      CoffeeScript
Around “Hello World” in 30 Days   4. The Moral




        Biggest Disappointment:
Around “Hello World” in 30 Days   4. The Moral




        Biggest Disappointment:

                CouchDB
Around “Hello World” in 30 Days         4. The Moral




                     Biggest Success:
Around “Hello World” in 30 Days         4. The Moral




                     Biggest Success:

                        Erlang
Around “Hello World” in 30 Days          4. The Moral




                           Most Value:
Around “Hello World” in 30 Days          4. The Moral




                           Most Value:

                            Redis
Around “Hello World” in 30 Days            4. The Moral




                              Best Docs:
Around “Hello World” in 30 Days            4. The Moral




                              Best Docs:

                      Sinatra
Around “Hello World” in 30 Days   4. The Moral
Around “Hello World” in 30 Days       4. The Moral




                  Most Bewildering:
Around “Hello World” in 30 Days       4. The Moral




                  Most Bewildering:

            Cassandra
Around “Hello World” in 30 Days           4. The Moral




                              Most Fun:
Around “Hello World” in 30 Days           4. The Moral




                              Most Fun:

                     Scheme
Around “Hello World” in 30 Days                 4. The Moral




                                  Start Small
Around “Hello World” in 30 Days           4. The Moral




                                  Start Now
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?
Around “Hello World” in 30 Days   4. The Moral




   What was missing?


           Strongly-typed
           languages are
               hard.
Around “Hello World” in 30 Days   4. The Moral




         Make (& Take) The Time
Around “Hello World” in 30 Days             4. The Moral




                             Stick It Out
Around “Hello World” in 30 Days               4. The Moral




                                  Cut & Run
Around “Hello World” in 30 Days   4. The Moral




          Share Your Experiences
Around “Hello World” in 30 Days           4. The Moral




                                      Make
                                  Programming
                                      Play
Around “Hello World” in 30 Days




                                  Thanks!

                   http://speakerrate.com/talks/3249
                                   @deisinger

Contenu connexe

En vedette

Testing practicies not only in scala
Testing practicies not only in scalaTesting practicies not only in scala
Testing practicies not only in scalaPaweł Panasewicz
 
MySQL Monitoring Shoot Out
MySQL Monitoring Shoot OutMySQL Monitoring Shoot Out
MySQL Monitoring Shoot OutKris Buytaert
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?Alex Payne
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Martin Odersky
 
A Brief Intro to Scala
A Brief Intro to ScalaA Brief Intro to Scala
A Brief Intro to ScalaTim Underwood
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkRahul Jain
 
Scala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuScala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuHavoc Pennington
 

En vedette (11)

Testing practicies not only in scala
Testing practicies not only in scalaTesting practicies not only in scala
Testing practicies not only in scala
 
Scala-Ls1
Scala-Ls1Scala-Ls1
Scala-Ls1
 
MySQL Monitoring Shoot Out
MySQL Monitoring Shoot OutMySQL Monitoring Shoot Out
MySQL Monitoring Shoot Out
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?
 
MySQL DBA
MySQL DBAMySQL DBA
MySQL DBA
 
Scala
ScalaScala
Scala
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
 
A Brief Intro to Scala
A Brief Intro to ScalaA Brief Intro to Scala
A Brief Intro to Scala
 
Scala Days NYC 2016
Scala Days NYC 2016Scala Days NYC 2016
Scala Days NYC 2016
 
Real time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache SparkReal time Analytics with Apache Kafka and Apache Spark
Real time Analytics with Apache Kafka and Apache Spark
 
Scala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on HerokuScala, Akka, and Play: An Introduction on Heroku
Scala, Akka, and Play: An Introduction on Heroku
 

Around "Hello World" in 30 Days

Notes de l'éditeur

  1. reduce, accumulate, compress or inject higher-order functions that iterate an arbitrary function over a data structure in some order and build up a return value
  2. reduce, accumulate, compress or inject higher-order functions that iterate an arbitrary function over a data structure in some order and build up a return value
  3. The desire to get better and better at something Not the desire to BE GOOD at something
  4. Hungary optimum experience Time passes quickly self-consciousness disolves activity not too easy, not too hard
  5. 7 weeks of basic training at west point before starting 1 in 20 drops out not strength, athleticism, intelligence, or leadership ability “perseverance and passion for long-term goals”
  6. Carol Dweck People who view intelligence as fluid do much better
  7. Carol Dweck You worked so hard vs. you are so smart