<?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>Paul Solt &#187; iPhone</title>
	<atom:link href="http://paulsolt.com/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://paulsolt.com</link>
	<description>Putting the Inc back in Solt since 2005.</description>
	<lastBuildDate>Wed, 12 May 2010 19:34:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iPad Revolution</title>
		<link>http://paulsolt.com/2010/02/ipad-revolution/</link>
		<comments>http://paulsolt.com/2010/02/ipad-revolution/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 22:38:41 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[entertainment]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[revolution]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=420</guid>
		<description><![CDATA[A lot of people have been talking about the iPad. Here are my opinions on the future of iPad, computing, and entertainment. The iPad is set to revolutionize how we interact with multimedia content and computers. There are a number of reasons that make the hardware and software standout. First and foremost, it is affordable [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people have been talking about the iPad. Here are my opinions on the future of iPad, computing, and entertainment.</p>
<p><a href="http://paulsolt.com/wp-content/uploads/2010/02/ipad.jpg"><img class="aligncenter size-medium wp-image-507" title="ipad" src="http://paulsolt.com/wp-content/uploads/2010/02/ipad-272x300.jpg" alt="" width="272" height="300" /></a></p>
<p><strong>The iPad is set to revolutionize how we interact with multimedia content and computers.</strong> There are a number of reasons that make the hardware and software standout. First and foremost, it is affordable cutting-edge technology. The $499 price point means that it is not out of reach for average consumers who are interested in an updated “all-in-one” computing device. All 9.7 inches of the screen are multi-touch, which will allow software developers to create very interactive applications. Star Trek, Avatar, and other science fiction movie computer interfaces can finally be realized on a large multi-touch screen. The device is connected, which allows the consumer to use it anywhere. Lastly, the device will provide the ultimate responsive user experience.</p>
<h4>Home Entertainment Revolution</h4>
<p>Apple now has the ability to revolutionize the home entertainment market. They are provided a multi-media portal, which will change the way we use our TV’s, computers, and music players. Imagine controlling a TV from the couch without attaching any wires. A user might want to watch “Batman Begins” on their 42” HDTV. A few touches will open iTunes and start the movie. I mentioned the TV, how does that fit into the picture? The movie streams wirelessly in HD from the couch to the 42” TV. Gone are all the cables, remotes, and hassles. Don’t bother with power cable, since the device will play content for 10 hours straight. The entertainment cabinet can be cleaned out. Throw out the VCR, CD player, DVD player, Blue-Ray player, cable TV, satellite TV, and digital antennas because they are not needed. Apple will be the one stop remote control into all media content and it will be seamless to use and control.</p>
<h4>Affordable Technology</h4>
<p>A few years back, in 2007, Amazon set out to take over the digital books arena. They did a pretty good job at providing access to books, but that is about all they did. The Kindle DX costs $489 and is just a digital book reader. It has limited processing power and storage space. The main attraction is the e-ink technology that is supposed to be easier to read. Overall, the device is nice, but is very limited in the target audience and lacks multi-media capabilities like an iPhone.<br />
Apple worked hard to set the price point of the iPad as close as possible to the Kindle, because they are directly competing with Kindle’s e-book market. For $10 more one can get a fully color display that can play videos, music, games, display e-books, and run applications. Apple did a wonderful job in selecting a set of features that could be combined for a relatively low price point. The device is slightly more expensive than other eBook readers and net books, but not overly expensive.</p>
<h4>Large Multi-Touch Screen</h4>
<p>For the longest time computers were something that required skill to use. However, this learning steep learning curve is almost no longer the case with the iPhone, iPod Touch, and iPad. The iPhone revolution brought capacitive multi-touch screens to the public. In English this means that a user just touches, not “presses,” the screen to perform actions. iPad is riding on that revolution wake and it is taking it step further by increasing the size of the screen. This technology is not foreign; it is mainstream and it is here to stay because it works. If a user knows how to use an iPhone or a laptop track pad then the transition is smooth. The touch screen is key, because it allows people to interact with a device just like they might interact with a microwave or a washing machine. A user physically touches, taps, and slides controls around that directly mirror the physical world. The iPad is a natural user interface and it is what most people what, but do not know how to ask for.</p>
<h4>Software is Key</h4>
<p>The main attraction with any working piece of hardware is software. People want to use a piece of hardware that is customizable. At any given point the device can assume different roles, because it was built to be extensible. In one instant it is an email program, movie player, music player, and then an entire college library. Apple has created a platform that provides many inputs and outputs that software developers can hook into to provide new and novel user experiences. The software development kit (SDK) has given developers direct access to technology that was locked down or too expensive to use. Developers can use a digital compass, accelerometer, multi-touch screen, microphone, and motion sensors to interact with a user in astonishing ways.</p>
<h4>Connected</h4>
<p>The iPhone provided the all-in-one experience because it can double as a music player, movie player, email program, Internet browser, and eBook reader. It was small, but it had the ability to execute each of those tasks. It has those abilities because of the Wi-Fi and 3G data connections. These connections make it possible to see content beyond the walls of a single hard drive. It provides a much richer experience to user. The iPad takes these same tasks and now makes it better by providing a bigger experience. Users can use these connections in a larger form factor and can be more productive. For most users a simple Wi-Fi connection will be all they need from the couch in the living room. Some users might be active and on the go, so they will need a 3G wireless connection. Apple has realized this connection issues and separated both technologies to reach different consumers needs. Users can get the Wi-Fi by itself, or combine Wi-Fi and 3G if they need to always have a connection the the internet.</p>
<h4>User Experience</h4>
<p>Users want fast responsive devices, not sluggish devices. A lot of users complain that they cannot run multiple applications (multi-tasking) on the iPhone, but what they do not realize is what they have to give up for multiple applications. Running anything in parallel on a mobile device means that it is dividing computing resources and power among applications that are invisible in the background. These resource hogs will slow a device down and drain a battery.</p>
<p><strong>Traditional multi-tasking is not what users want.</strong> Apple supports multi-tasking, but only to first party applications. In restricting access, Apple has complete control of the user experience. Third-party multi-tasking is not supported for a few reasons.</p>
<ul>
<li>Window’s Task Manager is a power user feature that is unnecessarily complicated. On a Windows Mobile 6.x device, task manager is a terrible experience. For example, pressing the ‘X’ on an application is not guaranteed to close the application. The button may only minimize the application, in which case it is still using computing resources and draining the battery. The ability to manage open applications is a power user feature on a mobile device and should be hidden from a typical user.</li>
<li>What is the difference between running an application in the background and running an application one at a time if the transition from one application to the next is fast and seamless? Does the experience have to differ solely from a technicality? iPhone applications can save state from the last thing they were doing when they are closed. For example, if a user is composing an email about a trip on an iPad. They need weather information and decide to check the weather with the following steps.
<ol>
<li>Press the home button.</li>
<li>Touch the weather application.</li>
<li>Press the home button.</li>
<li>Touch the email application.</li>
<li>Resume composing the email with the updated weather knowledge.</li>
</ol>
</li>
<li>Running applications in the background allows companies to directly compete with Apples multimedia business. iTunes is one of the few applications like Mail and Messages that run in the background. A user can play music through iTunes while using different applications. If a user could use Pandora for music in the background, then they would have a smaller reason to stay on the iTunes platform. I do not see Apple changing this policy, since it is not in their best interest.</li>
</ul>
<h4>Conclusion</h4>
<p>The iPad will simplify the experience to download new movies, games, music, books, and utility applications. There is no doubt in my mind that Apple will continue to innovate on this new iPad platform to further simplify and connect the multimedia experience in every persons home. The iPad is magic and just works.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2010/02/ipad-revolution/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>iPhone Development Talk</title>
		<link>http://paulsolt.com/2009/10/iphone-development-talk/</link>
		<comments>http://paulsolt.com/2009/10/iphone-development-talk/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 03:05:05 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[CSC]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=346</guid>
		<description><![CDATA[Today I gave a presentation on iPhone Development at RIT for the Computer Science Community (CSC).If you enjoyed it let me know. I&#8217;m looking into starting an informal iPhone Dev workshop for more topics. Here are the slides and Xcode projects: Slides:  iPhone Development &#8211; Paul Solt 1. Demo: Hello World Pusher:  Foo2 2. Demo: [...]]]></description>
			<content:encoded><![CDATA[<p>Today I gave a presentation on iPhone Development at RIT for the Computer Science Community (<a title="Computer Science Community" href="http://csc.cs.rit.edu/">CSC</a>).If you enjoyed it let me know. I&#8217;m looking into starting an informal iPhone Dev workshop for more topics.</p>
<p><a href="http://paulsolt.com/wp-content/uploads/2009/10/iphone.jpg"><img class="aligncenter size-full wp-image-355" title="iphone" src="http://paulsolt.com/wp-content/uploads/2009/10/iphone.jpg" alt="iphone" width="337" height="400" /></a></p>
<p>Here are the slides and Xcode projects:</p>
<p>Slides:  <a href="http://paulsolt.com/wp-content/uploads/2009/10/iPhone-Development-Paul-Solt1.pdf">iPhone Development &#8211; Paul Solt</a></p>
<p>1. Demo: Hello World Pusher:  <a href="http://paulsolt.com/wp-content/uploads/2009/10/Foo2.zip">Foo2</a></p>
<p>2. Demo: Touch Input:  <a href="http://paulsolt.com/wp-content/uploads/2009/10/Stalker.zip">Stalker</a></p>
<p>3. Demo: Robot Remote Control:  See my previous <a title="iPhone Remote Control" href="http://paulsolt.com/2009/08/iphone-playerstage-remote-control/">post</a></p>
<p>*The Touch Input demo was based on a demo given during the Stanford iPhone courses available on iTunes <a title="Stanford iPhone Course" href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu.2024353965.02024353968.2024239964?i=1439008681">here</a>.</p>
<p><strong>Resources:</strong></p>
<ul>
<li>Cocoa Programming for Mac OS X by Aaron Hillegass (Third Edition)</li>
<li>Stanford iPhone Course (<a href="http://cs193p.stanford.edu/">cs193p.stanford.edu</a>)
<ul>
<li>Search “iPhone Application Programming” in iTunes</li>
</ul>
</li>
<li>Beginning iPhone 3 Development: Exploring the iPhone SDK by Jeff LaMarche
<ul>
<li>Blog: <a href="http://iphonedevelopment.blogspot.com"> iphonedevelopment.blogspot.com</a></li>
</ul>
</li>
<li>iPhone Dev Center
<ul>
<li><a href="http://developer.apple.com/iphone">developer.apple.com/iphone</a></li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2009/10/iphone-development-talk/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPhone Player/Stage Remote Control</title>
		<link>http://paulsolt.com/2009/08/iphone-playerstage-remote-control/</link>
		<comments>http://paulsolt.com/2009/08/iphone-playerstage-remote-control/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 08:28:44 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[player/stage]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=329</guid>
		<description><![CDATA[Here&#8217;s the iPhone Player/Stage Remote Control project! There&#8217;s a .pdf that describes how to setup Xcode in the .zip file. The goal of this project was to use the Player/Stage robotics code on the iPhone to communicate and control robots. I discuss how to setup the Xcode development environment. There are two example Xcode projects. [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the iPhone Player/Stage Remote Control project! There&#8217;s a .pdf that describes how to setup Xcode in the .zip file.</p>
<p style="text-align: center;">
<div id="attachment_456" class="wp-caption aligncenter" style="width: 549px"><a href="http://paulsolt.com/wp-content/uploads/2009/08/RRemoteiPhone.png"><img class="size-full wp-image-456 " title="RRemoteiPhone" src="http://paulsolt.com/wp-content/uploads/2009/08/RRemoteiPhone.png" alt="" width="539" height="290" /></a><p class="wp-caption-text">Controlling a Robot over Wi-Fi</p></div>
<div id="attachment_455" class="wp-caption aligncenter" style="width: 506px"><a href="http://paulsolt.com/wp-content/uploads/2009/08/PlayerStage.png"><img class="size-full wp-image-455 " title="PlayerStage" src="http://paulsolt.com/wp-content/uploads/2009/08/PlayerStage.png" alt="" width="496" height="510" /></a><p class="wp-caption-text">A Virtual Robot in a Virtual World</p></div>
<p>The goal of this project was to use the Player/Stage robotics code on the iPhone to communicate and control robots. I discuss how to setup the  Xcode development environment. There are two example Xcode projects. The first one is an Objective-C project that wraps around the C++ Player/Stage code. The second project is a very primitive C++ program running on the iPhone without any UI. Both of these Xcode projects are fully documented and will serve as a starting point to iPhone Player/Stage development.</p>
<p>iPhone Player/Stage Remote Control Project: <a href="http://paulsolt.com/wp-content/uploads/2009/08/iPhonePlayerStage.zip">iPhonePlayerStage</a></p>
<p>Feel free to ask questions and let me know how you use the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2009/08/iphone-playerstage-remote-control/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>iPhone Remote Control Samples</title>
		<link>http://paulsolt.com/2009/08/iphone-remote-control-samples/</link>
		<comments>http://paulsolt.com/2009/08/iphone-remote-control-samples/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 06:08:20 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[ImagineRIT]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[player/stage]]></category>
		<category><![CDATA[remote control]]></category>
		<category><![CDATA[RIT]]></category>
		<category><![CDATA[Robot]]></category>

		<guid isPermaLink="false">http://paulsolt.com/2009/08/iphone-remote-control-samples/</guid>
		<description><![CDATA[Get ready for an iPhone robot remote control. I&#8217;m working on creating a couple samples and documentation. Check out the video from Imagine RIT: http://www.youtube.com/watch?v=MOxTV41Lqac Here&#8217;s the link to my follow-up post: iPhone Player/Stage Sample Projects]]></description>
			<content:encoded><![CDATA[<p>Get ready for an iPhone robot remote control. I&#8217;m working on creating a couple samples and documentation.</p>
<p>Check out the video from Imagine RIT: <a href="http://www.youtube.com/watch?v=MOxTV41Lqac">http://www.youtube.com/watch?v=MOxTV41Lqac</a></p>
<p>Here&#8217;s the link to my follow-up post: <a href="http://paulsolt.com/2009/08/iphone-playerstage-remote-control/">iPhone Player/Stage Sample Projects</a></p>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2009/08/iphone-remote-control-samples/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPhone Default User Settings Null?</title>
		<link>http://paulsolt.com/2009/06/iphone-default-user-settings-null/</link>
		<comments>http://paulsolt.com/2009/06/iphone-default-user-settings-null/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 03:30:19 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[default values]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=232</guid>
		<description><![CDATA[I wanted to set default values for my application using a Settings.bundle and I ran into an interesting issue with iPhone SDK 2.2. If you don&#8217;t run the Settings application before your application runs for the first time, then the default settings are not set. It turns out that you&#8217;ll need to manually set them [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to set default values for my application using a Settings.bundle and I ran into an interesting issue with iPhone SDK 2.2. If you don&#8217;t run the Settings application before your application runs for the first time, then the default settings are not set. It turns out that you&#8217;ll need to manually set them on the first time the application is run.</p>
<h4>Setting defaults to the default value&#8230;</h4>
<p>I&#8217;m not sure why there isn&#8217;t a function that can set the values for me, but after digging I found someone who ran into the same dilema. I don&#8217;t want to have multiple locations with default values (code and a Settings.bundle), so I found a programmatic way to set all the default values if they haven&#8217;t been set.</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>registerDefaultsFromSettingsBundle <span style="color: #002200;">&#123;</span>
    <span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>settingsBundle <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSBundle</span> mainBundle<span style="color: #002200;">&#93;</span> pathForResource<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Settings&quot;</span> ofType<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;bundle&quot;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">!</span>settingsBundle<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
        NSLog<span style="color: #002200;">&#40;</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Could not find Settings.bundle&quot;</span><span style="color: #002200;">&#41;</span>;
        <span style="color: #a61390;">return</span>;
    <span style="color: #002200;">&#125;</span>
&nbsp;
    <span style="color: #400080;">NSDictionary</span> <span style="color: #002200;">*</span>settings <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSDictionary</span> dictionaryWithContentsOfFile<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>settingsBundle stringByAppendingPathComponent<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Root.plist&quot;</span><span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #400080;">NSArray</span> <span style="color: #002200;">*</span>preferences <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>settings objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;PreferenceSpecifiers&quot;</span><span style="color: #002200;">&#93;</span>;
&nbsp;
    <span style="color: #400080;">NSMutableDictionary</span> <span style="color: #002200;">*</span>defaultsToRegister <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableDictionary</span> alloc<span style="color: #002200;">&#93;</span> initWithCapacity<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>preferences count<span style="color: #002200;">&#93;</span><span style="color: #002200;">&#93;</span>;
    <span style="color: #a61390;">for</span><span style="color: #002200;">&#40;</span><span style="color: #400080;">NSDictionary</span> <span style="color: #002200;">*</span>prefSpecification <span style="color: #a61390;">in</span> preferences<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
        <span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>key <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>prefSpecification objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;Key&quot;</span><span style="color: #002200;">&#93;</span>;
        <span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span>key<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
            <span style="color: #002200;">&#91;</span>defaultsToRegister setObject<span style="color: #002200;">:</span><span style="color: #002200;">&#91;</span>prefSpecification objectForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;DefaultValue&quot;</span><span style="color: #002200;">&#93;</span> forKey<span style="color: #002200;">:</span>key<span style="color: #002200;">&#93;</span>;
        <span style="color: #002200;">&#125;</span>
    <span style="color: #002200;">&#125;</span>
    <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;">&#93;</span> registerDefaults<span style="color: #002200;">:</span>defaultsToRegister<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>defaultsToRegister release<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p>All you have to do is call the above function if one of your Standard User Defaults returns <strong>null</strong>. Make the call once your application finishes loading like so:</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>applicationDidFinishLaunching<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span>UIApplication <span style="color: #002200;">*</span><span style="color: #002200;">&#41;</span>application <span style="color: #002200;">&#123;</span>
	<span style="color: #11740a; font-style: italic;">// Get the application user default values</span>
	<span style="color: #400080;">NSUserDefaults</span> <span style="color: #002200;">*</span>user <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;">&#93;</span>;
	<span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>server <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span>user stringForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;server_address&quot;</span><span style="color: #002200;">&#93;</span>;
	<span style="color: #a61390;">if</span><span style="color: #002200;">&#40;</span><span style="color: #002200;">!</span>server<span style="color: #002200;">&#41;</span> <span style="color: #002200;">&#123;</span>
		<span style="color: #11740a; font-style: italic;">// If the default value doesn't exist then we need to manually set them.</span>
		<span style="color: #002200;">&#91;</span>self registerDefaultsFromSettingsBundle<span style="color: #002200;">&#93;</span>;
		server <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSUserDefaults</span> standardUserDefaults<span style="color: #002200;">&#93;</span> stringForKey<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;server_address&quot;</span><span style="color: #002200;">&#93;</span>;
	<span style="color: #002200;">&#125;</span>
    <span style="color: #002200;">&#91;</span>window addSubview<span style="color: #002200;">:</span>viewController.view<span style="color: #002200;">&#93;</span>;
    <span style="color: #002200;">&#91;</span>window makeKeyAndVisible<span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#125;</span></pre></div></div>

<p><strong><span class="pun">References:</span></strong></p>
<ul>
<li><span class="pun"><a title="iPhone Settings" href="http://stackoverflow.com/questions/510216/can-you-make-the-settings-in-settings-bundle-default-even-if-you-dont-open-the-s" target="_blank">http://stackoverflow.com/questions/510216/can-you-make-the-settings-in-settings-bundle-default-even-if-you-dont-open-the-s</a><br />
</span></li>
<li>Display code in your WordPress blog: <a href="http://wordpress.org/extend/plugins/wp-syntax/">http://wordpress.org/extend/plugins/wp-syntax/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2009/06/iphone-default-user-settings-null/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Player/Stage, MacPorts, and iPhone</title>
		<link>http://paulsolt.com/2009/04/playerstage-macports-and-iphone/</link>
		<comments>http://paulsolt.com/2009/04/playerstage-macports-and-iphone/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 22:43:40 +0000</pubDate>
		<dc:creator>Paul Solt</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Macbook Pro]]></category>
		<category><![CDATA[MacPorts]]></category>
		<category><![CDATA[player/stage]]></category>

		<guid isPermaLink="false">http://paulsolt.com/?p=193</guid>
		<description><![CDATA[Today I worked on setting up Player/Stage on my Macbook Pro with Leopard 10.5.6 and I ran into a few issues. I was using Macports 1.710 and I was attempting to install player-stage-player (2.03 2.1.2) and player-stage-stage (2.03 2.1.1) following a short guide at http://bentham.k2.t.u-tokyo.ac.jp/notebook/?p=247 If it&#8217;s your first time using macports it can take [...]]]></description>
			<content:encoded><![CDATA[<p>Today I worked on setting up Player/Stage on my Macbook Pro with Leopard 10.5.6 and I ran into a few issues.</p>
<p>I was using Macports 1.710 and I was attempting to install player-stage-player (2.03 <span style="text-decoration: line-through;">2.1.2</span>) and player-stage-stage (2.03 <span style="text-decoration: line-through;">2.1.1</span>) following a short guide at <a href="http://bentham.k2.t.u-tokyo.ac.jp/notebook/?p=247">http://bentham.k2.t.u-tokyo.ac.jp/notebook/?p=247</a></p>
<p>If it&#8217;s your first time using macports it can take a long time. I waited 2+ hours to download/build/install dependencies</p>
<p>I used the command:</p>
<pre>$ sudo port install playerstage-player playerstage-stage</pre>
<p>However it errored out at the end with the message:</p>
<pre>$ sudo port install playerstage-player playerstage-stage
---&gt;  Building playerstage-player
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_science_playerstage-player/work/player-2.0.4" &amp;&amp; make all " returned error 2
Command output: building '_playerc' extension
swigging playerc.i to playerc_wrap.c
swig -python -o playerc_wrap.c playerc.i
playerc.i:44: Warning(124): Specifying the language name in %typemap is deprecated - use #ifdef SWIG&lt;LANG&gt; instead.
playerc.i:82: Warning(124): Specifying the language name in %typemap is deprecated - use #ifdef SWIG&lt;LANG&gt; instead.
playerc.i:121: Warning(124): Specifying the language name in %typemap is deprecated - use #ifdef SWIG&lt;LANG&gt; instead.
playerc.i:127: Warning(124): Specifying the language name in %typemap is deprecated - use #ifdef SWIG&lt;LANG&gt; instead.
gcc -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic -DNDEBUG -g -Os -Wall -Wstrict-prototypes -DMACOSX -I/usr/include/ffi -DENABLE_DTRACE -arch i386 -arch ppc -pipe -I./../.. -I../../../.. -I/System/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c playerc_wrap.c -o build/temp.macosx-10.5-i386-2.5/playerc_wrap.o
playerc_wrap.c: In function '_wrap_playerc_mclient_client_set':
playerc_wrap.c:40301: warning: assignment from incompatible pointer type
playerc_wrap.c: In function '_wrap_playerc_mclient_addclient':
playerc_wrap.c:40504: warning: passing argument 2 of 'playerc_mclient_addclient' from incompatible pointer type
playerc_wrap.c: In function '_wrap_playerc_mclient_client_set':
playerc_wrap.c:40301: warning: assignment from incompatible pointer type
playerc_wrap.c: In function '_wrap_playerc_mclient_addclient':
playerc_wrap.c:40504: warning: passing argument 2 of 'playerc_mclient_addclient' from incompatible pointer type
gcc -Wl,-F. -bundle -undefined dynamic_lookup -arch i386 -arch ppc build/temp.macosx-10.5-i386-2.5/playerc_wrap.o -L./../../.libs -L../../../../libplayerxdr/.libs -L../../../../libplayercore/.libs -L../../../../libplayerjpeg/.libs -lplayerxdr -lplayerc -lplayerjpeg -ljpeg -lplayererror -o build/lib.macosx-10.5-i386-2.5/_playerc.so
ld: library not found for -ljpeg
collect2: ld returned 1 exit status
ld: library not found for -ljpeg
collect2: ld returned 1 exit status
lipo: can't open input file: /var/tmp//ccI9TvVp.out
(No such file or directory)
error: command 'gcc' failed with exit status 1
make[6]: *** [pythonbuild] Error 1
make[5]: *** [all] Error 2
make[4]: *** [all-recursive] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Error: Status 1 encountered during processing.</pre>
<p>So I searched around the MacPorts website and I came across the ticket <a title="Bug Ticket" href="http://trac.macports.org/ticket/18891#comment:3">#18891</a>, which basically said to run the following command to change the version of <strong>python</strong> being used from 3.0 to 2.5.</p>
<pre>$ sudo port install python_select &amp;&amp; sudo python_select python25
Skipping org.macports.activate (python_select +darwin_9) since this
port is already active
---&gt;  Cleaning python_select
Selecting version "python25" for python</pre>
<p>Following that command I was able to finish installing Player/Stage via MacPorts by using the orginal port command.</p>
<pre>$ sudo port install playerstage-player playerstage-stage
---&gt;  Building playerstage-player
---&gt;  Staging playerstage-player into destroot
---&gt;  Installing playerstage-player @2.0.4_2
---&gt;  Activating playerstage-player @2.0.4_2
---&gt;  Cleaning playerstage-player
---&gt;  Fetching playerstage-stage
---&gt;  Attempting to fetch stage-2.0.3.tar.bz2 from

http://voxel.dl.sourceforge.net/playerstage

---&gt;  Verifying checksum(s) for playerstage-stage
---&gt;  Extracting playerstage-stage
---&gt;  Configuring playerstage-stage
---&gt;  Building playerstage-stage
---&gt;  Staging playerstage-stage into destroot
---&gt;  Installing playerstage-stage @2.0.3_0
---&gt;  Activating playerstage-stage @2.0.3_0
---&gt;  Cleaning playerstage-stage</pre>
<p>I tried to use player stage from MacPorts.</p>
<pre>$ player /opt/local/var/macports/software/playerstage-stage\
/*/opt/local/share/stage/worlds/simple.cfg</pre>
<p>And I received the error:</p>
<pre>rr: unable to open color database /usr/X11R6/lib/X11/rgb.txt
 : No such file or directory (stage.c stg_lookup_color)</pre>
<p>Following the advice from <a title="PlayerStage setup" href="http://bentham.k2.t.u-tokyo.ac.jp/notebook/?cat=5" target="_blank">http://bentham.k2.t.u-tokyo.ac.jp/notebook/?cat=5</a> I added the following link.</p>
<div id="codebox">
<pre>$ sudo ln -s /usr/X11/share/X11/rgb.txt /usr/X11R6/lib/X11/rgb.txt</pre>
<p>Now I am able to create a player server and connect with a client with the commands:</p>
<pre>$ player /opt/local/var/macports/software/playerstage-stage\
/*/opt/local/share/stage/worlds/simple.cfg

/opt/local/var/macports/software/playerstage-player\
/*/opt/local/share/player/examples/libplayerc++/laserobstacleavoid</pre>
<p>With the ability to run player/stage I will post again on my progress as I use an iPhone to run the Player client, rather than my Macbook Pro.</p>
<div id="attachment_209" class="wp-caption alignleft" style="width: 644px"><a rel="attachment wp-att-209" href="http://paulsolt.com/2009/04/playerstage-macports-and-iphone/robotiphone/"><img class="size-full wp-image-209" title="robotiphone" src="http://paulsolt.com/wp-content/uploads/2009/04/robotiphone.png" alt="Player client running on iPhone with Player/Stage." width="634" height="688" /></a><p class="wp-caption-text">Player client running on iPhone with Player/Stage.</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://paulsolt.com/2009/04/playerstage-macports-and-iphone/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->