<?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/"
	xmlns:go='http://ns.gigaom.com/'
xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>GigaOM &#187; Apple</title>
	<atom:link href="http://gigaom.com/apple/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://gigaom.com</link>
	<description></description>
	<lastBuildDate>Sun, 27 May 2012 08:45:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gigaom.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/0db8f6557d022075dbbf010c54d46d93?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>GigaOM &#187; Apple</title>
		<link>http://gigaom.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gigaom.com/osd.xml" title="GigaOM" />
	<atom:link rel='hub' href='http://gigaom.com/?pushpress=hub'/>
		<item>
		<title>How-To: Build Your First Site in iWeb</title>
		<link>http://gigaom.com/apple/how-to-build-a-site-in-iweb/</link>
		<comments>http://gigaom.com/apple/how-to-build-a-site-in-iweb/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:10:44 +0000</pubDate>
		<dc:creator>Olly Farshi</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[iLife]]></category>
		<category><![CDATA[iweb]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=41450</guid>
		<description><![CDATA[In this iWeb video tutorial you&#8217;ll learn how to import content, create links, embed a video and publish your website. If you&#8217;re planning to build your own site, Apple&#8217;s iWeb is an easy way for you to get into web-design and launch your first online project. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173990&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img  title="iWeb" src="http://gigapple.files.wordpress.com/2008/09/iweb_icon.png?w=136&h=131" alt="" width="136" height="131" class=" alignleft" /></p>
<p class="excerpt">In this iWeb video tutorial you&#8217;ll learn how to import content, create links, embed a video and publish your website.</p>
<p>If you&#8217;re planning to build your own site, Apple&#8217;s iWeb is an easy way for you to get into web-design and launch your first online project. With a little practice, you can be the webmaster of your own domain in no time.</p>
<p>This tutorial is all about getting you comfortable with iWeb. To show you how easy it is to create professional looking sites, I created the site for my new iPhone game using iWeb: <a href="http://www.thecosmokid.com">www.thecosmokid.com</a></p>
<p>Rather than use a pre-set template, we&#8217;re going to dive right in and recreate the Cosmo Kid website. Before you start the tutorial, make sure to download the <a href="http://a.theappleblog.com/downloads/Cosmo_Kid_iWeb_Site.zip"><strong>Cosmo Kid Content Pack</strong></a> (ZIP, 274 KB), it&#8217;s got all the parts you&#8217;ll need to build the site.</p>
<p>Check out the video after the jump, or <strong><a href="http://a.theappleblog.com/screencasts/howto-iweb.mov">view the full-size, full-resolution video here</a><span style="font-weight: normal;"> (MOV, 135MB)</span></strong>. <span id="more-173990"></span></p>
<p><object classid="clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b" width="580" height="326" codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"><param name="src" value="http://a.theappleblog.com/screencasts/howto-iweb.mov" /><param name="autoplay" value="false" /><param name="scale" value="aspect" /><param name="type" value="video/quicktime" /><embed type="video/quicktime" width="580" height="326" src="http://a.theappleblog.com/screencasts/howto-iweb.mov" scale="aspect" autoplay="false"></embed></object></p>
<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=173990&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/apple/how-to-build-a-site-in-iweb/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
<enclosure url="http://a.theappleblog.com/screencasts/howto-iweb.mov" length="138913431" type="video/quicktime" />
	 <go:thumbnail>http://gigapple.files.wordpress.com/2010/02/iweb_thumb.jpg?w=130</go:thumbnail> 
		<media:thumbnail url="http://gigapple.files.wordpress.com/2010/02/iweb_thumb.jpg?w=210" />
		<media:content url="http://gigapple.files.wordpress.com/2010/02/iweb_thumb.jpg?w=210" medium="image">
			<media:title type="html">iweb_thumb</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/a4e760f4462bf44a600dc6c125daa3d0?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">ollyf</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2008/09/iweb_icon.png" medium="image">
			<media:title type="html">iWeb</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone SDK Tutorial: Build a Simple RSS reader for the iPhone</title>
		<link>http://gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/</link>
		<comments>http://gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 17:10:24 +0000</pubDate>
		<dc:creator>Jason Terhorst</dc:creator>
				<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iphone dev sessions]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=3900</guid>
		<description><![CDATA[With this I&#8217;m assuming you have a bit of familiarity with the iPhone SDK &#8211; you can download it for free from Apple&#8217;s site, and follow along here. We&#8217;re going to build an RSS feed reader for a simple feed (from The Apple Blog, no less). [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=171576&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="excerpt">With this I&#8217;m assuming you have a bit of familiarity with the iPhone SDK &#8211; you can <a href="http://developer.apple.com/iphone/">download it for free</a> from Apple&#8217;s site, and follow along here. We&#8217;re going to build an RSS feed reader for a simple feed (from The Apple Blog, no less).</p>
<p><img src="http://gigapple.files.wordpress.com/2008/07/picture-26.png?w=604" alt="" class=" alignleft" /></p>
<h3>Let&#8217;s get started</h3>
<ol>
<li>Open Xcode and choose the &#8220;File&#8221; menu, in which you&#8217;ll click the &#8220;New Project&#8230;&#8221; item.</li>
<li>Click &#8220;Application&#8221; under &#8220;iPhone OS&#8221; in the list at left.</li>
<li>On the right, choose &#8220;Navigation-Based Application&#8221;. Then click the &#8220;Choose&#8230;&#8221; button. You&#8217;ll be prompted to pick a name and location. Type in the name &#8220;TAB RSS reader&#8221;.</li>
<li>Save it wherever you wish.</li>
</ol>
<p>The Xcode project window will appear, with the standard 3 panes &#8211; I recommend pulling the horizontal divider on the right side all the way to the top, since you&#8217;ll need that editor area and all the real estate you can give it.<br />
<span id="more-171576"></span><br />
Do you see a &#8220;Build and Go&#8221; button in the toolbar? Click it, or go to the &#8220;Build&#8221; menu, and click &#8220;Build and Go (Run)&#8221; there. It should open the Simulator application and launch a simple iPhone app that displays a blank navigation bar and blank table. Whee! Your first iPhone app. Now let&#8217;s sculpt it into something.</p>
<p><img  title="iphone-xcode-tutorial-28.png" src="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-28.png?w=247&h=161" alt="" width="247" height="161" class=" alignleft" /> The project template that Apple provides has a lot of things already set up to get us started. On the list at the left of the project window, find &#8220;MainWindow.xib&#8221;, and double-click it. This is the basic framing of your application&#8217;s UI. Be careful not to mess around here too much. You just need to do one thing: you should see a &#8220;Navigation Controller&#8221; window with a basic interface mocked up &#8211; double-click on the navigation bar (which has no title in it), and type &#8220;The Apple Blog&#8221;. Press return. Save and quit Interface Builder.</p>
<p>Click once on &#8220;RootViewController.h&#8221; in the list, and see the code on the right. Make it look like this:</p>
<pre class="scroll"><code>
@interface RootViewController : UITableViewController {
	IBOutlet UITableView * newsTable;
	UIActivityIndicatorView * activityIndicator;
	CGSize cellSize;
	NSXMLParser * rssParser;
	NSMutableArray * stories;

	// a temporary item; added to the "stories" array one at a time, and cleared for the next one
	NSMutableDictionary * item;

	// it parses through the document, from top to bottom...
	// we collect and cache each sub-element value, and then save each item to our array.
	// we use these to track each current item, until it's ready to be added to the "stories" array
	NSString * currentElement;
	NSMutableString * currentTitle, * currentDate, * currentSummary, * currentLink;
}
@end
</code></pre>
<p>That&#8217;s the declaration file, where we&#8217;re telling the compiler what to expect when it runs through the controller logic. Here&#8217;s where the real work happens&#8230; Open &#8220;<code>RootViewController.m</code>&#8220;.</p>
<p>You&#8217;ll see that there&#8217;s more of the basic code to make that table view display &#8211; this controller is the table&#8217;s &#8220;delegate&#8221; &#8211; the table looks here to find out what it&#8217;s supposed to see/display/do in various situations, and sends calls for methods when the user performs various actions.</p>
<p>Change the value of <code>- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section</code> to <code>return [stories count];</code></p>
<p>In our declarations, we told it we would have an array (<em>NSMutableArray</em> &#8211; a modifiable collection of objects), which we called &#8220;stories&#8221;. The [brackets] around that bit signify that it&#8217;s a message &#8211; we&#8217;re asking the <strong>stories</strong> array what its current <em>count</em> is &#8211; that is, how many items it has. Our RSS reader will grab as many items as it can (one for each story in the RSS feed), and place them in that array, so this method will tell the table <em>This is how many rows we need: one for each item in the array, or for each item in the feed</em>. Before, it was set to 0, so you&#8217;re giving it more information on our array.</p>
<p>Next up, modify the method below the one you just changed, like so:</p>
<pre class="scroll"><code>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
	static NSString *MyIdentifier = @"MyIdentifier";
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

	if (cell == nil) {
		cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
	}

	// Set up the cell
	int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
	[cell setText:[[stories objectAtIndex: storyIndex] objectForKey: @"title"]];

	return cell;
}
</code></pre>
<p>As you can see, we used the &#8220;<code>setText:</code>&#8221; method to tell the cell what the contents will be. Each row in the table is basically a cell, and its properties are set in this method.</p>
<p>There are 4 methods highlighted in green about 3/4 of the way down &#8211; you can delete those if you wish, since we won&#8217;t be using them. They have to do with adding/deleting items.</p>
<p>If you were to run the program again now, it still wouldn&#8217;t do anything: we haven&#8217;t added the ability to download the feed and use it yet, so let&#8217;s do that now.</p>
<p>Edit the &#8220;<code>viewDidAppear:</code>&#8221; method to look like this:</p>
<pre class="scroll"><code>
- (void)viewDidAppear:(BOOL)animated {
	[super viewDidAppear:animated];

	if ([stories count] == 0) {
		NSString * path = @"http://feeds.feedburner.com/TheAppleBlog";
		[self parseXMLFileAtURL:path];
	}

	cellSize = CGSizeMake([newsTable bounds].size.width, 60);
}
</code></pre>
<p>This is where we tell the parser which feed to download. It calls a method, which you&#8217;ll want to paste in now:</p>
<pre class="scroll"><code>
- (void)parseXMLFileAtURL:(NSString *)URL {
	stories = [[NSMutableArray alloc] init];

	//you must then convert the path to a proper NSURL or it won't work
	NSURL *xmlURL = [NSURL URLWithString:URL];

	// here, for some reason you have to use NSClassFromString when trying to alloc NSXMLParser, otherwise you will get an object not found error
	// this may be necessary only for the toolchain
	rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];

	// Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks.
	[rssParser setDelegate:self];

	// Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser.
	[rssParser setShouldProcessNamespaces:NO];
	[rssParser setShouldReportNamespacePrefixes:NO];
	[rssParser setShouldResolveExternalEntities:NO];

	[rssParser parse];
}
</code></pre>
<p>This is a method we&#8217;ve added that creates the empty array for stories, creates a parser, and starts downloading the feed. As the parser works, this controller we&#8217;re working in will receive the various delegate methods, which you can paste in now:</p>
<pre class="scroll"><code>
- (void)parserDidStartDocument:(NSXMLParser *)parser {
	NSLog(@"found file and started parsing");
}

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
	NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i )", [parseError code]];
	NSLog(@"error parsing XML: %@", errorString);

	UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
	[errorAlert show];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
	//NSLog(@"found this element: %@", elementName);
	currentElement = [elementName copy];

	if ([elementName isEqualToString:@"item"]) {
		// clear out our story item caches...
		item = [[NSMutableDictionary alloc] init];
		currentTitle = [[NSMutableString alloc] init];
		currentDate = [[NSMutableString alloc] init];
		currentSummary = [[NSMutableString alloc] init];
		currentLink = [[NSMutableString alloc] init];
	}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

	//NSLog(@"ended element: %@", elementName);
	if ([elementName isEqualToString:@"item"]) {
		// save values to an item, then store that item into the array...
		[item setObject:currentTitle forKey:@"title"];
		[item setObject:currentLink forKey:@"link"];
		[item setObject:currentSummary forKey:@"summary"];
		[item setObject:currentDate forKey:@"date"];

		[stories addObject:[item copy]];
		NSLog(@"adding story: %@", currentTitle);
	}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
	//NSLog(@"found characters: %@", string);
	// save the characters for the current item...
	if ([currentElement isEqualToString:@"title"]) {
		[currentTitle appendString:string];
	} else if ([currentElement isEqualToString:@"link"]) {
		[currentLink appendString:string];
	} else if ([currentElement isEqualToString:@"description"]) {
		[currentSummary appendString:string];
	} else if ([currentElement isEqualToString:@"pubDate"]) {
		[currentDate appendString:string];
	}
}

- (void)parserDidEndDocument:(NSXMLParser *)parser {

	[activityIndicator stopAnimating];
	[activityIndicator removeFromSuperview];

	NSLog(@"all done!");
	NSLog(@"stories array has %d items", [stories count]);
	[newsTable reloadData];
}
</code></pre>
<p>Unfortunately, the NSXMLParser is the only simple XML-parsing tool available on iPhone (some of my favorites from the Mac are missing). So, this means we have to crunch through the file in order from top to bottom. We have a series of strings that we assign values to, and then collect them into story items, which are saved one by one. Once it hits the closing &#8220;item&#8221; tag, it saves that story, clears out the fields, and starts on the next item until we reach the end of the file. Not my favorite approach, but it works.</p>
<h3>Finishing up</h3>
<p>We need to shut off any potential memory leaks (it&#8217;s a good habit to get into, when you don&#8217;t have garbage collection &#8211; who needs that anyway?). Drop in this change:</p>
<pre class="scroll"><code>
- (void)dealloc {
	[currentElement release];
	[rssParser release];
	[stories release];
	[item release];
	[currentTitle release];
	[currentDate release];
	[currentSummary release];
	[currentLink release];

	[super dealloc];
}
</code></pre>
<p><img src="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-30.png?w=604" alt="" class=" alignleft" /></p>
<p>Next, open up &#8220;<code>RootViewController.xib</code>&#8220;, and hold down the &#8220;control&#8221; key on your keyboard, while dragging from the &#8220;RootViewController&#8221; cube icon over to the table view, and release. You should see a list of three items appear, so click on the &#8220;<code>newsTable</code>&#8221; item. Save and quit Interface Builder.</p>
<h3>Build and Go</h3>
<p><img src="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-31.png?w=196&h=213" alt="" width="196" height="213" class=" alignleft" /></p>
<p>If you click &#8220;Build and Go&#8221;, you&#8217;ll see the results we have so far. If you were to run this on an actual iPhone and not in simulator, the results would be different slightly: the hardware is slower, and if you&#8217;re on EDGE, the RSS feed will take a very long time to download. But, hey, it works! One thing that doesn&#8217;t work yet: when you tap on an item in the table, nothing happens. This is default behavior, but let&#8217;s make the stories open in Safari &#8211; that&#8217;s an easy thing to do. Just change this method:</p>
<pre class="scroll"><code>
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	// Navigation logic

	int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];

	NSString * storyLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];

	// clean up the link - get rid of spaces, returns, and tabs...
	storyLink = [storyLink stringByReplacingOccurrencesOfString:@" " withString:@""];
	storyLink = [storyLink stringByReplacingOccurrencesOfString:@"n" withString:@""];
	storyLink = [storyLink stringByReplacingOccurrencesOfString:@"	" withString:@""];

	NSLog(@"link: %@", storyLink);
	// open in Safari
	[[UIApplication sharedApplication] openURL:[NSURL URLWithString:storyLink]];
}
</code></pre>
<p>Now, click &#8220;Build and Go&#8221; again, to see that it works.</p>
<h3>Done for Now</h3>
<p><a href="http://media.theappleblog.com/downloads/TAB_RSS_reader.zip"><img style="margin: 5px;" src="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-3.png?w=200&h=86" alt="" width="200" height="86" class=" alignleft" /></a><br />
<em>You can download the finished project file here if you wish</em>.</p>
<p>Check back here later, and we&#8217;ll cover some steps on how to clean up the UI, and add some navigation.</p>
<p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171576+tutorial-build-a-simple-rss-reader-for-iphone&utm_content=gigaguest">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/07/mobile-q2-smartphone-growth-surges-ipads-rule-continues/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171576+tutorial-build-a-simple-rss-reader-for-iphone&utm_content=gigaguest">Mobile Q2: Smartphone growth surges; iPad&#8217;s rule&nbsp;continues</a></li><li><a href="http://pro.gigaom.com/2010/09/how-to-market-your-iphone-app-a-developers-guide/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171576+tutorial-build-a-simple-rss-reader-for-iphone&utm_content=gigaguest">How to Market Your iPhone App: A Developer&#8217;s&nbsp;Guide</a></li><li><a href="http://pro.gigaom.com/2012/04/connected-consumer-q1-controversy-courtrooms-and-the-cloud/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171576+tutorial-build-a-simple-rss-reader-for-iphone&utm_content=gigaguest">Controversy, courtrooms and the cloud in&nbsp;Q1</a></li></ul><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=171576&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/apple/tutorial-build-a-simple-rss-reader-for-iphone/feed/</wfw:commentRss>
		<slash:comments>259</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4411542bbd7a2a9a2fc2a1b38809e45c?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">gigaguest</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2008/07/picture-26.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-28.png" medium="image">
			<media:title type="html">iphone-xcode-tutorial-28.png</media:title>
		</media:content>

		<media:content url="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-30.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-31.png" medium="image" />

		<media:content url="http://gigapple.files.wordpress.com/2008/07/iphone-xcode-tutorial-3.png" medium="image" />
	</item>
		<item>
		<title>Gypsy Maps + iPhone = NYC Subway Atlas</title>
		<link>http://gigaom.com/apple/gypsy-maps-iphone-nyc-subway-atlas/</link>
		<comments>http://gigaom.com/apple/gypsy-maps-iphone-nyc-subway-atlas/#comments</comments>
		<pubDate>Wed, 21 May 2008 16:13:07 +0000</pubDate>
		<dc:creator>Jenny Kortina</dc:creator>
				<category><![CDATA[Randomly]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://theappleblog.com/?p=3341</guid>
		<description><![CDATA[Using the directions feature of Google maps was an indispensable tool when I used to drive around town. Now that I moved to New York, I rely on the subways to get around and Gypsy Maps to tell me how. I&#8217;m generally pretty lazy, so once [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=171433&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="excerpt">Using the directions feature of Google maps was an indispensable tool when I used to drive around town.  Now that I moved to New York, I rely on the subways to get around and <a href="http://www.gypsymaps.com/">Gypsy Maps</a> to tell me how. </p>
<p>I&#8217;m generally pretty lazy, so once I use Gypsy Maps to get directions somewhere, I take it to the next level and email it to my iPhone so that I can look at the map on the go.  I have developed a pretty good routine:</p>
<ol>
<li>Go to Gypsy Maps</li>
<li>Enter your start and end address</li>
<li>Click Print</li>
<p><a href='http://gigapple.files.wordpress.com/2008/05/1pinter.png'><img src="http://theappleblog.com/wp-content/uploads/2008/05/1pinter-300x226.png" alt="" title="1pinter" width="300" height="226"  class=" alignleft" /></a></p>
<li>Click the &#8220;Ink Saver&#8221; option</li>
<p><a href='http://gigapple.files.wordpress.com/2008/05/2ink-saver.png'><img src="http://theappleblog.com/wp-content/uploads/2008/05/2ink-saver-300x231.png" alt="" title="2ink-saver" width="300" height="231"  class=" alignleft" /></a></p>
<li>Click the print button, or File>Print</li>
<li>When the print box comes up, click PDF>Save as PDF</li>
<p><a href='http://gigapple.files.wordpress.com/2008/05/3pdf.png'><img src="http://theappleblog.com/wp-content/uploads/2008/05/3pdf-300x263.png" alt="" title="3pdf" width="300" height="263"  class=" alignleft" /></a></p>
<li>Save the PDF to your desktop</li>
</ol>
<p>At this point you have map, but we want to take it with us.  Cue iPhone:</p>
<ol>
<li>Launch your email program and create a new message with you map as the attachment</li>
<li>Put the destination as the email&#8217;s subject ie &#8220;Bryant Park&#8221;</li>
<li>Put the physical street address in the body of the message</li>
<li>Email the message to yourself</li>
<li>Create a label &#8220;Maps&#8221; and apply it to the email</li>
<p><a href='http://gigapple.files.wordpress.com/2008/05/2008-05-20_2209.png'><img src="http://theappleblog.com/wp-content/uploads/2008/05/2008-05-20_2209-300x132.png" alt="" title="2008-05-20_2209" width="300" height="132"  class=" alignleft" /></a></p>
<li>Finally, grab your iPhone and open the email and the attachment on your phone.  This way it will be cached and you will be able to look at the map even when your on the subway and don&#8217;t have reception. (This step is super important, so make sure you do it before you lose reception!!!)</li>
</ol>
<p>After a few weeks your &#8220;maps&#8221; label will be full of different subway maps, and you should be able to get around the city a lot easier.  I also found a high resolution subway map on the internet and emailed it to myself, so that way I have a full subway map anytime I have my phone.  Have fun!</p>
<p><strong>Related research and analysis from GigaOM Pro:</strong><br />Subscriber content. <a href="http://pro.gigaom.com/?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171433+gypsy-maps-iphone-nyc-subway-atlas&utm_content=jennykortina">Sign up for a free trial</a>.</p><ul><li><a href="http://pro.gigaom.com/2011/01/mobile-q4-all-eyes-were-on-android-4g-and-the-rising-tablet-tide/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171433+gypsy-maps-iphone-nyc-subway-atlas&utm_content=jennykortina">Mobile Q4: All Eyes Were on Android, 4G and the Rising Tablet&nbsp;Tide</a></li><li><a href="http://pro.gigaom.com/2010/12/report-a-mobile-video-market-overview/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171433+gypsy-maps-iphone-nyc-subway-atlas&utm_content=jennykortina">Report: A Mobile Video Market&nbsp;Overview</a></li><li><a href="http://pro.gigaom.com/2010/10/in-q3-the-tablet-and-4g-were-the-big-stories/?utm_source=apple&amp;utm_medium=editorial&amp;utm_campaign=waterfall?utm_source=apple&utm_medium=editorial&utm_campaign=auto3&utm_term=171433+gypsy-maps-iphone-nyc-subway-atlas&utm_content=jennykortina">In Q3, the Tablet and 4G Were the Big&nbsp;Stories</a></li></ul><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gigaom.com&#038;blog=14960843&#038;post=171433&#038;subd=gigaom2&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gigaom.com/apple/gypsy-maps-iphone-nyc-subway-atlas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07979a19e84a54446c090f2581489c32?s=96&#38;d=retro&#38;r=PG" medium="image">
			<media:title type="html">jenny</media:title>
		</media:content>

		<media:content url="http://theappleblog.com/wp-content/uploads/2008/05/1pinter-300x226.png" medium="image">
			<media:title type="html">1pinter</media:title>
		</media:content>

		<media:content url="http://theappleblog.com/wp-content/uploads/2008/05/2ink-saver-300x231.png" medium="image">
			<media:title type="html">2ink-saver</media:title>
		</media:content>

		<media:content url="http://theappleblog.com/wp-content/uploads/2008/05/3pdf-300x263.png" medium="image">
			<media:title type="html">3pdf</media:title>
		</media:content>

		<media:content url="http://theappleblog.com/wp-content/uploads/2008/05/2008-05-20_2209-300x132.png" medium="image">
			<media:title type="html">2008-05-20_2209</media:title>
		</media:content>
	</item>
	</channel>
</rss>
