Wednesday, December 5, 2012

Exercising my inner geek


Overview: The Y Mobile App is something that I wrote (and continue to maintain) for free in my spare time.  My previous "smartphone" was underpowered and incapable of displaying the "official" on-line exercise schedules, plus I wanted a quick way to check and see what was happening at the locations around me. 

I initially shared the app with friends and other members that I knew. Those people liked the app for its convenience and usefulness, and shared the link via Facebook and E-mail. Some people find that this app helps them discover new Group Exercise classes to try - there's a wide variety of classes, and the Group Ex instructors are great (I'm always amazed - and very thankful - at the amount of work they put into running those classes)!

If you have any comments or suggestions on improvements for the app, please leave a comment below!


The long story (with lots of geeky details):

A few years ago, I joined the local YMCA in attempt to counterbalance the hours that my butt spends in my office chair. One of the "member benefits" are the various Group Exercise classes (most of which still intimidate me - because I'm a geek, which means I'm accustomed to not fitting in). Since I bounce around between a few of their locations, it's handy to have on-line access to the schedule information. The problem is that their web site wasn't very compatible with my stinkin' old first generation LG Optimus cell phone. 



The phone has a decent web browser - the usual WebKit enabled thing that came with Android 2.2 (FroYo) - it just didn't like all of the lovely Flash widgets used by the YMCA site, and the response time was longer than my attention span (I hate waiting on computers - which is a driving factor in the software I write - if I can't stand it, nobody else should either). One day, when I was using a "real" computer to view the Group Exercise (Group Ex) information on the YMCA's website, I noticed the queries were landing at a website called GroupExPro.com, with a bunch of "human readable" parameters on the query string.

My inner geek couldn't resist the temptation, and I hit F12 to bring up Firebug and check out the  interaction between the browser and their site. I fiddled around with the options to see if a JSON response was possible (rather than the pre-formatted HTML stream), but couldn't find it. I decided to send an e-mail to the site's support/contact address to see if they already had a JSON option available. I was surprised to receive a response (on a weekend night!) from one of their developers who gave me the magic parameter needed to receive a JSON response. After a little testing with 'wget' (relax, I've started using 'curl' more often these days, due to development with RESTEasy), I was able to tweak my query strings to assemble the information I needed.

Since it was winter 2012 when I gleaned this information, I was ready for a fresh "geek project", and this seemed like a perfect fit. I was working on learning more about Google's AppEngine (GAE) and their App Engine Datastore (yeah, yet another NoSQL implementation). After a few nights of work, I had the "alpha release" ready for use. My app pulled the JSON data from the GroupExPro website every few hours, and stuffed it in the Memcache since it's "expendable information" that can be re-obtained if/when the Memcache fails or gets flushed.

The whole thing is coded up in GWT, which worked great for this project - On the Client Side, GWT provides simple RPC with the server, UI event handling, Browser History management, and compacts all of the UI's files into an obscenely tiny download. The hosting on GAE is free because the amount of CPU and bandwidth used by my app falls below Google's minimum thresholds, which means free hosting!

Here's the link to the live application (still running in Google App Engine):
http://ytwincities.appspot.com

15 comments:

  1. Your app is great, it's being talked about by Ys across the state! I appreciate that you were able to pull directly from GroupExPro. You'll probably want to have a conversation with someone in Y marketing about brand compliance though... the Y logo can't be used as a watermark like that.

    ReplyDelete
    Replies
    1. @Cameron - thanks for the feedback! When I initially wrote the app, it didn't contain any trademarks/images/logos for that very reason. Since the app provides Y members easy access to the Group Ex schedules, they granted me permission to use their logo on the app (in writing!)

      Delete
    2. Oh, that is excellent! Sorry to cast the brand compliance stone at you, Y-USA wired my brain to look for that sort of thing. Thanks for your great work on this!

      Delete
  2. Since updating my phone to Samsung Galaxy III I cannot scroll to see a full list of the classes. Any chance there is something that can be done! Faithful user before the phone switch!

    ReplyDelete
    Replies
    1. @Kellie - A few months ago, I heard of another person who encountered a problem with scrolling after getting a new Android phone. They did something in their browser to resolve the issue - I'll see if I can find out how they fixed it and post back here with the info. Thanks for the info!

      Delete
    2. @Kellie - here's something to try: Bring up the Y Mobile App on your phone, then press the "Menu" button and look for a setting called something like "Desktop View". Please let me know if that helps - thanks!

      Delete
  3. I have enjoyed this as an employee at the Y and as someone who enjoys the classes we offer. However, I had to bookmark the website into my browser. I just wanted to see if that's the way it's supposed to be because I cannot figure out if there is a way to turn it into an app on my smartphone (like Facebook, Nike+, Angry Birds, etc). I am in charge of creating newsletters for my branch and I would like to put this into the newsletter so it can reach more members but since I haven't been able to figure it out completely, I didn't want to put it in just yet. Any feedback you could give me would be greatly appreciated!

    ReplyDelete
    Replies
    1. Leah - glad to see another person who enjoys the app! The bookmark technique works well, and you can usually put that bookmark onto the Home Screen of your device.

      For iOS devices (iPhone/iPad/iPod-Touch), it works like this: http://www.apple.com/ios/add-to-home-screen/

      For the newer Android devices, it usually works like this:
      http://howto.cnet.com/8301-11310_39-20060624-285/adding-one-touch-bookmarks-to-your-androids-home-screen/

      Please let me know if you have any other questions - thanks!

      Delete
  4. Dude, this rocks!! Thanks for blessing us Y folk with you inner geek!

    ReplyDelete
  5. Dude, this rocks!! Thanks for blessing us Y folk with you inner geek!

    ReplyDelete
  6. Would you please add the new Forest Lake Y?

    ReplyDelete
  7. This is a really great app. Thank you for your hard work.

    ReplyDelete
  8. I have used your app for about four years. I was looking for an easy way to find classes and up-to-date info at my Y, and they actually suggested this app. I really like how it works & how simple it is and I still use it every week. Thank you for putting time into this!

    ReplyDelete