The document summarizes what Keith Bennett loves about the Ruby programming language. It highlights several key features including the simplicity of creating accessors and mutators for instance variables, concise syntax for conditional initialization, ability to specify arrays and hashes as literals, built-in support for regular expressions, and clean syntax for common string operations. The document provides examples of how these features can be used in Ruby.
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...Databricks
Mastering complex software stacks, such as Spark or Hadoop, is a challenging process. Incompatible dependencies, new programming paradigms, runtime errors, outdated documentation, scaling, tuning - this is just a short list of skills we must acquire. How do we make sure that we are not wasting time and making progress learning? How do we share our knowledge efficiently? This talk walks you through a journey of scaling Salesforce Einstein AI platform to serve 3B+ predictions per day and provides you with a scale to measure learning progress.
Speaker: Matthew Tovbin
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...Matthew Tovbin
Spark + AI Summit, 2019 - Mastering complex software stacks, such as Spark or Hadoop, is a challenging process. Incompatible dependencies, new programming paradigms, runtime errors, outdated documentation, scaling, tuning - this is just a short list of skills we must acquire. How do we make sure that we are not wasting time and making progress learning? How do we share our knowledge efficiently? This talk walks you through a journey of scaling Salesforce Einstein AI platform to serve 6B+ predictions per day and provides you with a scale to measure learning progress.
Presentation I gave at a Rust Austin meetup in November 2018 about exploring different approaches for interpreting custom DSLs in Rust with varying speed characteristics and associated safety issues.
The Rule of 10,000 Spark Jobs: Learning From Exceptions and Serializing Your ...Databricks
Mastering complex software stacks, such as Spark or Hadoop, is a challenging process. Incompatible dependencies, new programming paradigms, runtime errors, outdated documentation, scaling, tuning - this is just a short list of skills we must acquire. How do we make sure that we are not wasting time and making progress learning? How do we share our knowledge efficiently? This talk walks you through a journey of scaling Salesforce Einstein AI platform to serve 3B+ predictions per day and provides you with a scale to measure learning progress.
Speaker: Matthew Tovbin
The Rule of 10,000 Spark Jobs - Learning from Exceptions and Serializing Your...Matthew Tovbin
Spark + AI Summit, 2019 - Mastering complex software stacks, such as Spark or Hadoop, is a challenging process. Incompatible dependencies, new programming paradigms, runtime errors, outdated documentation, scaling, tuning - this is just a short list of skills we must acquire. How do we make sure that we are not wasting time and making progress learning? How do we share our knowledge efficiently? This talk walks you through a journey of scaling Salesforce Einstein AI platform to serve 6B+ predictions per day and provides you with a scale to measure learning progress.
Presentation I gave at a Rust Austin meetup in November 2018 about exploring different approaches for interpreting custom DSLs in Rust with varying speed characteristics and associated safety issues.
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
Elixir, Erlang, and Cucumberl
Elixir is a new Ruby-inspired programming language that uses the powerful concurrent machinery of Erlang behind the scenes. Cucumberl is a port of Cucumber to Erlang. Let's see what happens when we put them together.
In this talk, we'll discuss:
How Erlang's concurrency makes it easier to write robust programs
Elixir's approachable syntax
How to test Erlang and Elixir programs using Cucumberl
Attendees will walk away with a solid introduction to the principles of Erlang, and an appreciation of the way Elixir brings the joy of Ruby to the solidity of the Erlang runtime.
Prezentacja opisuje strategię dla rozwoju sportu w gminie Mrągowo - jej założenia oraz sposoby realizacji. Znaleźć w niej można także opis obecnego stanu sportu w tej gminie z podziałem na instytucje, organizacje, kluby sportowe. Poza tym w prezentacji znajdują się też informacje o regulacjach prawnych w tym zakresie oraz realizowanych inwestycjach.
Autor: D. Durka (UM Mrągowo)
Prezentacja zaprezentowana podczas konferencji "Chcieć to móc, czyli jak działania strażnicze zmieniają świat" 11-ego marca 2010 w Warszawie
więcej na www.watchdog.org.pl
Prezentacja "Litygacja w działalności Access to Information Programme" (Bułgaria)
Presentation on litigation by Acces to Information Programme (Bulgaria)
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
Elixir, Erlang, and Cucumberl
Elixir is a new Ruby-inspired programming language that uses the powerful concurrent machinery of Erlang behind the scenes. Cucumberl is a port of Cucumber to Erlang. Let's see what happens when we put them together.
In this talk, we'll discuss:
How Erlang's concurrency makes it easier to write robust programs
Elixir's approachable syntax
How to test Erlang and Elixir programs using Cucumberl
Attendees will walk away with a solid introduction to the principles of Erlang, and an appreciation of the way Elixir brings the joy of Ruby to the solidity of the Erlang runtime.
Prezentacja opisuje strategię dla rozwoju sportu w gminie Mrągowo - jej założenia oraz sposoby realizacji. Znaleźć w niej można także opis obecnego stanu sportu w tej gminie z podziałem na instytucje, organizacje, kluby sportowe. Poza tym w prezentacji znajdują się też informacje o regulacjach prawnych w tym zakresie oraz realizowanych inwestycjach.
Autor: D. Durka (UM Mrągowo)
Prezentacja zaprezentowana podczas konferencji "Chcieć to móc, czyli jak działania strażnicze zmieniają świat" 11-ego marca 2010 w Warszawie
więcej na www.watchdog.org.pl
Prezentacja "Litygacja w działalności Access to Information Programme" (Bułgaria)
Presentation on litigation by Acces to Information Programme (Bulgaria)
Prezentacja została przedstawiona 25 września na spotkaniu w Zgierzu zorganizowanym przez Fundację Twórczy, Aktywni w ramach akcji „Masz Głos, Masz Wybór” Fundacji im. S. Batorego i Stowarzyszenia Szkoła Liderów.
Slides containing information about my favorite features of the Ruby language. Many of these features exist in other languages, but in the context of my experience as a C, C++, and Java developer, offer a dramatic increase in expressiveness and productivity.
This slide show can also be used to teach a Ruby overview.
Python's "batteries included" philosophy means that it comes with an astonishing amount of great stuff. On top of that, there's a vibrant world of third-party libraries that help make Python even more wonderful. We'll go on a breezy, example-filled tour through some of my favorites, from treasures in the standard library to great third-party packages that I don't think I could live without, and we'll touch on some of the fuzzier aspects of the Python culture that make it such a joy to be part of.
(This is presentation slide for RubyKaigi 2009)
Erubis is very fast and extensible implementation of eRuby. In this slides, I show you features of Erubis, and issues related to eRuby and solution by Erubis. Also I show you some ideas about the future of template system.
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...EnlightenmentProject
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's to Come
at Enlightenment Developers Day 2014
https://phab.enlightenment.org/w/events/enlightenment_developer_day_2014/
JRuby 9000 introduced a new intermediate representation that allows us to use classic compiler strategies to optimize Ruby. This talk describes what we're doing with this new IR and why current JVM capabilities are not sufficient.
In this talk, Adrian Kashivskyy, Netguru iOS Developer, digs into rarely discussed Swift features, such as literal convertibles, interpolation convertibles, pattern matching, reflection and advanced Objective-C bridging.
Big Data Everywhere Chicago: Unleash the Power of HBase Shell (Conversant) BigDataEverywhere
Jayesh Thakrar, Senior Systems Engineer, Conversant
The venerable HBase shell is often regarded as a simple utility to perform basic DDL and maintenance activities. However, it is in fact a powerful, interactive programming environment, primarily due to the JRuby engine under the covers. In this presentation, I'll describe its JRuby heritage and show some of the things that can be done with the "ird" (interactive ruby shell), as well as show how to exploit JRuby and Java integration via concrete working examples. In addition, I will demonstrate how the "shell" can be used in Hadoop streaming to quickly perform complex and large volume batch jobs.
1. Keith Bennett : What I Love About Ruby
This page last changed on Sep 17, 2008 by kbennett.
What I Love About Ruby
Keith Bennett
kbennett .at. bbsinc .dot. biz
Simplicity of Creating Instance Variables with Accessors and Mutators in Ruby
class Y
attr_accessor :a
end
...creates an instance variable a, and an accessor and mutator.
Concise Idiom for Conditional (and Lazy) Initialization
@var ||= some_expensive_initialization
...means if var is undefined, define it, and if nil, do the initialization.
Numeric Constants Thousands Separators Supported
irb(main):002:0> 1_000_000
=> 1000000
irb(main):003:0> 1_000_000.class
=> Fixnum
Actually, all underscores are stripped, even if they do not separate thousands.
Shell Integration
A shell command enclosed in backticks will be run, and the value returned by the backticked command
will be the text the command sent to stdout:
irb(main):008:0> `mkdir a b c d`
=> ""
irb(main):009:0> `touch b/foo d/foo`
=> ""
irb(main):010:0> emptydirs = `find . -type d -empty`
=> "./an./cn"
irb(main):011:0> puts emptydirs
./a
./c
=> nil
Logical Syntax:
1.upto(10) { |i| puts i }
(100..200).each { |n| puts n }
Document generated by Confluence on Sep 18, 2008 09:45 Page 1
2. vs., in Java, for the first example:
for (int i = 0; i <= 10; i++) {
System.out.println(i) ;
}
Ability to Specify Arrays (and Hashes) as Literals
and the Ease of Iterating Over Them
irb(main):018:0> ['collie', 'labrador', 'husky'].each { |breed|
puts "Hi, I'm a #{breed}, and I know how to bark."
}
Hi, I'm a collie, and I know how to bark.
Hi, I'm a labrador, and I know how to bark.
Hi, I'm a husky, and I know how to bark.
=> ["collie", "labrador", "husky"]
Also:
%w(collie labrador husky)
can be used to create the array instead of:
['collie', 'labrador', 'husky']
A Hash:
irb(main):063:0> favorites = { :fruit => :durian, :vegetable => :broccoli }
=> {:fruit=>:durian, :vegetable=>:broccoli}
Ranges
water_liquid_range = 32.0...212.0
=> 32.0...212.0
irb(main):010:0> water_liquid_range.include? 40
=> true
irb(main):011:0> water_liquid_range.include? -40
=> false
Note: Ranges are not arrays; any number n, not just integers, such that 32.0 <= n < 212.0, is included
in the range.
Converting Ranges to Arrays:
irb(main):043:0> ('m'..'q').to_a
=> ["m", "n", "o", "p", "q"]
Blocks Used to Automatically Close Resources
File.open 'x.txt', 'w' do |file|
file << 'Hello, world'
Document generated by Confluence on Sep 18, 2008 09:45 Page 2
3. end
The file is automatically closed after the block completes. If no block is provided, then the open function
returns the file instance:
irb(main):001:0> f = File.open 'x.txt', 'w'
=> #<File:x.txt>
irb(main):002:0> f << "Pleaaase, delete me, let me go..."
=> #<File:x.txt>
irb(main):003:0> f.close
=> nil
irb(main):004:0> puts IO.read('x.txt')
Pleaaase, delete me, let me go...
=> nil
Simple File Operations
file_as_lines_array = IO.readlines 'x.txt'
file_as_single_string = IO.read 'x.txt'
Clean and Simple Syntax
puts Array.instance_methods.sort
Regular Expressions
irb(main):027:0> 'ruby' =~ /ruby/
=> 0
irb(main):028:0> 'rubx' =~ /ruby/
=> nil
irb(main):029:0> 'ruby' =~ /Ruby/
=> nil
irb(main):030:0> 'ruby' =~ /Ruby/i
=> 0
Arrays:
irb(main):001:0> nums = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):006:0> nums.include? 3
=> true
irb(main):004:0> nums.collect { |n| n * n }
=> [1, 4, 9, 16, 25]
irb(main):002:0> nums.reject { |n| n % 2 == 0}
=> [1, 3, 5]
irb(main):003:0> nums.inject { |sum,n| sum += n }
=> 15
irb(main):052:0* distances_in_miles = [10, 50]=> [10, 50]
irb(main):053:0> distances_in_km = distances_in_miles.map { |n| n * 9.0 / 5.0 }
=> [18.0, 90.0]irb(main):016:0* twos = (0..10).map { |n| n * 2 }
=> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
irb(main):017:0> fours = (0..5).map { |n| n * 4 }
=> [0, 4, 8, 12, 16, 20]
irb(main):018:0> twos - fours
=> [2, 6, 10, 14, 18]
irb(main):019:0> twos & fours
Document generated by Confluence on Sep 18, 2008 09:45 Page 3