<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Drew5.NET &#187; Development</title>
	<atom:link href="http://drew5.net/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://drew5.net</link>
	<description>My 5 Cents</description>
	<lastBuildDate>Mon, 28 Nov 2011 20:14:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Google Places for iOS 5 SDK</title>
		<link>http://drew5.net/2011/11/28/google-places-for-ios-5-sdk/</link>
		<comments>http://drew5.net/2011/11/28/google-places-for-ios-5-sdk/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 20:14:38 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[Google Places]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=469</guid>
		<description><![CDATA[I am integrating the Google Places API into an iPhone app that I am building.  I found an existing library that uses Google Local Search but that is deprecated.  So I forked that solution and came up with Google Places Library. As the story goes&#8230;when the application is configured to allow current location, the fun [...]]]></description>
			<content:encoded><![CDATA[<p>I am integrating the <a href="http://code.google.com/apis/maps/documentation/places/" target="_blank">Google Places API</a> into an iPhone app that I am building.  I found an existing library that uses Google Local Search but that is deprecated.  So I forked that solution and came up with <a href="https://github.com/jdruid/Google-Places-for-iOS-5" target="_blank">Google Places Library</a>.</p>
<p>As the story goes&#8230;when the application is configured to allow current location, the fun begins.</p>
<p>First configure your project to include the CoreLocation and the MapKit framework.  I am using a single view project for this example but it can be any project really.</p>
<p>In the RootViewController I need to define some delegates.  Since I will be embedding a UITableView and UISearchBar I need the following to be added: &lt;<em>UITextFieldDelegate</em>, <em>UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate, CLLocationManagerDelegate, GooglePlacesConnectionDelegate</em>&gt;</p>
<p>UITableViewDelegate &#8211; will help populate the data on my table.</p>
<p>UISearchBarDelegate &#8211; will perform some interactions with the searching of places</p>
<p>CLLocationManagerDelegate &#8211; will get the location</p>
<p>GooglePlacesConnectionDelegate &#8211; will perform the main search</p>
<p>Once that is complete I can then add some outlets for my UI and set up some properties.</p>
<pre class="brush:applescript">#import
#import
#import "GooglePlacesConnection.h"

@class GooglePlacesObject;

@interface RootViewController : UIViewController
{
    IBOutlet UITableView    *tableView;
    IBOutlet UIButton       *btnCancel;
    IBOutlet UISearchBar    *searchBar;

    CLLocationManager       *locationManager;
    CLLocation              *currentLocation;

    NSMutableData           *responseData;
    NSMutableArray          *locations;
    NSString                *searchString;

    GooglePlacesConnection  *googlePlacesConnection;
}

@property (nonatomic, getter = isResultsLoaded) BOOL resultsLoaded;

@property (nonatomic, retain) CLLocationManager *locationManager;
@property (nonatomic, retain) CLLocation        *currentLocation;

@property (nonatomic, retain) NSURLConnection   *urlConnection;
@property (nonatomic, retain) NSMutableData     *responseData;
@property (nonatomic, retain) NSMutableArray    *locations;

@end</pre>
<p>Lets move on to the meat and potatoes of this app.  Within the .m file I need to initialize some of my variables and get the GoogleConnection going.</p>
<pre class="brush:applescript">- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    responseData = [[NSMutableData data] init];

    [[self locationManager] startUpdatingLocation];

    [tableView reloadData];
    [tableView setContentOffset:CGPointZero animated:NO];

   // [searchBar setDelegate:self];

    googlePlacesConnection = [[GooglePlacesConnection alloc] initWithDelegate:self];

}</pre>
<p>Do not forget to set the url connection to nil in the viewDidUnload.</p>
<p>Lets move to the Location Manager methods.</p>
<p>The first one returns a location manager or creates one if necessary</p>
<pre class="brush:applescript">- (CLLocationManager *)locationManager
{

    if (locationManager != nil)
    {
		return locationManager;
	}

	locationManager = [[CLLocationManager alloc] init];
	[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
	[locationManager setDelegate:self];

	return locationManager;
}</pre>
<p>The next method really starts the fun. In my case I am constructing a URL for the Google Places API. If you are not familiar with it you can find more about it <a href="http://code.google.com/apis/maps/documentation/places/" target="_blank">here</a>. The url takes the following parameters:</p>
<ul>
<li>key: required &#8211; your API key</li>
<li>location: required &#8211; latitude/longitude around which to retrieve Place information. Location manager will help here</li>
<li>radius: required &#8211; distance in meters. For the initial search I have 500, for the UISearchBar I moved it out to 1000.</li>
<li>sensor: required &#8211; needs to be set to TRUE if came from a device with a location sensor</li>
<li>keyword: optional &#8211; a term to be matched if searching</li>
<li>language: optional &#8211; <a href="https://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&amp;gid=1" target="_blank">language codes</a></li>
<li>name: optional &#8211; term to be matched against the names of the Places</li>
<li>types: narrows the search to a specific type of place. Here is a <a href="http://code.google.com/apis/maps/documentation/places/supported_types.html" target="_blank">list</a></li>
</ul>
<p>At the end of all of this the url will look like this:</p>
<p>https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&#038;radius=500&#038;types=food&#038;name=harbour&#038;sensor=false&#038;key=AIzaSyAiFpFd85eMtfbvmVNEYuNds5TEF9FjIPI</p>
<pre class="brush:applescript">- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{

    if ([self isResultsLoaded])
    {
		return;
	}

	[self setResultsLoaded:YES];

    currentLocation = newLocation;

    //What places to search for
    NSString *searchLocations = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|%@|%@|%@",
                                 kBar,
                                 kRestaurant,
                                 kCafe,
                                 kBakery,
                                 kFood,
                                 kLodging,
                                 kMealDelivery,
                                 kMealTakeaway,
                                 kNightClub
                                 ];

    [googlePlacesConnection getGoogleObjects:CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude) andTypes:searchLocations];

}</pre>
<p>The last methods are the setting of the objects and some clean up.</p>
<pre class="brush:applescript">- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error
{
    NSLog(@"locationManager FAIL");
    NSLog(@"%@", [error description]);
}

#pragma mark -
#pragma mark NSURLConnections

- (void)googlePlacesConnection:(GooglePlacesConnection *)conn didFinishLoadingWithGooglePlacesObjects:(NSMutableArray *)objects
{

    if ([objects count] == 0) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No matches found near this location"
                                                        message:@"Try another place name or address"
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles: nil];
        [alert show];
    } else {
        locations = objects;
        [tableView reloadData];
    }
}

