removed the print inside triangle
blocks are lambdas
methods can be defined to take blocks (explicitly) like so:
	**code**
		def test(&block)
			# this will execute the function dereferenced by the block
			# and pass in to it value as a parameter
			block.call(value)
		end
any othe methods can use blocks implicitly
	**code**
		def gimme_some_skin
			"skin"
		end

		gimme_some_skin { |skin| skin.upcase} # "SKIN"
Sandwich code

bread/meat/bread
breads are usually not changing much, while most of the changes happen to meat. encapsulating the breads away is not always easy

a sample code of bread/meat/bread is with file opens
	**code**
		file = open(file_name)
		# work with file here (the while loop below is considered the meat part)
		while line = file.gets
			count += 1
		end
		# another layer of bread ensuring to close the file handle
		ensure file.close if file

it's worth mentioning that in case of calling open with a block, then it will take care of closing the file at the end of the block:

	**code
		open(file_name) do|file|
		end # ensures the close here implicity
fixed the invalid triangle test .. i miss geometry
an initial implemntation of dice game ..
all green, we gotta refactor ba2a