My last stab at it.

Published 2011-04-22 on Farid Zakaria's Blog

Three20 & HypeMachine

Although I was pleasantly surprised by the application I had initially created for listening to music from HypeMachine, it was realistically my first iPhone application and was litered with incorrect memory management and perhaps improper design paradigms. I decided with some new knowledge (specifically the memory management and proper use of autorealase) I decided to give one more stab at it. I had also heard great things about Three20 and decided to incorporate it into the app.


Three20 is a open source Objective-C library used by dozens of well-known brands in the App Store, including Facebook, Posterous, Pulse,, and SCVNGR. Three20 provides powerful view controllers such as the Launcher, the popular Photo Browser, and internet-aware tables.

I could write many lengthy posts about my exposure and experience with using Three20 however I'll try to keep it concise and brief the points I wanted to reiterate. Three20 is a great library however documentation stinks. The only real way to learn functionality of the code is to go through the samples provided which is at least reasonable is undesirable. I am much more of a tutorial learner.

The UI is extends however is beautiful and although easy to implement once understand I found difficult to extend to suit my needs specifically. Regardless the end result I believe is a much nicer looking and cleaner (with respect to the code) iPhone application.


The biggest new addition to using Three20 is the pull-to-refresh UI. Things I'd like to do:

  • Create a new MP3 table cell element that includes the slider and play/pause button within it
  • Background playing of the music currently lasts only 10 mins. Deeper look into the AudioController should be done to investigate how to make it properly play music in the background
  • Hook up the iPod controls when the screen is locked to the application.
  • Caching of the stream
  • Allow a user to sign in and to heart/unheart songs
  • Searching for songs (should be easy to implement using Three20

Checkout the application on Github: and contribute if you'd like to make the iPhone experience better for browsing HypeMachine.