- (void) googlePlacesConnection:(GooglePlacesConnection *)conn didFailWithError:(NSError *)error
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error finding place - Try again"
                                                    message:[error localizedDescription]
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles: nil];
    [alert show];
}</pre>
<p>I am not going to dive deep into the GooglePlacesConnection class or the GooglePlacesObject. However I will say this, the GooglePlacesObject is just that. An object of the Google Place. It has an init that will take the dictionary object from the JSON results. The GooglePlacesConnection does the work of constructing of the URL and issuing the request. One thing to note, the only error checking on the Google Place request is if there are 0 results or an error with the URL or request. There are other <a href="http://code.google.com/apis/maps/documentation/places/#PlaceSearchStatusCodes" target="_blank">status codes</a> if you want to add them in if needed.</p>
<p>Back into the RootViewController.m, we now should have a locations NSMutableArray so we can now populate our UITableView.</p>
<pre class="brush:applescript">- (NSInteger)numberOfSectionsInTableView:(UITableView *)theTableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)theTableView numberOfRowsInSection:(NSInteger)section
{
    return [locations count];
}

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

	static NSString *CellIdentifier = @"LocationCell";

	// Dequeue or create a cell of the appropriate type.
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell                = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        cell.accessoryType  = UITableViewCellAccessoryDisclosureIndicator;
    }

    // Get the object to display and set the value in the cell.
    GooglePlacesObject *place     = [[GooglePlacesObject alloc] init];
    place                       = [locations objectAtIndex:[indexPath row]];

    cell.textLabel.text                         = place.name;
    cell.textLabel.adjustsFontSizeToFitWidth    = YES;
	cell.textLabel.font                         = [UIFont systemFontOfSize:12.0];
	cell.textLabel.minimumFontSize              = 10;
	cell.textLabel.numberOfLines                = 4;
	cell.textLabel.lineBreakMode                = UILineBreakModeWordWrap;
    cell.textLabel.textColor                    = [UIColor colorWithRed:0.0 green:128.0/255.0 blue:0.0 alpha:1.0];
    cell.textLabel.textAlignment                = UITextAlignmentLeft;

    cell.detailTextLabel.text                   = place.vicinity;
    cell.detailTextLabel.textColor              = [UIColor darkGrayColor];
    cell.detailTextLabel.font                   = [UIFont systemFontOfSize:10.0];

    return cell;
}</pre>
<p>We set the count of the array to the number of rows in section. We then get the locations object at the indexPath and set that to a GooglePlacesObject and populate the cell.</p>
<p>To handle the UISeachBar here is the code:</p>
<pre class="brush:applescript">- (void)updateSearchString:(NSString*)aSearchString
{
    searchString = [[NSString alloc]initWithString:aSearchString];

    //What places to search for
    NSString *searchLocations = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@|%@|%@|%@",
                                 kBar,
                                 kRestaurant,
                                 kCafe,
                                 kBakery,
                                 kFood,
                                 kLodging,
                                 kMealDelivery,
                                 kMealTakeaway,
                                 kNightClub
                                 ];

    [googlePlacesConnection getGoogleObjectsWithQuery:searchString andCoordinates:CLLocationCoordinate2DMake(currentLocation.coordinate.latitude, currentLocation.coordinate.longitude) andTypes:searchLocations];

    [tableView reloadData];
}

