ruby symbols :anything is a symbol, anything: 'something', is an easy key value assignment using symbols, instead of a rocket.
Control Structrues
Intro to Regex
Blocks & Iterators
Reading and 'Riting
learned that you can pass arguements at the command line, just follow the ruby filename.rb param1 param2 param3 etc.
the intro, chapter 1, and chapter 2 are complete.  i did these without realizing i had hit the next chapter.  will try to divide up better in the future.
Classes, Objects, and Variables - define a class using Class CamelCaseTheClass, use a def initialize(params) call to initialize your object, use def to_s to define the string call on your object so it doesn't just print the object name and unique identifier or parameters with just p - you can specify what it prints and access all the instance variables that were assigned in the initialize method (or assigned anywhere else for that matter
re-learned teh attr_reader call with the def initialize method in a ruby class.  forgot how useful that was :).  glad I reviewed :).  all attribute accessor methods defined in the attr_reader user a symbol, like :isbn and this becomes the method .isbn on the class object, in this case BookInStock.isbn returns the value of teh isbn instance variable.
re-learned the three short cut attribute read, write and read/write method - attr_reader :param sets getter methods for an attribute, attr_writer: param sets setter methods for an attribute and attr_accessor :param sets both getter and setter methods with the . notation
created a virtual instance variable, which is essentially a calculated instance variable, that is actually derived from one of the real instance variables that is set when it is initialized.  The good thing is, that to the outside world, this virtual instance variable looks and behaves like the real thing, so they don't have to worry about how it's implemented in my particular class, they can use it however.
Ok, done with the piddly stuff, now actually writing programs.  Not sure if the whole chapter thing is going to work in the files now.  probably need to do a different git checkout for each chapter, and then just merge that back in at the end of the chapter, so I don't have to worry about file structure in the commits
created 3 seperate files that worked together in a program, used the require statment to call in a standard library, and used require_relative to call in the files i created in teh same file directory, like so require 'csv'  require_relative 'book_in_stock', also read in CSV data and used a .foreach method on it to iterate over each linej, CSV.foreach(csv_file_name, headers:true) do |row| ... end do what you want in the middle.  it goes over each row.  the elements in teh CSV file are accessible using the row["namofcolum"] to get the column in that row, so I think that means that the .foreach method on CSV creates an array with each element of that array corresponding to a column.  also used attr_reader, can use attr_writer and attr_accessor (remember this).
access control is done through method access