Note: This post is an un-contexualized, un-edited, & un-proofed bunch of notes taken during Cascadia Ruby 2013.

Andy Delcambre Cascadia Ruby 2013: Ruby Systems Programming

The kernal

  • Runs in kernal mode.
  • Not your code.
  • Can do anything and everything.

Your Code

  • Runs in user mode.
  • Math.
  • Access memory.

System calls

  • Ask the kernal nicely to do things.
  • Api to kenal mode.
  • If it is not in the syscall_table you can not call it.
  • Unix has 261 syscalls implemented.
  • Windows has thousands listed (implemented/unimplemented).


  • Linux System Programming by Robert Love
  • Unix Network Programming by Richard Stevens
  • Advanced Programming in the UNIX Environment by Richard Stevens

Davy Stevenson Ruby as Art; Ruby as Science; Ruby as Craft

  • Analyses and study of algorithms.
  • Algorithm: A set of instructions that will solve a particular problem.
  • Fuctional programming in ruby.
  • The best code is no code. The best code is code that already exists.
  • There is a difference between being correct and being right.

Kerri Miller Cascadia Ruby 2013: Gambling for Rubyists

Every decision is a compromise. We pick postgres over mysql because we feel we are getting a benefeit.

“You are the best” + Be Humble

Jerry D’Antonio code Advanced Multithreading in Ruby


  • Blocking IO is one of the first reasons to use concurrency.
  • Shared muteable data is bad.
  • Future represents actions that take effect at a future time and return a specific value.
  • mutex.sychronize.
  • Do not block the reactor.


Sam Livingston-Gray, slides Fluent Refactoring



A language that describes ways to make your code suck less.


What you can say when you are woken up in the middle of the night with a flashlight in your face.

Levels of Proficiency

  • Level 1; Tarzan at a Party; “Beer!” “Good party.”
  • Level 2; Going to the party; “Where is the party?” “How do I get to the party”
  • Level 3; Discussing the party; “What happened at the party last night?”
  • Level 4; Charlie Rose; “Should parties be illegal?”


  • Guard Clause; Best practices in small talk.
  • Flatten Nested Conditionals.
  • SRP (Single Responsibility Prinicpal).
  • Replace Conditional With Polymorphism.


  • Practical Object-Oriented Ruby
  • Refactoring

Lightning Talks Apologies if I misspelled anyones names below.

Rex lexer generator

by: Ryan Davis

  • ruby_parser lexer - Unmaintainable.
  • Oedipus Lex - “This is not your fathers lexer.”
  • Massive extensions.
  • Self-bootstrapping.
  • Uses ruby more directly.
  • Predicate methods.
  • Action methods.
  • Clean state changes.

Focus on the Custard

by: Bethany Rentz

  • Put the customer first in the designs.
  • You != Your customer.

The Surfers Rule

by: Milan Loveless

  1. Have Passion.
  2. No Dare / No Flair. Try things and be innovative.
  3. Always look outside. Look where you can learn.
  4. Move before it moves you.
  5. Never turn your back on the ocean.
  6. Expect to wipe out.
  7. Never surf alone.

Speed up your tests with rspec-set

by: Philippe Creux

  • FactoryGirl is sloooow.
  • rspec-set creates records in the db prior to running transactions.


by: Pete Higgins

First Tuesday of every month. Presentation oriented social occasion with “Show and tell.”
All other Tuesdays are hack nights.

Regional Conferences

by: Koby Ranquest

Los Angelos Ruby Conference

  • Feb 8th.
  • Very newbie friendly.

Ruby on Ales 2014

  • Bend Oregon.
  • The tower theatre.
  • March 6th - 7th.

A Cautionary Tale

by: Jason Clark

  • Forks not alaways an exact copy.
  • Only the thread that calls fork goes to the new thread.
  • Locks cause problems.
  • Lock doesn’t always release on child process.


by: Audrie Eschright

  • Calagator for pdx meetups.
  • PDX employer graph.


by: Scott Windsor

Ruby is Broken

by: Nathan Zook

  • No one is perfect.
  • Should not be able to not use namespaces.
  • Method resolution order.

2 Talks omitted (I missed them)

A Game in ruby

by: Robby Clements

Centralized Logging

by: Ashlegh Baumgardner

  • Logstash.
  • Logstash sleeps and retrys causes problems.
  • Sparsify.

Ruby Testing

by: Amiel Martin

  • Testing notifications via led lights.
  • DigiSpark.

Sara Blackthorne The Client is Always Right {But Sometimes They Need a Little Help}


  • Who is the intended user group?
  • What are their usability needs?
  • Who will we test our product with before release?


  • How do we determine the best platform?
  • Is this a major change or a change in usage?
  • How is this product going to best be used?


  • What are the key features of this product?
  • How do we maintain our usability?
  • What do we build to keep our products story consistent with our core vision?

Carl Alviani Not Created Equal: The History and Discernment of Plastics in Product Design

How recyclable are the following products. (Due to processing methods):

  • Glass — 34%
  • paper — 60%
  • Polymer — 90%

1962 — Parkseine was developed to replace Ivory as the elephants were dying off.
1894 — Rayon developed to replace Silk.
1909 — Bakelite developed to replace Shalak. Used for things like telephones, appliances, & pencil sharpeners.

1933 — PVC & Acrylic
1939 — Polythylene & Nylon
1941 — PET & ABS

Real silicone is identifiable by bending it and verifying there is no visible difference with it.

#7 Recycling symbol “Other” is not recyclable. & Search: “Not created Equal: A Long (Loving) Plastics Primer”