Skip to content
Browse files

Fresh import from weird merge

  • Loading branch information...
1 parent 877e04e commit df738c3cd4e78f4d832ecb2e9c0746bf40e75624 @benjaminoakes benjaminoakes committed
Showing with 152 additions and 1 deletion.
  1. +33 −0 Advanced-EventMachine.md
  2. +7 −1 Home.md
  3. +23 −0 Keeping-Ruby-Reasonable.md
  4. +80 −0 LocalCommunity.Build.md
  5. +4 −0 README.md
  6. +5 −0 So-you-think-you-can-code.md
View
33 Advanced-EventMachine.md
@@ -0,0 +1,33 @@
+> We use EventMachine heavily in production. It is handling uploads to S3, managing thousands of messages a second or distributing agent workload. This taught us a load about EventMachine and some weird> corner-cases. I want to about such advanced EventMachine topics and shared some use-cases and experiences from the trenches.
+
+* Chunk up IO to keep from blocking the main loop!
+* `EM.next_tick &block` schedules your block (see also EM.defer)
+
+* Deferrables (`EM::Deferrable`)
+ * Good for allowing EM style concurrency in your classes (callbacks, errbacks)
+ * benjaminoakes: I'm not sure I understand how Deferrables are different from Promises or Futures. #EventMachine #RubyConf http://t.co/83bxGvJQ
+* Queues (`EM::Queue`)
+ * push on, pop off in worker
+* Channels (`EM::Channel`)
+ * Pub/Sub
+ * Push messages on. Can subscribe or unsubscribe
+* Iterator (`EM::Iterator`)
+ * Close to the sequential stuff in Ruby stdlib
+ * Kinda MapReducey.
+ * "map": what you do in individual steps
+ * "reduce": what you do when you get all the results (e.g. which is the biggest?)
+
+* Fibers & EM-Synchrony
+ * Helps with "callback hell" (lots of nesting)
+ * Ruby 1.9+: "lightweight cooperative concurrency"
+ * Let's you write synchronous-looking code that actually runs asynchronoulsy
+ * See also: Goliath (lets you do async Rack)
+
+* Testing
+ * What do you do without the event loop?
+ * Test domain logic
+ * Then make sure the right stuff is fired
+* Exception Handling
+ * Error handling is hard
+ * Deeply nested
+ * Don't want to kill the main loop
View
8 Home.md
@@ -1 +1,7 @@
-Welcome to the rubyconf2011 wiki!
+Talks
+-----
+
+* [[So you think you can code]]
+* [[Advanced EventMachine]]
+* [[LocalCommunity.Build]]
+* [[Keeping Ruby Reasonable]]
View
23 Keeping-Ruby-Reasonable.md
@@ -0,0 +1,23 @@
+> Pop quiz, hot shot! What is the value of this Ruby expression: `2 + 3`?
+>
+> What if I told you that somewhere earlier I had done this: `class Fixnum; alias :+ :*; end`? Changes everything, right?
+>
+> We're all familiar with Ruby's open classes. For many of us, they're one of the facets of Ruby that make it so much fun to work with. However, Ruby treats bindings as first class objects, and they are, similarly, open. This can lead to problems. What sorts of problems? Well, effectively, the only way to know what a Ruby program will do is to run it. Stated another way: it is impossible to reason about Ruby.
+>
+> Now, this may not seem like such a big deal for the seasoned Rubyist. So long as we're responsible in how we write our code and make sure not to do anything too crazy, we can have a pretty good idea of what any piece of code will do ahead of time. Unfortunately, compilers and runtimes can't rely on "responsible" programmers and having a "pretty good idea" of what code will do just doesn't cut it for a VM. As a result, method caches get invalidated far too often and whole classes of common optimizations do not work with Ruby.
+>
+> So, what's a programming language to do? Luckily, Ruby is not alone in facing this dilema. The Scheme community has been confronting similar issues from the very beginning, and in the R5RS and R6RS reports, they outlined a solution. This talk will take a look at what makes first-class environments and "eval" so problematic, and what lessons Ruby might learn from Scheme in how to be more reasonable.
+
+* You read more code than you write
+* What does it mean?
+ * Semantics
+ * Environment matters (e.g. `binding # => all of the bindings in scope`)
+* Are first class environments (`Binding`) dangerous?
+ * Ruby gives you the ability to get all bindings (live and mutable)
+ * Can you reason about your code? No
+* Returning a `Proc` means any user of that `Proc` can mess with your `Binding`!
+
+* "Capture the Flag" game example
+ * `Method` is much more constrained than `Binding`
+
+* Should we have a `use strict`?
View
80 LocalCommunity.Build.md
@@ -0,0 +1,80 @@
+> The talk will focus on <= 1 day length events that any Rubyists can organize in their locality to nurture and grow a vibrant ruby community.
+Specifically, the talk will explore in detail two such events - Code Retreat & Rails Bugmash, and will be based on my experience in organizing Code Retreats in Boulder (Feb 2011) & Fort Collins (June 2011), and Rails Bugmashes in Boulder and Bangalore (both in May 2011).
+
+Presenter: @_prakas, from Boulder Ruby Group
+
+Ideas
+-----
+
+* Code Retreats
+* Bugmashes
+* Me: giving back to the community
+ * OpenGov
+ * Nonprofit
+ * Idea: App for organizing giving back to the community?
+
+Code Retreat
+------------
+
+* Goal: learning from others
+* Day-long
+* Single problem (e.g. Conway's Game of Life)
+* 45 minute iterations
+* Pair programming
+* Delete code after each iteration
+ * Qs
+ * What did they learn?
+ * Surprised the most?
+ * What do differently from now on?
+* Stand up: 15 min retrospective and break
+* Switch partners, start again
+* Learn!
+* Anyone can participate and learn, regardless of skill level. (Spread out skill level!)
+* Don't analyze the problem too much; you're learning different approaches to coding
+* How many people needed?
+ * At least 2
+
+Bug Mash
+--------
+
+* E.g., Rails bugmash: contribute bugfixes to Rails
+* See Rails Guides: Contributing to Ruby on Rails http://guides.rubyonrails.org/contributing_to_ruby_on_rails.html
+* Do pull requests
+* Rebase so you have fewer commits, potentially
+
+How?
+----
+
+* Bugmash Location
+ * Someplace people can be for 5-6 hours
+ * Local company
+ * Coworking space
+ * Coffee shop
+* Code Retreat Location
+ * More work
+ * Sponsors for (catered) lunch, coffee, breakfast, other expenses
+ * Facilitators -- someone else who knows the ropes
+ * Coworking spaces are good options as sponsors
+* Raising Sponsorships
+ * Ask and you shall receive!
+ * Coworking spaces
+ * Local Ruby firms
+ * Tech. book publishers
+ * Tech. training companies
+ * Recruiting firms
+
+Why?
+----
+
+* Ruby must win! See Dr. Nic's talk "What is your job at your Ruby club?"
+* Friends, experience
+
+Tools
+-----
+
+* Plancast
+
+TODOs
+-----
+
+* @coreyhaines is planning a Global Day of Code Retreat on 2011/12/3
View
4 README.md
@@ -0,0 +1,4 @@
+Ruby Conf 2011 Notes
+--------------------
+
+You probably want to look at https://github.com/benjaminoakes/rubyconf2011/wiki instead.
View
5 So-you-think-you-can-code.md
@@ -0,0 +1,5 @@
+> The Fabulous Five are back! Last year we blew your mind. This year we will blow your heart. Join us as we put on our robes and wizard hats and enchant you with witty banter, amusing anecdotes and live Q&A. We'll cover topics ranging from "best ruby interpreter" to "best ruby interpretive dance". Featuring Aaron "The Kissing Bandit" Patterson, Ben "It's Bleything, not Bleything!" Bleything, Yosef "Totally Great" Mendelssohn, Jon "The Bear Brogrammer" Barnette, and Evan "Totes Not Creepy" Phoenix. Moderated by Rein Henrichs.
+
+* Forwardable in Ruby stdlib
+* alias_method
+* https://github.com/bleything/ben_string

0 comments on commit df738c3

Please sign in to comment.
Something went wrong with that request. Please try again.