<?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>chris moos&#039;s blog &#187; apple</title>
	<atom:link href="http://chrismoos.com/tag/apple/feed/" rel="self" type="application/rss+xml" />
	<link>http://chrismoos.com</link>
	<description>coding my way through life</description>
	<lastBuildDate>Sun, 18 Sep 2011 19:48:04 +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>Unlocking the full potential of the&#160;iPhone</title>
		<link>http://chrismoos.com/2010/04/17/unlocking-the-full-potential-of-the-iphone/</link>
		<comments>http://chrismoos.com/2010/04/17/unlocking-the-full-potential-of-the-iphone/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 04:43:48 +0000</pubDate>
		<dc:creator>Chris Moos</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://chrismoos.com/?p=753</guid>
		<description><![CDATA[Since Apple launched the iPhone in 2007 there has been an unprecedented growth in the mobile phone market. From new advances in hardware, such as touch screens, to operating systems mimicking the full power of a desktop computer. Never has a smartphone been able to penetrate the demographics of 10 year olds, to teenagers, or [...]]]></description>
			<content:encoded><![CDATA[<p>Since Apple launched the iPhone in 2007 there has been an unprecedented growth in the mobile phone market. From new advances in hardware, such as touch screens, to operating systems mimicking the full power of a desktop computer. Never has a smartphone been able to penetrate the demographics of 10 year olds, to teenagers, or mom and dad &#8212; until the iPhone. </p>
<p>There are now hundreds of thousands of applications built for mobile phones, with every use case you can imagine. But even with the growth and advances of the past few years, the industry is still in its youth. </p>
<p>Apple, with its enormous success, is still constantly on the front page because of its questionable practice &#8212; sole control of the iPhone platform. Unlike desktop operating systems, such as Windows or Mac OS X, where the user is in complete control of the operating system, the iPhone is a jail, with Apple deciding what can come in and go out.</p>
<p>The App Store, the only way for a developer to target an iPhone, or a user to install an application on the iPhone, is in constant censorship mode. Certain API&#8217;s are not allowed and questionable content is put to rest. </p>
<p>It is time that Apple realizes that it is not only the hardware in the iPhone, or the software that powers it, that makes it a powerful force in the mobile phone market. The power is in the <em>apps</em>, the platform, and in the imaginations of developers.</p>
<p>Even though there are many applications for the iPhone, there could be so much more. The iPhone is a powerful device that can be used to provide a platform for mobile applications in every industry possible. Medical, industrial, retail &#8212; the list goes on. But as long as Apple is in control of what happens on the iPhone, developers will never be able to harness the full potential of such a beautiful device.</p>
<p>Apple now has the ability to turn the iPhone, and the new iPad, into a commodity device. The PC of the mobile world. My intuition tells me that Apple won&#8217;t let this happen. They prefer to maintain complete control of their platform, and while making it a premium and luxury item, they stop it from attaining the growth that it most definitely can achieve. </p>
<p>The future is in Apple&#8217;s hands &#8212; and they have the ability to make it an awesome place.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismoos.com/2010/04/17/unlocking-the-full-potential-of-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple Push Notification Library for&#160;Haskell</title>
		<link>http://chrismoos.com/2009/07/13/apple-push-notification-library-for-haskell/</link>
		<comments>http://chrismoos.com/2009/07/13/apple-push-notification-library-for-haskell/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 20:40:29 +0000</pubDate>
		<dc:creator>Chris Moos</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://chrismoos.com/?p=421</guid>
		<description><![CDATA[I have been working with Apple&#8217;s Push Notification service recently and decided to make a library to send notifications with Haskell. It is very simple and has a few helpers to make notifications with an alert, sound, etc,. ApplePush Hackage ApplePush Documentation When using the library, you must use an SSL tunnel, because Haskell&#8217;s SSL [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working with Apple&#8217;s Push Notification service recently and decided to make a library to send notifications with Haskell. It is very simple and has a few helpers to make notifications with an alert, sound, etc,. </p>
<p><img src="http://cdn.chrismoos.com/wp-content/uploads/2009/07/push.jpg" style="padding: 25px; width: 350px; float: right;"/></p>
<p><a href="http://hackage.haskell.org/package/ApplePush-0.1">ApplePush Hackage</a></p>
<p><a href="http://chrismoos.com/static/ApplePush/">ApplePush Documentation</a></p>
<p>When using the library, you must use an SSL tunnel, because Haskell&#8217;s SSL support is incomplete. I use stunnel4, which works great, and offloads the SSL processing as well. Here are some basic instructions on getting started with the library.</p>
<p><span id="more-421"></span></p>
<h3>Stunnel setup</h3>
<p>Download your certificate from Apple. If you are using a Mac, export the certificate (.cer) into a directory. Also, export your private key as a .p12 file. Stunnel needs the certificate/key in one file, in the following format:</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #660033;">-----BEGIN</span> RSA PRIVATE KEY-----<br />
YOUR KEY<br />
<span style="color: #660033;">-----END</span> RSA PRIVATE KEY-----<br />
<span style="color: #660033;">-----BEGIN</span> CERTIFICATE-----<br />
YOUR CERTIFICATE<br />
<span style="color: #660033;">-----END</span> CERTIFICATE-----</div></td></tr></tbody></table></div>
<p>Run the following commands to convert and concatenate your certificate/private key.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">openssl x509 <span style="color: #660033;">-in</span> cert.cer <span style="color: #660033;">-inform</span> DER <span style="color: #660033;">-outform</span> PEM <span style="color: #660033;">-out</span> cert.pem<br />
openssl pkcs12 <span style="color: #660033;">-in</span> key.p12 <span style="color: #660033;">-out</span> key.pem <span style="color: #660033;">-nodes</span><br />
<span style="color: #c20cb9; font-weight: bold;">cat</span> key.pem cert.pem <span style="color: #000000; font-weight: bold;">&gt;</span> certs.pem</div></td></tr></tbody></table></div>
<p>Create a file called tun.conf, which will configure stunnel.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #007800;">client</span>=<span style="color: #c20cb9; font-weight: bold;">yes</span><br />
<span style="color: #007800;">debug</span>=<span style="color: #000000;">5</span><br />
<span style="color: #007800;">foreground</span>=no<br />
<span style="color: #007800;">pid</span>=tun.pid<br />
<span style="color: #7a0874; font-weight: bold;">&#91;</span>service<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />
<span style="color: #007800;">accept</span>=<span style="color: #000000;">2195</span><br />
<span style="color: #007800;">connect</span>=gateway.sandbox.push.apple.com:<span style="color: #000000;">2195</span><br />
<span style="color: #007800;">cert</span>=certs.pem</div></td></tr></tbody></table></div>
<p>This will bind stunnel to the local port 2195, and tunnel traffic via SSL to <em>gateway.sandbox.push.apple.com:2195</em>.</p>
<p>Next run the following command to start <em>stunnel</em>.</p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">stunnel tun.conf</div></td></tr></tbody></table></div>
<h3>ApplePush Haskell Library</h3>
<p>Let&#8217;s update our cabal packages, and then install.</p>
<div class="codecolorer-container sh blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="sh codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cabal update<br />
cabal <span style="color: #c20cb9; font-weight: bold;">install</span> ApplePush</div></td></tr></tbody></table></div>
<p>In addition to the library, an application, called <em>applepushtest</em>, is also installed so that you can test the library and your SSL tunnel setup. Let&#8217;s try it out. </p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">c10k:~ chris$ ~<span style="color: #000000; font-weight: bold;">/</span>.cabal<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>applepushtest <br />
Apple Push Test, Version <span style="color: #000000;">0.1</span><br />
usage: applepushtest device_token<span style="color: #7a0874; font-weight: bold;">&#40;</span>hex<span style="color: #7a0874; font-weight: bold;">&#41;</span></div></td></tr></tbody></table></div>
<p>You must pass a parameter, device_token, to the application. This tells the library which device to send the notification to. This token must be retrieved in your client application using <a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1">registerForRemoteNotificationTypes:</a>. Once you have your token, run the following command. </p>
<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">c10k:~ chris$ ~<span style="color: #000000; font-weight: bold;">/</span>.cabal<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>applepushtest <span style="color: #7a0874; font-weight: bold;">&#40;</span>yourtoken<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
Device Token: <span style="color: #7a0874; font-weight: bold;">&#40;</span>yourtoken<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
Message<span style="color: #000000; font-weight: bold;">&gt;</span> hey<br />
Message<span style="color: #000000; font-weight: bold;">&gt;</span> whats up?<br />
Message<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">test</span><span style="color: #000000; font-weight: bold;">!!</span><br />
Message<span style="color: #000000; font-weight: bold;">&gt;</span></div></td></tr></tbody></table></div>
<p>To use the library in your application, check out Main.hs for an example.</p>
]]></content:encoded>
			<wfw:commentRss>http://chrismoos.com/2009/07/13/apple-push-notification-library-for-haskell/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

