Blogged by Ujihisa. Standard methods of programming and thoughts including Clojure, Vim, LLVM, Haskell, Ruby and Mathematics written by a Japanese programmer. github/ujihisa

Thursday, May 21, 2009

Vancouver.rb: Rubish and Erlang

I attended the Vancouver.rb meeting: Rubish with Howard Yeh AND Intro to Erlang with Ken Pratt. My notes are below -- while it doesn't make sense without the original talks.

Rubish

  • Closes the gap between script and shell.
  • Extensible is a very important feature of Rubish
  • Executable {Cmd, Pipe}, Job control, Context

    (sh) ls a b c
    (rb) ls 'a b c'
    
    (sh) ls 'a b c'
    (rb) ls.q 'a b c'
    

Sed and Awk

  • sed: one liner. Rubish has sed method.

    (rb) find('. -name "*.el*').sed { p if File.ex... }.map {|f| ...
    
  • Be explict, fits well

  • Optimization and consistency

  • Grep

    p prev if respond_to?(:prev)
    

Aggregator

  • inspired by Common Lisp
  • collect (not Enumerable#collect)

Concurrency

  • No interaction between tasks. No deadlock, no shared memory, but is safety by policy.
  • Background jobs: Executable#{exec!, each! map!}, Job#{wait}

Context

    obj.extend(module).instance_eval { ... }

with method

Intro to Erlang

  • <3 asynchronous message passing
  • Processes shoud be able to run forever
  • <3 tails recursion
  • Compiled to bytecode, runs on VM
  • Libraries
    • OTP
    • Supervisor trees: all nodes supervise others(?)
    • Mnesia distributed DB, Web frameworks Nitrogen, Webmachine
    • JSON
  • Amazon SimpleDB
  • twitter: ejabberd
  • 37signals: Campfire
  • github
  • Ruby + Erlang (Railsconf keynote) (Haskell)
  • Katamari/Fuzed
    • Rails server clustering
    • Erlang bindings for Rails
    • YAWS web server
  • Nanite
    • A self-assebing cluster of Ruby daemons
    • rails server or map/reduce tasks
    • RabbitMQ handles the distributed stuff
  • Erlectricity: erlang/ruby interaction
    • Bi-directional communication using Erlang's binary fomat
    • Erlang treats Ruby processes as just anohter erlang process
  • http://www.eralng-factory.com/
  • Erlang meetup at vancouver
  • Haskell is an academic language. more purely
    • they don't want to be popular!
    • erlang is not lazy evaluation
  • debugging
    • GUI tool, breakpoints, multi processes

My impression

  • It was hard for me to listen to English talks, even in tech talks.
  • I got interested in the implementation of Rubish.

No comments:

Post a Comment

Followers