- (void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar
{
    [theSearchBar setShowsCancelButton:YES animated:YES];
    tableView.allowsSelection   = NO;
    tableView.scrollEnabled     = NO;

}

- (void)searchBarCancelButtonClicked:(UISearchBar *)theSearchBar
{
    [theSearchBar setShowsCancelButton:NO animated:YES];
    [theSearchBar resignFirstResponder];
    tableView.allowsSelection   = YES;
    tableView.scrollEnabled     = YES;
    theSearchBar.text           = @"";

    [self updateSearchString:searchBar.text];
}

- (void)searchBarSearchButtonClicked:(UISearchBar *)theSearchBar
{
    tableView.allowsSelection   = YES;
    tableView.scrollEnabled     = YES;

    [self updateSearchString:theSearchBar.text];
}</pre>
<p>The second, third and fourth method handle the interaction with the UISearchBar itself. Each calls the updateSearchString method and passes in the text from the search bar. updateSearchString performs a similar search to the location manager search, except it is passing in the search string as well. If you look in the GooglePlacesConnection method I am also expanding the search radius to 1000 from 500.</p>
<p>That is it. You can find the <a href="https://github.com/jdruid/Google-Places-for-iOS-5" target="_blank">source</a> on github.</p>
<p>My next update will be adding a &#8216;pull to refresh&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2011/11/28/google-places-for-ios-5-sdk/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Background Image Shrinking on iPad</title>
		<link>http://drew5.net/2011/07/13/background-image-shrinking-on-ipad/</link>
		<comments>http://drew5.net/2011/07/13/background-image-shrinking-on-ipad/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 00:17:52 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=436</guid>
		<description><![CDATA[Recently I was building a site that had full page backgrounds.  One of the pages had a long vertical background to accommodate the content. Here is an example of what I am talking about: body { background: #fff url(img/my-really-large.jpg) top center no-repeat; } Example (view on Desktop) There really is not an issue (aside from image load) when [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was building a site that had full page backgrounds.  One of the pages had a long vertical background to accommodate the content.</p>
<p>Here is an example of what I am talking about:</p>
<pre class="brush:css">body {
  background: #fff url(img/my-really-large.jpg) top center no-repeat;
}</pre>
<p><a href="http://drew5.net/examples/backgrounds/background-1.html" target="_blank">Example</a> (view on Desktop)</p>
<p>There really is not an issue (aside from image load) when viewing on Desktop browsers.  However, I would like this site to be compatible with the iPad as well.  Unfortunately this simple technique will not work on the iPad.</p>
<p>The iPad uses Mobile Safari which, by default, scales websites to fit it&#8217;s viewport.  It does this to text, images and background images.  It has to do with a resource limit put on the device from displaying large images.  The maximum number is 1024 x 1024 x 3 which is 3,145,728 (result varies a bit depending on iPhone or iPad).  However, Mobile Safari will scale your image accordingly to fit that size and your screen.</p>
<p><a href="http://drew5.net/examples/backgrounds/background-1.html" target="_blank">You will end up with something like this</a> (view on iPad)</p>
<p><a href="http://drew5.net/wp-content/uploads/2011/07/photo-1.png"><img class="size-medium wp-image-440 alignnone" title="iOS with no fix" src="http://drew5.net/wp-content/uploads/2011/07/photo-1-225x300.png" alt="" width="225" height="300" /></a></p>
<p>&nbsp;</p>
<p>There is a simple fix and it has to do with some newer -webkit tags. Add the following to your body declaration in your CSS:</p>
<pre>  -webkit-background-size: 1200px 1900px;</pre>
<p>(where 1200 1900 is the size of your image)</p>
<p>This will only render on WebKit browsers and fix the issue of scaling.</p>
<p><a href="http://drew5.net/examples/backgrounds/background-2.html" target="_blank">See here</a> (on iPad please)</p>
<p><a href="http://drew5.net/wp-content/uploads/2011/07/photo-2.png"><img class="alignnone size-medium wp-image-441" title="photo 2" src="http://drew5.net/wp-content/uploads/2011/07/photo-2-225x300.png" alt="" width="225" height="300" /></a></p>
<p>This will force the iOS device to load the full background.</p>
<p>This tip will definitely be coming in handy again.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2011/07/13/background-image-shrinking-on-ipad/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Incase Product Support</title>
		<link>http://drew5.net/2011/05/07/incase-product-support/</link>
		<comments>http://drew5.net/2011/05/07/incase-product-support/#comments</comments>
		<pubDate>Sat, 07 May 2011 20:59:01 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Nonsense]]></category>
		<category><![CDATA[Case]]></category>
		<category><![CDATA[Incase]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPad 2]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Warranty]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=405</guid>
		<description><![CDATA[I recently purchased an iPad 2 and started my search for a case.  Apple makes the new case which has &#8216;magnets&#8217; and puts the iPad to sleep when it is covered and wakes it up when you open the case.  Sounds pretty cool but it does not protect the back of the iPad.  Placing the [...]]]></description>
			<content:encoded><![CDATA[<p>I recently purchased an iPad 2 and started my search for a case.  Apple makes the new case which has &#8216;magnets&#8217; and puts the iPad to sleep when it is covered and wakes it up when you open the case.  Sounds pretty cool but it does not protect the back of the iPad.  Placing the iPad down on a desk or a park bench will allow it to get scratched easily so I ruled that one out pretty quickly.  I then narrowed in on a &#8216;notebook&#8217; looking case.  Something that felt nice, protected it in the front and back and functional.  I wanted to the the &#8216;original&#8217; iPad case from Apple, but the iPad 2 is much thinner and it will not work.</p>
<p>I found the <a href="http://www.goincase.com/products/index.php/detail/book-jacket-cl57923" target="_blank">Incase Book Jacket </a>at <a href="http://www.bestbuy.com/site/Incase+-+Book+Jacket+Case+for+Apple%26%23174%3B+iPad%26%23174%3B+2/2318055.p?id=1218320818054&amp;skuId=2318055&amp;st=incase&amp;cp=1&amp;lp=1" target="_blank">BestBuy</a>.  It looked great, felt great and had all of these &#8216;slots&#8217; for different positions of the iPad.  So I picked one up and used it right away.</p>
<p><img class="aligncenter size-medium wp-image-412" title="open-1" src="http://drew5.net/wp-content/uploads/2011/05/open-11-300x227.jpg" alt="" width="300" height="227" /></p>
<div class="clear"></div>
<p><img class="aligncenter size-medium wp-image-413" title="open-2" src="http://drew5.net/wp-content/uploads/2011/05/open-21-300x227.jpg" alt="" width="300" height="227" /></p>
<div class="clear"></div>
<p><img class="aligncenter size-medium wp-image-414" title="open-3" src="http://drew5.net/wp-content/uploads/2011/05/open-31-300x227.jpg" alt="" width="300" height="227" /></p>
<div class="clear"></div>
<p>My overall reaction is it is nice.  Looks and feel is top notch.  Functionality is not.  There are 3 slots within the case to allow different angles of use.  1 slot works all the time.</p>
<p><img class="aligncenter size-medium wp-image-415" title="slot3" src="http://drew5.net/wp-content/uploads/2011/05/slot3-300x228.jpg" alt="" width="300" height="228" /></p>
<div class="clear"></div>
<p>This postion works well.  It is great for watching Netflix or any videos on it.  You can type on it but this position is ideal for viewing and swiping.</p>
<p>This is the second slot.  This one works pretty well.  Not as much as the first one but it works.  You can type on here but be careful, at random times it slips out of the slot.  A little annoying.</p>
<p><img class="aligncenter size-medium wp-image-416" title="slot-2" src="http://drew5.net/wp-content/uploads/2011/05/slot-2-300x228.jpg" alt="" width="300" height="228" /></p>
<div class="clear"></div>
<p>The third slot seems to be ideal for typing.  Just a slight angle and type away.  The problem is I can never get the iPad to stay in the slot.  It keeps slipping out.  And if I do get it to stay as soon as I breath on it let alone type, it slips out.</p>
<p><img class="aligncenter size-medium wp-image-417" title="slot-1" src="http://drew5.net/wp-content/uploads/2011/05/slot-1-300x228.jpg" alt="" width="300" height="228" /></p>
<div class="clear"></div>
<p>There&#8217;s not a whole lot I can do about it now.  I contacted Incase and they responded with the following:</p>
<blockquote><p>
Hello Josh,</p>
<p>Thank you for contacting Incase Designs Corp.</p>
<p>If you have a problem with your warranted Incase product you may file a claim to have it replaced by going to the following URL:</p>
<p><a href="http://www.goincase.com/warranty-claim-form/" target="_blank">http://www.goincase.com/warranty-claim-form/</a></p>
<p>Sincerely,</p>
<p>Incase Designs Corp.</p>
</blockquote>
<p>I can&#8217;t really warranty it since I do not have the receipt and really do not want to deal with the hassle.  So I am informing others about the case.  Reviews posted on GoIncase.com, Amazon and BestBuy will hopefully educate buyers along with informing Incase that they need to fix the issue at some point.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2011/05/07/incase-product-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Accordion with 8 Lines of Code</title>
		<link>http://drew5.net/2011/03/10/jquery-accordion-with-8-lines-of-code/</link>
		<comments>http://drew5.net/2011/03/10/jquery-accordion-with-8-lines-of-code/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 17:55:02 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Accordion]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JavaScript Accordion]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[WebKit]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=343</guid>
		<description><![CDATA[Ok.  Maybe more than 8 lines of code but very little.  I have been working with another agency (that will rename nameless) on a mobile web site for a client of ours.  The agency provided the HTML/CSS/Images and Script for our technology team to implement.  We hook up all the back end and call it [...]]]></description>
			<content:encoded><![CDATA[<p>Ok.  Maybe more than 8 lines of code but very little.  I have been working with another agency (that will rename nameless) on a mobile web site for a client of ours.  The agency provided the HTML/CSS/Images and Script for our technology team to implement.  We hook up all the back end and call it a day.</p>
<p>The section that came into question was an &#8216;accordion&#8217; style UI for a set of FAQ&#8217;s and other content.  When I first loaded up their pages, everything worked fine.  Upon further inspection of their code I noticed a lot of JavaScript libraries that were not needed.  They included jQuery AND Prototype along with some effects and accordion scripts.  (Prototype alone is almost 100kb in file size and the other scripts were 42kb.  That still does not include the 70kb for jQuery)  I thought to myself, this is a mobile site&#8230;why have extra scripts if not needed.  To make matters even more funny, we are supporting Mobile Safari (iOS), Mobile Chrome (Android) and the BlackBerry Browser (RIM), it does not work in BlackBerry at all.  Forget enabling or disabling JavaScript it just does not work.  Even the elements are hidden.</p>
<p>So it got me thinking about the old saying, &#8220;if you want something done right you have to do it yourself&#8221;.  So I did.</p>
<p>I removed all the libraries except for jQuery and made all of the elements visible by default.  Basically if a user does not have JavaScript enabled then they can see everything.</p>
<p>Here is my HTML</p>
<pre class="brush:xml">&lt;div&gt;
     &lt;a href="#"&gt;Really Great Information&lt;/a&gt;
     &lt;div class="accordion_content"&gt;
          Content that will expand
     &lt;/div&gt;
     &lt;a href="#"&gt;Really Great Information&lt;/a&gt;
     &lt;div class="accordion_content"&gt;
         Content that will expand again
     &lt;/div&gt; 
&lt;/div&gt;</pre>
<p>Styles and other HTML can be wrapped around it.  You can change the paragraph tags to div&#8217;s if needed but that is the structure you need more or less.</p>
<p>Now for the JavaScript.</p>
<p>Make sure you embed jQuery (I did from Google)</p>
<pre class="brush:js">$('.accordion_content').hide();
//If JavaScript is not enabled, all content containers stay open, which is nice.

//Next, bind the click event to all of the targets, in this case all 'a' elements in the 'accordion_toggle' class
$('.accordion_toggle a').click(function(e){
     //code to come
});
//Within the click function we need to first check if the element being clicked is set as the 'current' which means open.  If it is, we need to remove the class 'current' and close the content container.
if($(this).parent().hasClass('current')) {
     $(this).parent()
          .removeClass('current')
          .next('.accordion_content').slideUp();
} else {
...
}</pre>
<p>Then hide all open content containers:</p>
<p>If the element does not have the &#8216;current&#8217; class then we need to first remove the &#8216;old&#8217; &#8216;current&#8217;, close the &#8216;old&#8217; &#8216;current&#8217; and open and set the new &#8216;current&#8217;.</p>
<pre class="brush:js">$(document).find('.current')
     .removeClass('current')
     .next('.accordion_content').slideUp();

$(this).parent()
     .addClass('current')
     .next('.accordion_content').slideDown();</pre>
<p>Done.</p>
<p>Here is the final:</p>
<pre class="brush:js">$(function() {
     $('.accordion_content').hide();
     $('.accordion_toggle a').click(function(e){
          if($(this).parent().hasClass('current')) {
               $(this).parent()
                   .removeClass('current')
                   .next('.accordion_content').slideUp();
          } else {
               $(document).find('.current')
                    .removeClass('current')
                    .next('.accordion_content').slideUp();
              $(this).parent()
                    .addClass('current')
                    .next('.accordion_content').slideDown();
          }
          e.preventDefault();
      });
});</pre>
<p>Depending on how you format the code and what you count as a &#8216;line&#8217; it can be about 8 lines <img src='http://drew5.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a title="Demo" href="http://drew5.net/examples/accordion-example/example1.html" target="_blank">Demo here</a> &#8211; View in Mobile Browser.  Desktop browser will work as well.  Works on iOS, Android, BlackBerry.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2011/03/10/jquery-accordion-with-8-lines-of-code/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>STATUS: 404 NOT FOUND @ STORY WORLDWIDE</title>
		<link>http://drew5.net/2010/09/23/status-404-not-found-story-worldwide/</link>
		<comments>http://drew5.net/2010/09/23/status-404-not-found-story-worldwide/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 19:59:46 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=328</guid>
		<description><![CDATA[When I thought about writing a goodbye letter I figured I would do the usual and say thanks and good luck.  But to be honest it is more than that (thanks for the inspiration Martin).  It is more than thanks and good luck.  It is laughs, tears, wins, losses, thrives and struggles. Eight years is [...]]]></description>
			<content:encoded><![CDATA[<p>When I thought about writing a goodbye letter I figured I would do the usual and say thanks and good luck.  But to be honest it is more than that (thanks for the inspiration Martin).  It is more than thanks and good luck.  It is laughs, tears, wins, losses, thrives and struggles.</p>
<p>Eight years is a long time.  That is like going to high school twice (and times this place is like a high school).  From happy hours where Greg is having a strawberry eating contest, Todd eating full spoonfuls of Wasabi, Travis throwing up in creative (sorry Travis), Rica being carted down the mountain by the ski patrol, Cat, Stacy and Ben hi-jacking a school bus, Dave making all the PM’s cry, Mike and his hillbilly teeth, Chet break dancing in a suit of armor, American Idol style contest (does anyone still have that video of the Carrie rapping?), Softball and the Mojito Crew, summer parties at the beach, car arguments about BMW’s VS. Audi’s VS Fords, a little incident with a scooter and the chains at the Maritime Center, trips to Stratton and more.</p>
<p>Let’s also not forget the ones who have passed through these doors like Liz, Kai, Tai, Llama Lynn, Carol, Parchment, Tracy, Yury, Max and Flannigan, they were truly a pleasure :p</p>
<p>From Rimmel London to all the fun with the lovely ladies of COTY (JLo, SJP, Shania), the bottled water sites (Nestle) and all of their crazy contest that Stacy could dream up (Shrek / choose your own adventure! ARG), to some very serious clients like TradeTrak and Connolly Consulting, even K2.  We were ahead of the time with some of the video contest (glo girls &amp; CK In2U) and fan competitions (ultimate fans) and even our own Stumble Upon (Perrier IER) and never forget the webisodes (obviously Spraychel).  We even did a mobile marketing app that took photos and uploaded them to a site that sent out emails back in 2005.  Here’s to the 4 AM launches of Acquisitions or e-Service, the 3 AM fun with the MLB contests, Sunday or even Saturday Midnight launches of contests, New Years Eve site launches and a few all nighters thrown in (shout out to Mark).   So many to list…</p>
<p>I am very proud to have been part of this company, we have done great work each and every year and I truly wish the best for everyone.</p>
<p>Special thanks to my team – Dave, Anthony, Tom, Travis, Steve and Jacek.  It has been has been a pleasure to work with all of you!  You all made “work” so much fun.</p>
<p>Thanks again.  PS – I won’t remove you any of you as my Facebook friends</p>
<p><a href="mailto:joshdrew@gmail.com">joshdrew@gmail.com</a> | <a href="http://www.facebook.com/jdrew" target="_blank">facebook.com/jdrew</a> |  <a href="http://twitter.com/@jdruid" target="_blank">twitter.com/@jdruid</a> | <a href="http://drew5.net">drew5.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/09/23/status-404-not-found-story-worldwide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad App Reviews &#8211; Fun</title>
		<link>http://drew5.net/2010/06/09/ipad-app-reviews-fun/</link>
		<comments>http://drew5.net/2010/06/09/ipad-app-reviews-fun/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 17:21:03 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[ABC]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[GAP]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=317</guid>
		<description><![CDATA[These 3 are in the category of fun since they are sort of random. ABC Player Kudos for ABC on this one.  Real nice app.  The iPad just makes images pop and when you have some great images, it makes the app look even better.  That is what this has.  Awesome large images and previews [...]]]></description>
			<content:encoded><![CDATA[<p>These 3 are in the category of fun since they are sort of random. <img src='http://drew5.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ABC Player</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ba-w0ELWF1k"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/ba-w0ELWF1k" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Kudos for ABC on this one.  Real nice app.  The iPad just makes images pop and when you have some great images, it makes the app look even better.  That is what this has.  Awesome large images and previews of ABC shows.  Ability to watch quite a bit of past episodes, check scheduling and keep a history of videos watched gives this app a lot of positives.</p>
<p>Epicurious</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/0CoB27WeT-I"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/0CoB27WeT-I" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>For the aspiring cook, this app is for you.  It feels like the Betty Crocker cookbook.  Tabs on the side, big images, ingredient list, reviews and more.  Solid functioning app.  The one thing lacking is video.</p>
<p>GAP 1969 Stream</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cZZF5OXz1nM"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/cZZF5OXz1nM" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>I like this app not because of the GAP or products, but because of an entirely new way to navigate.  The app gives off the impression that it is endless.  Keep scrolling left, right or up or down you will never come to the end.  It repeats, but it works as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/06/09/ipad-app-reviews-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad App Review &#8211; News</title>
		<link>http://drew5.net/2010/06/08/ipad-app-review-news/</link>
		<comments>http://drew5.net/2010/06/08/ipad-app-review-news/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 17:09:21 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Reuters]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=315</guid>
		<description><![CDATA[Today is the news category. USA Today, Reuters, and Bloomberg USA Today USA Today takes a safe approach to their app.  It looks EXACTLY like their newspaper and functions like a web site.  At times you can get lost when navigating through articles.  The ads don&#8217;t function that well.  Orientation of the device does not [...]]]></description>
			<content:encoded><![CDATA[<p>Today is the news category.</p>
<p>USA Today, Reuters, and Bloomberg</p>
<p>USA Today</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/FBrzACZzcLw"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/FBrzACZzcLw" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>USA Today takes a safe approach to their app.  It looks EXACTLY like their newspaper and functions like a web site.  At times you can get lost when navigating through articles.  The ads don&#8217;t function that well.  Orientation of the device does not provide that much enjoyment.  The app is ok.</p>
<p>Reuters</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/NRwdBXCWBAU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/NRwdBXCWBAU" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>The Reuters app is a great news app.  Very clean.  It uses icons that we are familiar with (the dot notation for swipes).  Image gallery, pop up video and ease of getting back to all of the main articles.  They make use of orientation by moving the article to the right and giving you options to jump to other sections or directly into an article.  Interactive stock tickers give this app a little more life.  Overall, solid.</p>
<p>Bloomberg</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/60u1s2hDFEg"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/60u1s2hDFEg" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Bloomberg took a different approach to colors, instead of white or light background they went black.  Not a fan.  Very little images if any, navigation is clunky, drop-downs seems like a band-aid to get to where you want to go.  Hopefully next release will be improved.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/06/08/ipad-app-review-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad App Review &#8211; Books</title>
		<link>http://drew5.net/2010/06/07/ipad-app-review-books/</link>
		<comments>http://drew5.net/2010/06/07/ipad-app-review-books/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 17:00:21 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=312</guid>
		<description><![CDATA[Like the previous reviews, the topic today is Books.  I will be looking at Alice in Wonderland, Disney Digital Books and Marvel Comics. Alice in Wonderland Here is another app that got a lot of hype.  You can read a story and move objects around.  Is that really ground breaking?  It is basically a picture [...]]]></description>
			<content:encoded><![CDATA[<p>Like the previous reviews, the topic today is Books.  I will be looking at Alice in Wonderland, Disney Digital Books and Marvel Comics.</p>
<p>Alice in Wonderland</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Up7704jh8bY"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/Up7704jh8bY" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Here is another app that got a lot of hype.  You can read a story and move objects around.  Is that really ground breaking?  It is basically a picture book with areas that you can either swipe/drag or rotate and they move.  I think pop up books and scratch and sniff are more interactive then this.  From a layout and design perspective it is pretty cool.  Reading to your kids the book also is nice since they can interact with some objects.</p>
<p>Disney Digital Books</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/i_S6YktRzEI"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/i_S6YktRzEI" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Every once in a while someone hits it out of the park.  Disney did just that.  The Toy Story version of the digital book is pure awesome.  Simple animation makes the book come alive.  Read along with highlighting the words helps the little ones read.  Ability to record my own voice so my kids can hear me read the book to them is awesome.  Add some games, have some of the pages &#8216;color-able&#8217; and you got a great app!</p>
<p>Marvel Comics</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/BFUc3lEV4u0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/BFUc3lEV4u0" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>I will say this first, I am a biased Marvel Comic fan.  With that said, this app is awesome.  The store is a simple lift from the Appstore (looks identical) but that is not the point you should care about.  Nor the ability to download a ton of old and new comics.  The point you need to pay attention to is once you start reading or I should say &#8216;living&#8217; the comic.  The comic view provides a traditional read of the full page but you can also dive into each of the letter boxes and read the comic that way.  You eye is no longer jumping to the action box half way down the page but your involved in the intense story of the box.  Swipe and it animates to the next box.  Nice job.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/06/07/ipad-app-review-books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad App Review &#8211; Magazines</title>
		<link>http://drew5.net/2010/06/04/ipad-app-review-magazines/</link>
		<comments>http://drew5.net/2010/06/04/ipad-app-review-magazines/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 16:04:12 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[BMW Magazine]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Men's Health]]></category>
		<category><![CDATA[Wired]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=307</guid>
		<description><![CDATA[Today I am taking a look at Magazines.  Lets see how these publications translate to the iPad. Men&#8217;s Health Men&#8217;s Health is a &#8216;container&#8217; app that you can view and purchase other issues.  They do a OK job with this app.  The content is lifted straight from the print piece  and put into the iPad.  So swiping through pages is the [...]]]></description>
			<content:encoded><![CDATA[<p>Today I am taking a look at Magazines.  Lets see how these publications translate to the iPad.</p>
<p>Men&#8217;s Health</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/dao4STSUezs"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/dao4STSUezs" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Men&#8217;s Health is a &#8216;container&#8217; app that you can view and purchase other issues.  They do a OK job with this app.  The content is lifted straight from the print piece  and put into the iPad.  So swiping through pages is the normal.  What you see in print is what you see in the iPad.  The one thing they added is interactivity &#8216;on-top&#8217; of the pages.  What I mean by that is when you land on an article blue plus signs light up where you can interact.  You can view a video or take a poll.  It is nice since it takes the guess work on what your supposed to do.</p>
<p>BMW Magazine</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/bg30r5HoFI8"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/bg30r5HoFI8" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>Talk about a glorified PDF reader.  No interaction except for some hot spots to link out to the web.</p>
<p>Wired</p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/UnWPl-25coQ"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/UnWPl-25coQ" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object>
<p>There has been a tremendous amount of hype surrounding this app.  The hype was around 2 areas, the first being the app itself and the second being the controversy of Adobe building the app in Flash, which Apple denied.  That is another story.  The app itself, in my opinion falls short.  The app does not train the user into what to do next.  Your left clicking (touching) and swiping random spots just to see if anything is linked.  There are ads that do some interaction and others where you think there would be but do not.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/06/04/ipad-app-review-magazines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad App Review</title>
		<link>http://drew5.net/2010/06/03/ipad-app-review/</link>
		<comments>http://drew5.net/2010/06/03/ipad-app-review/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 15:33:00 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Digital]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Financial Times]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[Nike]]></category>
		<category><![CDATA[Weather Channel]]></category>

		<guid isPermaLink="false">http://drew5.net/?p=304</guid>
		<description><![CDATA[If your a techie or into the digital world you have heard by now of this device called an iPad.  Even if you are not a techie, you probably have heard about it.  More and more companies are jumping at developing applications for the device and are inventing new ways to interact with it.  Some of the [...]]]></description>
			<content:encoded><![CDATA[<p>If your a techie or into the digital world you have heard by now of this device called an iPad.  Even if you are not a techie, you probably have heard about it.  More and more companies are jumping at developing applications for the device and are inventing new ways to interact with it.  Some of the applications are good, some are not.  The iPad provides the developer with more screen real estate than the iPhone so options can be a little greater when it comes to creativity.</p>
<p>I will be taking a look at a few applications from Brands or Publishing companies.  The reason I am choosing that avenue is I am a Technologist at Story Worldwide and need to keep up on the trends and happenings that my clients competition is doing.  There are some great apps developed solely by independent developers, which I may feature but for now just Brands.</p>
<p>The 3 I have chosen are the following, Nike Football, Financial Times and the Weather Channel</p>
<p><strong>Nike Football</strong></p>
<p><strong><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/LcNT_fWNJxs"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/LcNT_fWNJxs" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object></strong></p>
<p>The Nike Football app gets high marks with me.  Very easy to use.  Vibrant colors and a ton of videos.  A few things I like are the use of the bottom portion of the screen to put simple navigation to go from section to section.  I enjoy the large use of images on every screen and the ability to orientate the iPad and the screen shifting to a better and more usable position.</p>
<p><strong>Financial Times</strong></p>
<p><strong><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/RE3jmFAPYQE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/RE3jmFAPYQE" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object></strong></p>
<p>Yet another newspaper app, this one succeeds.  They don&#8217;t try to do too much with it.  FT presents the articles clean and the navigation between them is easy.  They provide an indicator to get back to the start or the main page of the newspaper on the left hand side.  I feel that is easy to find since you a swiping left and right.  The other big plus is the background color is a tan/parchment color which is easy on the eyes.  Much nicer than the standard white background.</p>
<p><strong>The Weather Channel</strong></p>
<p><strong><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/HjqKr47OrQU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.youtube.com/v/HjqKr47OrQU" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="425" height="344" flashvars=""></embed></object></strong></p>
<p>If you have the Weather Channel app for the iPhone then you are fully aware of its features.  The iPad version is the same thing just in a bigger format.  Radar maps are bigger, video is bigger, 10 day forecast is bigger.</p>
]]></content:encoded>
			<wfw:commentRss>http://drew5.net/2010/06/03/ipad-app-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

