Hundred Pushups
Have you heard of Hundred Pushups? It's a simple six-week program to build up your strength by slowly increasing the number of pushups you can complete. By the end of six weeks, you should be able to complete 100 and along the way you've gotten a short workout working multiple muscle groups.
Since I'm still trying to lose weight, I figured I'd get started on the program (yesterday was my first day and managed to do 12 pushups at the end of my first set). However, being the geek that I am, I thought, "I should track my progress with a cool iPhone app." There is one available for $1.99 from the Hundred Pushups web site. There is a free web site that can be used to log your progress, too.
I checked out the web application and realized that all it did was track the results of your final set over the course of the six week plan, with the ability to add a comment. Very straightforward. But I want an iPhone app and suddenly inspiration struck...
Drop and give me two hours
Last night, I took the challenge to try and put together this application within two hours. Mission accomplished. Almost.
Check out http://pushups.snook.ca/ on your trusty iPhone or iPod Touch.
At 11pm last night, I grabbed a copy of jQTouch and started working out the interface. The documentation needs a little work (need some help, David?) but I managed to figure it out. I used localStorage to store the results. You can save the site to your home page where it'll run as a fullscreen application.
Improvements?
Of course, there's always room for improvement. Safari, Firefox, Internet Explorer 8 and Opera 10.50 has support for localStorage, too, so there's no reason why this can't be adjusted slightly to allow the application to work in desktop browsers, too. I also haven't tested this yet in WebOS or Android and I'd be intrigued to know how well it works.
Some of the interface needs refining, too. I'm using JavaScript-based confirm
statements to prevent accidental deletion (like swiping over an entry) but a more iPhone-like experience would be preferred.
If you haven't already, what are you waiting for? Head over to http://pushups.snook.ca/.
Conversation
LOL we just started doing this last week at work. what a coincidence.
Looks very nice. Have you thought about the ability to export/email the data? Being able to import it on another device would be nice too :)
@Tomas: Long term, yeah, an export feature would be nice. I just need to set up the server-side resources to pull that off. This first iteration meant no server-side. :) Email or even a "share" link would be reasonably straightforward to do.
Sweet - this can replace the .txt file I have on my desktop tracking my progress. I've got to the start of week 5 twice now, and keep on slacking off...
Awesome, works really well on the Nexus One!
What would also be nice would be the actual list of sets you have to do on each day. And a nice shiney icon, rather than the jQt default. Good work for 2 hours though!
I actually did a quick test and most of the interaction works in Safari and Firefox. (In fact, it looks quite nice in Safari.) Oddly, it doesn't seem to work in Chrome.
@Luc: that's not a bad idea, actually, to get the charts in there. As for the icon, yes, I debated whether to put together an official icon for this but I'm lazy. :) I just wanted to get the app out there!
Should be easy to add a simple graph showing progress, since the goal is fixed at the end of the time period. Quick visual to identify if you're falling behind or not.
Cool app! It's funny, I was at the gym yesterday and thinking I should just code my own app to track my workout with jqtouch, local storage, etc., since it is somewhat idiosyncratic. Why not make your own perfectly customized app when it's so easy?
Awesome Jonathan!
I did this challenge before with the little printout they offer and it was lame. This makes me want to do again. Added it to my home screen to make sure I get started.
Looks great! I started 100 push ups last week. You should check out couch 2 5k (gets you running 5k in 9 weeks, similar to the 100 pushups thing) if you want another keep fit/development challenge - I've been doing it for the last 8 weeks and fell much fitter. (I really sound like bad spam - sorry!)
I have the same problem and all my friends in the computer industry have the same problem lack of fiscal activity, lack of sleep, stress... So how do we solve that problem? We hope that 100 Pushups will hack the problem. I tyred the same program and I fail. Why I fail, because I hadn't any fun. Because I was forcing myself to do something that I maybe didn't enjoyed. What will happen after you do 100 pushups? If you don't continue to do pushups(or any other fiscal activity) after the program is over you will #fail. And how can you do something in the long run if you don't have any fun?
@Jonathan: Here is my idea of cool application. Pushups for Fun. The application will not measure how many pushups you made but how much fun you had making them. I think that this is much better aproach.
However making pushups will not resolve anybody problem there are better methods of weight loss. But you will fell more stronger and confident. And I will leave you with the Latin saying: Mens sana in corpore sano(a healthy mind in a healthy body)
Is this about jQTouch or about health ? :)
Thanks for the 100 pushups tip. I exercise once ever 50 mins, when my typing break kicks in.
Very cool I've had an idea for an app as well and just haven't had the time to dive into using the standard iPhone SDK. Maybe I'll get started with my app using jQTouch.
Jonathan have you thought about implementing CSS media queries for possibly showing more information in "landscape" or desktop viewing?
Wow, awesome work. Just having a peek at the code, i can understand the management functions, however i'm not sure i understand how your using the storage with JSON. At the top there is a large section called "Crockford JSON" any chance you could give us a rough explanation of that does?
Johnathan do you mind if I feature your app in my upcoming iPad application that runs iPhone Web Apps?
You can see a demo here: http://www.gullicksonlaboratories.com/dashapp
I have a "quick list" of apps that can be added with a tap (instead of by URL) and I'd like to include yours in this list, perhaps in a screenshot for the app store as well?
Thank-you!
Seems to work on android. Pretty cool hack.
I tried it on my Palm Pre and it doesn't work at all. I just get a black screen. I'd be happy to help you test if you wanna get it working for it though.
I'm on week 6 of the program and have been using http://pushupslogger.com, and as someone mentioned above it would be great if you could log each set rather than just the max.
I tested this on nexus and it worked fine.
Nice write-up, but sadly doesn't work on my HTC Tattoo (Android) and its native browser. I get a black screen and a scrollbar, but can't scroll actually.
Can still use it in Firefox on my desktop, just letting you know.
Jonathan,
I did the hundred pushups thing a few times... it's a great way to get going. My first time through, however, it took me closer to 14 weeks - and I started out at 32 :)
I tweeted my results out whenever I did them and found it to be a source of inspiration for many others. There was about 30 people doing it and I would chase them down for pushups, haha.
Hope you stick to it!
btw, great idea with the web app - should have thought of that before!
I also started playing with jQTouch recently and found the O'Reilly "Building iPhone Apps with HTML, CSS, and JavaScript" to be an excellent piece of documentation for jQTouch. The first few chapters are general iPhone webapp design, the rest of the book is develops a sample application with jQTouch.
It's also available online in the O'Reilly labs:
http://building-iphone-apps.labs.oreilly.com/
@Jake Smith: I've thought about media queries for other projects but probably wouldn't use it in this case. jQTouch can handle orientation changes (iirc).
@Jamie Knight: localStorage can only store string values. Since I want to store the results as a 'bundle', I needed to serialize the object literal and JSON seemed the easiest way to do this. Unfortunately, the iPhone doesn't have native JSON support so I'm using Crockford's JSON parser/stringifier but minified since I don't need readability... I just need the functions.
@Jason J. Gullickson: go right ahead. :)
@Jonathan Snook: Most important advice I can give for Hundred Pushups is that you've got to also focus on cardio & endurance. Otherwise, the pushups get easier but you find it harder to complete the entire set.
You know what would be really cool, while you're doing the pushups you place the iPhone beneath you and have a large button that you touch with your nose and it counts your pushups. Touch interface at it's best. Seriously you should add that.
The Hundred Pushups program is awesome, good luck with it man!
Nice Jonathan... Thinking of an app you need and puttin it together immediately. I admire you :) Since i've been also trying to lose weight for few years now :P
Hmm.. looks interesting. Gonna try it out.
Nice little app. One addition that would make it even better would be to give it a custom icon for those of us that want to add it to our iPhone's home screen. Right now it shows the default jQTouch icon. Other than that, well played!
Nice one snook. I actually bought a 3gs cause I wanted to try this thing out and see how long I could stick to it for. Mate, please make us an icon or let me know if you really dont want to, I could sketch something simple up for all of us.
Hey all,
Great implementation. For those interested in extending this idea to other goals, my program HabitShaper does exactly that (with charts).
Check out the short intro video at http://habitshaper.com
100 push ups in six weeks seems do-able but hard for people like me who don't do much exercise, great way to start off fitness. This looks good so I'm gonna try try it out and get fit for summer
After reading your post I thought I'd have a play myself. Here is a little web app I put together using JQTouch and localStorage - http://www.xlab.co.uk/weblog/714
Thanks for the inspiration :)