Customized public transportation predictions
Ruby
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
views
.env
.ruby-version
Gemfile
Gemfile.lock
Procfile
Rakefile
app.rb
config.ru
nextbus.rb
readme.md
user.rb

readme.md

about

This utility saves money for those who use a feature phone to access the NextBus service for bus predictions via text message.

With the standard system, each prediction costs at least two text messages: one to NextBus, and one for the reply.

If multiple bus routes serve a stop, even more text messages are required:

  1. me: Tell me the predictions for stop 8819
  2. NextBus: Do you want route 70 or 70A?
  3. me: 70
  4. NextBus: buses arrive in 7, 30, and 50 minutes.

Cost: Four text messages. Plus I don't get predictions for route 70A, which would also work for me.

NextBus does allow you to save a query for future use (saving us question 2 for the specific route), but the minimum interaction still requires two text messages.

benefits of Cheap Buster

  1. costs one text message per query
  2. provides predictions for more than one route
  3. sends the prediction via email or text message (which is cheaper for you?)

limitations

  1. pre-registration of your routes is required (no ad-hoc queries)
  2. the service currently runs on a free Heroku dyno; your response may be delayed while the application wakes.

operation

[ Seven of Nine says: "elaborate" ]

  • call from any phone (probably a feature phone)
  • Google Voice receives call, sends "missed call" email
  • CloudMailin translates the email into a POST request
  • Sinatra application looks up phone number, finds user's bus stops
  • query NextBus for arrival predictions
  • based on user's notification preference:
    • send predictions via email ( Mandrill/MailChimp )
    • send predictions via text message ( Amazon Simple Notification Service )
    • [ evaluate: SNS can do both email and text message, plus HTTP & SQS. Perhaps use it for all notifications? ]

enhancements?

  • schedule a query for a particular time (instead of calling)