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