Double-click to wow

Evan Phoenix – keynote…

Works for EngineYard – Rubinus lead developer (rubini.us/)

meme – an element of a culture or system of behavior that may be considered to be passed from one individual to another by nongenetic means, esp. imitation

 

alias_method_chain is AOP…

 

 

en.wikipedia.org/wiki/Why_the_lucky_stiff

 

_why's self-portrait from Why's (poignant) Guide to Ruby

 

Zed Shaw

www.zedshaw.com/

 

PickAxe book online

www.rubycentral.com/book/

 

in the ruby community, ideas spread quickly.. Things change quickly…

Who doesn’t like it?  The Enterprise… They consider it dangerous… (could he be talking about EA?)

Ruby in the Cloud

Mike Subelsky

cofounder of “OtherInBox.com”

Rush = Ruby Shell

 

god.rb

 

Rufus::Scheduler

 

managing virtual servers using Pool Party..

Building and Maintaining a Ruby Infrastructure

 

Speakers: jeremey Hinegardner and Fernand Galiana

Work for:  Collect Intellect

copiousfreetime

gems:  amalgalite rabal htauth heel launchy …

 

 

mole – tells you about your rails application and it being used…

www.rubyinside.com/the-mole-spying-inside-your-rails-applications-457.html

liquidrail.com/2007/4/15/mole-plugin-inspect-the-rails/

 

ZiYa – charting the rails

World 1 – the grab bag world..

World 2 – the plugins world

World 3 – Gems – the one true path:

 

Primordial Gem – developer tools. – new project generation  -bones, consistent project layout, common tasks, base classes, etc..

 

Schema Management

Cruise Control – continuous integration’

 

~>  (twiddle wakka) 

~> 1.1 <=> 1.1.*

“~>” in dependency spec for Ruby Gems will ignore the “3rd” part of the version…

Should have a Internal Gem Server

 

Stickler – manage an internal gem server  (work in progress)

Javascript and Ruby Framework

Speaker: Wynn Netherland  (wynn@squeejee.com  web: squeejee.com  blog: locomotivation.com)

 

Ruby: Rails, Merb, Camping, Sinatra

Javascript: Prototype, script.aculo.us, jWuery, MooTools, UI, ExtJS

Yehuda Katz

April 2009 – Katz’ new book:  Merb in action..

Abstract Browser quirks

Extend Language

Nifty Ajaxification

 

Prototype (script.aculo.us) – script.aculo.us/

– integrated with rails

-Effects: appear, fade, blinds, puff

– drag & drop

– builder

 

jQuery –

Simpler Ajax

designed for plugins

MooTools

–eye candy – lots of cool designs

 

ExtJS

good with data manipulation… grids..  themed like windows controls.  Good for apps trying to recreate a desktop application in the browser.

 

 

Widgets: tabs, grids, date pickers, dialogs, panels, sliders

 

jQuery UI project…   ui.jquery.com/demos  (ui.jquery.com/repository/real-world/layout/)

plugins.jquery.com

Prototype – LivePipe UI – scripteka.com

 

SproutCore – Javascript based; MVC in the browser

www.sproutcore.com/

image

image

image

github.com/sproutit/sproutcore/wikis/

 

supports testing…

 

HTML 5 datastore – SproutCore does this…  (HTML 5 datastore)

 

 

Dojo

Rails best practices

really funny talk that touched on how easy to maintained code goes bad…l

have to see the presentaiton…

webby – static site generation tool… — webby.rubyforge.org/

“unfactor your code and keep your job”

 

“small talk best practice patterns” book

 

 

rails

around_filter

Hidden Gems

Ruby in the Fast Lane

James Edward Gray II  (works on “Scout” at his job)

Created the Ruby Quiz at the beginning but don’t do it anymore

Evil rumor “Ruby is Slow”

James says it is “BS”..

Ruby goes as fast as we want it to.

Tools to speed up:

NArray, SQLite, RBTree, FSDB, Rinda, and most important tool: “Thinking out of the box”

NArray

Numeric Array … very fast..

