Montrose is a Ruby gem I wrote to specify and enumerate recurring events in Ruby. The source is hosted on Github.

The why: Dealing with recurring events is hard. Montrose provides a simple interface for specifying and enumerating recurring events as Time objects for Ruby applications.

More specifically, this project intends to:

  • model recurring events in Ruby
  • embrace Ruby idioms


Iris! Iris! Iris! The story of the 2004 Texas State Botball Championships


It's lunchtime at the all-day Botball competition and, for one group of students, things were not going well. Their robot was malfunctioning. They'd lost every contest in the morning round robin. From other competitors, they received insults and scorn. With the afternoon elimination tournament looming, perhaps it would be easier to quit.

An improbable team from inner-city Houston with enters a state-wide robotics competition. Iris, their captan, is a quiet ninth-grader with a knack for debugging under pressure. Their teacher, a former biology major, learned to program alongside his students in their afterschool robotics club. Together, they embark on impossible quest and emerge transformed.

View initializers:hello.js
console.log('initializer hello.js');
View serviceworker.js
self.addEventListener('fetch', function(event) {
event.respondWith('mysite-dynamic').then(function(cache) {
return cache.match(event.request).then(function (response) {
return response || fetch(event.request).then(function(response) {
cache.put(event.request, response.clone());
return response;

Keybase proof

I hereby claim:

  • I am rossta on github.
  • I am rossta ( on keybase.
  • I have a public key ASBcO-l0V-5tVb1-FdQHOO7JBLthnAggypJpXmtFWYs3Mgo

To claim this, I am signing this object:



A Ruby refinement to demonstrate flattening of a nested array without using Array#flatten. Flattening logic is identical to my original implementation done as a Ruby module.

Exposes Array#custom_flatten when used as a refinement; one advantage to using a refinement is not having to check for non-array argument types. I'd be less inclined to use refinements in a production app given they haven't gained a lot of traction in the Ruby community, but I believe they're good for experimentation.


using FlattenRefinement


A Ruby module to demonstrate flattening of a nested array without using Array#flatten:


Flatten.flatten([1, [2, [3]]])
=> [1, 2, 3]
View offline.html
<!DOCTYPE html>
<title>You are not connected to the Internet</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
body {
background-color: #EFEFEF;
color: #2E2F30;
text-align: center;
View snake_case.rb
# I gave a take about Enumerator at ACR so naturally
# I had to solve the Snake Case challenge using one.
module SnakeCase
# Returns the number of paths for a
# grid given by m x n blocks
# @param m [Fixnum] width
# @param n [Fixnum] length
View test.log
ross@plato [05:27:55][~/dev/rossta/github_groove][master *]
$ bin/rake
Faraday::Builder is now Faraday::RackBuilder.
Run options: --seed 12311
# Running:
.....I, [2016-02-22T17:30:26.738851 #90230] INFO -- : Project sync'd!
......................^Cbefore_session hook failed: Interrupt:
/Users/ross/.gem/ruby/2.1.6/gems/pry-0.10.3/lib/pry/code/loc.rb:28:in `initialize'