Skip to content

Instantly share code, notes, and snippets.

@jpfuentes2
Last active March 28, 2016 19:46
Show Gist options
  • Save jpfuentes2/a88bc6a81bc95f64dae3 to your computer and use it in GitHub Desktop.
Save jpfuentes2/a88bc6a81bc95f64dae3 to your computer and use it in GitHub Desktop.

Pushodoro

Pushodoro combines the Pomodoro Technique with a quick and simple calisthenics routine, starting with push-ups, to get your butt in shape.

We're killing ourselves

The awful truth: we sit on our butts toiling away at computers far too long -- and it's killing us. It makes us unhealthy, stupid, and we're 40% more likely to die within 15 years. The benefits from 30 minutes of rigorous exercise is completely erased if you sit for 6 hours.

Let's fix this problem

The Pomodoro Technique is a fantastic system which helps you focus, plan, and get your work done in a timely fashion. Also, it encourages you to take small breaks after finishing tasks which is a perfect time to get off your butt and do some calisthenics.

ADD MORE INFO HERE ABOUT WHY SMALL BREAKS OF STANDING FOR A FEW MINUTES AN HOUR LEADS TO A HEALTHIER LIFESTYLE

How it works

You create a task and start it with a timer of your preference (defaults to 30 minutes). When the time is up we'll alert you as a reminder to get up and do some push-ups. Of course, your options aren't limited to one exercise. We encourage you to switch it up; do some [sit-ups](http://en.wikipedia.org/wiki/Sit-up_(exercise), jumping jacks, [lunges](http://en.wikipedia.org/wiki/Lunge_(exercise), [crunches](http://en.wikipedia.org/wiki/Crunch_(exercise), or [squats](http://en.wikipedia.org/wiki/Squat_(exercise)!

Features

  • Pomodoro Technique
  • Elegant, intuitive, & stream-lined UX for task management
  • Encourage people to be healthier during Pomodoro "break" time
  • Makes getting shit done lively & fun
  • Achievements/points system for "leveling up"
  • Add social layer to engender friendly competition: "I did 20 more push ups than @jay!"

Prototype

I'm a proponent of building small, simple, and elegant tools. Thus, my prototype is ridiculously lean and concise. Check out the code below!

#!/usr/bin/env ruby
require "terminal-notifier"
require "clap"
require "json"
@minutes = 30
@task = "Empty Task"
Clap.run ARGV,
"--minutes" => ->(i) { @minutes = i.to_f },
"--task" => ->(t) { @task = t }
sleep @minutes * 60
TerminalNotifier.notify "Finished '#{@task}' after #{@minutes} minute(s).", {
title: "Pushodoro task finished",
subtitle: "Do 10 push ups! Get moving!"
}
`say 'Pushdoro task complete. Do 10 push ups!'`
puts "Did you Pushodoro? [y/n]"
pushodored = $stdin.gets.chomp.downcase == "y"
# save to our web-rofl-scale database
File.open("./tasks.log", "a") do |f|
record = {
task: @task,
minutes: @minutes,
finished_at: Time.now.to_i,
pushodored: pushodored
}
f.write JSON.generate(record) + "\n"
end
# Example: ./pushodoro.rb --task "finish pushodoro!" --minutes 15
@jpfuentes2
Copy link
Author

Made it public just now :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment