Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Timetable is a tool to organize structured content (sections of a workshop, or due tasks), schedule it along time and let you know about current and next sections/tasks.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Timetable is a 200-LOC script that parses structured content as YAML (for example, sections of a course/talk you're giving or tasks you have to do) and schedules this data from a start time. Optionally, it can give you hints about the current task/section you're in and the next one. Man today I'm not explaining myself well.


$ curl > timetable
$ chmod +x timetable
$ ./timetable something.yml [start time like 16:42] --[report|run]


Let's see an example. Imagine we're organizing a basic Ruby/Rails class for people who are new to Ruby. We might sketch the course structure in a YAML file, along with the duration of each section in minutes, like this (these are the contents of the example.yml included in this repo):

- Introduction: 10
- Ruby Objects:
  - Explain object model: 20
  - Pause: 5
  - Singleton classes: 15
  - Questions: 10
- Introduction to Rails:
  - The MVC pattern: 20
  - Rest architectures: 20
  - Our first blog with Rails: 10
- Questions: 10

Now we decide our class starts at 15:10. So we get timetable:

$ curl > timetable
$ chmod +x timetable

We grab the example yaml (or the one you just created):

$ curl > example.yml

And we run first a report to check the schedule of the class:

$ ./timetable example.yml 15:10 --report

0. Introduction             [15:10]
1. Ruby Objects
  1.0. Explain object model     [15:20]
  1.1. Pause                    [15:40]
  1.2. Singleton classes        [15:45]
  1.3. Questions                [16:00]
2. Introduction to Rails
  2.0. The MVC pattern          [16:10]
  2.1. Rest architectures       [16:30]
  2.2. Our first blog with Rails[16:50]
3. Questions                [17:00]

Live mode

We can also get information live, throughout the class, by running the --run flag:

$ ./timetable example.yml 15:10 --run

And imagining we're already at 15:30 and the course has started, we get this information, updated every second:


Other possible uses

  • Tasks that need to be scheduled throughout the day
  • ???
  • Profit!

Running the tests

If you run timetable without any arguments, it will run its test suite to check it's working ok.


MIT License. Copyright 2011 Codegram Technologies

Something went wrong with that request. Please try again.