Ruby’s numbers were built for “easy of use” but sometimes this makes it slower

C’s numbers were built for speed

Ruby can borrow C’s numbers in NArray…

Example Problem: Faster imaging

1.3 seconds to create 400 by 200 image using 2d array

changing to NArray made it less than a 1/100 of a second..

 

require “narray”

sqlite

sqlite has already solved many hard problems for data storage

It gives you an entire language to express your data needs…

IP to country

webnet77.com

code:  require: open-uri, zlib, rubygems, faster_csv, sqlite3

sqlite3 has a lot of cool features including unicode support

db = SQLite3::Database.new(<name of file)

db.exectute <<-END_Table.strip)

Create table…

END_TABLE

…. loading

puts db.get_first_value(…)

sqlite can use named parameter

SQlite is totally free…

Can receive results as a hash…

Can work with in memory databases ( this is crazy fast)

You can run queries across multiple database files

You can define SQL functions in pure RUBY code!

 

“Attach Database”

Rbtree

a binary tree

RBTree is super efficent…

Real binary search..

drops search below 1/1,000ths of a second

require: rbtree

Ruby SortedSet gets 15 times faster if RBTree is loaded…

FSDb – filesystem as a has

not a gem… but can be found on sourceforge

redshift.sourceforge.com/fsdb

Relational databases do not use times series data at all..

The has is a path in a file system…

db = FSDB::Database.new(“server_stats/”)

DB[time.strftime(“%Y/%m/%d/%H/%M.obj”)] = data…

Very simple to use… makes getting data very easily…

Can define your own format for files…

Rinda

dirt simple inter-process communication (IPC)

don’t have to install it…comes with Ruby

example problem: take a scramble word and find what it could be.

Create a “signature” by sorting the letters alphabetically…  just need to find matching signatures..  just takes time to find it then..

 

Rinda::TupleSapceProxy.new( DRbObject.new_with_uri(“druby://loclahost:61676”)

)

Creates tuple space:

results = Rinda:TupleSpace.new

DRb.start_service(“druby://localhost:61676”, results)

RingServer — zero config networking..

 

q&a

q: url for slides

a: not online yet, but will be put online… there will be a file server that is put up for the conference

The Next ruby 1.9 – Bruce Williams

Bruce (based in Austin) – Language Tourist

Blog: codefluency.com

work: fiveruns.com   (TuneUp, Manage, etc.)

Why Ruby 1.9?

(almost no one in the room had started using Ruby 1.9)

In a nutshell:

Many new syntax and language features…

Not strictly backwards compatible to 1.8..

Don’t get 1.9 just yet…. (www.ruby-lang.org/en/downloads/)

 

Standar library changes: rubygems, rake, json, ripper, probeprofiler, securerandom, HMAC digests… csv replaced by fasterCSV implementaiton

 

soap, sdle, base64 and some others were removed…

 

Migration Risk Factors

You need to have tests!  That is one of the quickest ways to find out what will break with the new version…

 

Risk: Text Processing – Anything relying on $KCODE, String#[], or String internals… Parsers especially at risk…different encodings for source files.. 

upack(‘c*’)

Risk: Block Var Scope

“clever is a synonym for stupid”

Risk:  Hash#select (now returns hashes)

Risk: Hash Enumerations

Risk: Gems

The biggest obstacle to Ruby 1.9’s adoption is the sheer number of mostly working but essentially unmaintained gems that virtually everybody in the Ruy community depends on

–Sam Ruby

New features

multilingualization (m17n)

Enumerable – has index… can call next.. etc…  take, group_by, drop, min_by, max_by, count,and others…

Hash changes… (track insertion order)

Object: – tap…

New Proc Literal

(proc and lambda interchangeably)

Threads – native threading model from a user model…

Fibers – “semi-coroutines.”  Think of them as lightweight user threads with manual sceheduling…  some projects that use it Revactor  & NeverBlock…

question and answers

Why is Tap called tap?

(matz will probably talk more about this in his talk)

Are there ways to change the order?

Reverse, sort, index?  – not sure if there is a way…