<?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>Talk Funnel &#187; Apple</title>
	<atom:link href="http://ramin.firoozye.com/tag/apple/feed/" rel="self" type="application/rss+xml" />
	<link>http://ramin.firoozye.com</link>
	<description>Talk Funnel: Ramin Firoozye&#039;s (occasional) Public Whisperings</description>
	<lastBuildDate>Fri, 21 Oct 2011 14:14:22 +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>A Visitor&#8217;s Guide to WWDC and San Francisco</title>
		<link>http://ramin.firoozye.com/2010/06/04/a-visitors-guide-to-wwdc-and-san-francisco/</link>
		<comments>http://ramin.firoozye.com/2010/06/04/a-visitors-guide-to-wwdc-and-san-francisco/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 09:14:21 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[San Francisco]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=261</guid>
		<description><![CDATA[It&#8217;s time, once again, for the annual love-fest that is WWDC and that starts next week. I&#8217;ve been to each one since the iPhone launch (I know, that makes me a relative newbie) but having spent a good chunk of the past two decades living in San Francisco, I figured I&#8217;d combine tech-tips for first-time [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: right;" src="http://ramin.firoozye.com/wp-content/uploads/2010/06/wwdc20102.jpg" border="0" alt="wwdc2010.jpg" width="144" height="150" /></p>
<p>It&#8217;s time, once again, for the annual love-fest that is <a href="http://developer.apple.com/wwdc/">WWDC</a> and that starts next week. I&#8217;ve been to each one since the iPhone launch (I know, that makes me a relative newbie) but having spent a good chunk of the past two decades living in San Francisco, I figured I&#8217;d combine tech-tips for first-time attendees with social things to do for out-of-towners.﻿</p>
<h3>Tech Tips</h3>
<ul>
<li>You can register and get your badge on Sunday, the day before WWDC starts. That saves you a bit of time doing it on Monday when everyone stands in line to get into the keynote speech. If you do go in on Sunday then you may want to pop into <a href="http://sfmacindie.com/">sfMacIndie</a> at <a href="http://sanfrancisco.jilliansbilliards.com/">Jillian&#8217;s</a> in the Metreon at 6pm. It&#8217;s across the street from Moscone West. Grab a drink and chat up fellow developers. You may want to pace yourself. The next day is the big event and you want to be able to get there early &#8212; at least by 8am if not sooner. They don&#8217;t start letting you in until 9:30am so wear comfy shoes. Make sure to say hi to fellow line-standers as you hop from foot-to-foot trying to stay warm.</li>
<li>This is San Francisco. In June. This means chances of early morning sun are slim to none. Standing in line for the keynote means no moving for hours in the cold, blowing fog. Unless you&#8217;re seriously thick-skinned (like the poor, freezing <a href="http://venturebeat.com/wp-content/uploads/2009/06/iporn.jpg">iPorn girls</a> of last year) bring layers and be prepared to discard them as the day wears on and temperatures rise.</li>
<li>The on-screen keyboard on the iPad is nice, but don&#8217;t forget your laptop. You will want to take notes. Lots of notes. And fast. As <a href="http://www.marco.org/661870733">Marco Arment says</a> WWDC is one giant info-dump and there is no way to absorb everything. You&#8217;ll need a real keyboard to keep up. I like to create separate folders for each session and save note files in TextMate. Under each folder you can also save sample code for the sessions. Then I throw the whole top-level folder into TextMate as a project so I can quickly search and find what I&#8217;m looking for. I suggest you try to capture as much as you can while there and take time later to go over things. They were pretty quick about posting up the videos of each session last year, but there&#8217;s no replacement for one&#8217;s own notes.</li>
<li>Head down to the lunch area on the ground floor around noon. The food&#8217;s nothing to write home about (yeah, I&#8217;m being polite) but it&#8217;s a good chance to meet people and find out common interests. Most of the other times you&#8217;ll be standing in line or in-session. This is your chance to have a decent conversation and who knows, learn a thing or two from fellow developers. I&#8217;ve always enjoyed these random encounters.</li>
<li>If you have questions or want to get feedback from Apple engineers and designers, sign up for the labs and do it early. Spaces fill up fast, especially for the UI Design reviews. Drift down to the cafeteria area on the ground floor and find out what the sign-up protocol is. On the rare occasion there isn&#8217;t an interesting session, hover around the lab areas. You&#8217;ll pick up great info just by listening to Apple folks explain how things work.</li>
<li>Try to bring a Verizon or Sprint MiFi. The Apple-supplied WiFi network is OK, but most of the time it gets overloaded. Forget AT&amp;T&#8217;s 3G network. It&#8217;s a joke. With most people carrying a MacBook, an iPhone, and an iPad, your best bet is to bring your own network. The downside to this is you probably won&#8217;t be able to access the WWDC attendee-only content accessible to those on the network there. But once you&#8217;ve snagged all the goodies you can switch back to your own network and zip along. [<em>Update:</em> OK, maybe <a href="http://gigaom.com/2010/06/07/steve-jobs-survives-gizmodo-but-not-mifi/?utm_source=gigaom&amp;utm_medium=recent-posts">not such a good idea</a> if everyone turns them on at once.]</li>
<li>If you bring your own network, make sure you set a secure password for access to the wireless hub. And for crying out loud, don&#8217;t make it the 40-bit WEP. Go for the WPA2. Way too many people running <a href="http://www.wireshark.org/">Wireshark</a> or <a href="http://www.kismetwireless.net/">Kismet</a> out there. Also, while you&#8217;re at home set up all your network devices to log in, then set the hub to not broadcast its SSID. That way all those other people around you won&#8217;t have to scroll through a gajillion wireless hotspot names.</li>
<li>Bring a comfortable backpack. The one they&#8217;ve been handing out to WWDC attendees the last few years is pretty minimalistic. If you need space for all your gear (and an extra sweater) then bring your own. Don&#8217;t worry about food, unless you need to snack often. They provide bagels and cookies and whatnot to keep you fueled up.</li>
<li>Sync up your dev iPhone or iPad at home and back everything up. There&#8217;s a good chance there will be a new SDK drop there with a bunch of new goodies. Recommend you not try to download over the WiFi. Walk over to one of the round tables outside the session rooms and plug into the Ethernet firehose. Much, much faster.</li>
<li>Please, oh please remember to turn down the volume on your phone/iPad/Mac during sessions. Yes, you know you&#8217;re on Twitter and now we do too. You can thank <a href="http://furbo.org/">chirping bird man</a> for that.</li>
<li>If your backside is sore from all the sitting down or you feel like taking a quick nap, there are bean-bags on the top floor. First come-first serve.</li>
<li>If you&#8217;re looking for a job or have a job to post there are white-boards in the bean-bag lounge area.</li>
<li>Stash a power-strip in your pack &#8212; it&#8217;s a good way to make friends.  Among tech conferences WWDC is one of the better ones for providing power to attendees. Even so, they sometimes run out of plugs. I&#8217;m partial to the <a href="http://www.monstercable.com/productdisplay.asp?pin=4220">Monster Outlets to Go</a> units. They&#8217;re small and you can charge up most of your devices in one sitting. Some models even come with built-in USB charging ports. While you&#8217;re at it remember to bring separate power-to-USB adapters for your iPhone and iPad. The iPhone is happy with the <a href="http://store.apple.com/us/product/MB352LL/B">small 5W units</a> but the iPad needs the beefier <a href="http://store.apple.com/us/product/MC359LL/A">10W adapters</a>. If space is a premium you may want to grab a couple of <a href="http://www.amazon.com/gp/product/B00295RB3S">retractable USB cables</a> too.</li>
<li>If you&#8217;re missing anything or forget to bring any hardware, your two nearby geek supply outlets are the <a href="http://www.apple.com/retail/sanfrancisco/">Apple Store</a> on Stockton Street and <a href="http://www.centralcomputers.com/">Central Computer</a> on Folsom at 4th.</li>
</ul>
<p>OK, so much for the conference itself. What about the social life?</p>
<h3>Organized Events</h3>
<p>Here&#8217;s a good reference for organized after-session gatherings: <a href="http://wwdcparties.com/">http://wwdcparties.com﻿</a>. On Tuesday between 7:30 and 10:30 pm, however, a lot of people will likely head over to the Apple Design Awards ceremony. A large number will stick around for the Stump the <span style="text-decoration: line-through;">Chumps</span> Experts session. On Thursday night Apple throws a bash in Yerba Buena Gardens. You&#8217;ll need your WWDC badge to get in. If you&#8217;re of drinking age you&#8217;ll need to get a wrist-band at Moscone before heading over. Pace yourself on the booze if you plan on hitting any other places afterward. You get all the food and beer you can consume plus a (surprise) live musical act. And there&#8217;s still Friday&#8217;s sessions left.</p>
<h3 style="font-size: 1.17em;">Quick Eats</h3>
<p>If you get tired of eating pre-packaged sandwiches and are hankering for something slightly different, here are a few places within easy walking distance of Moscone. However, no guarantee they&#8217;ll get you in and out in time for the afternoon sessions:</p>
<ul>
<li><a href="http://westfield.com/metreon/ourstores/all-dining-2043.html">Food court at Metreon</a> - Walk across the street, grab yourself something and go sit outside in Yerba Buena Gardens to decompress. Absolutely glorious if it&#8217;s sunny.</li>
<li><a href="http://www.chow.com/restaurants/39386/taqueria-cancun">Taqueria Cancun</a> - Bit of a hike up on 6th and Market, but decent enough Mexican fare.</li>
<li><a href="http://www.outthedoors.com/">Out the Door</a> &#8211; (sorry, Flash site) is by the same people who run the outstanding <a href="http://slanteddoor.com/">Slanted Door</a> in the Ferry Building. This one&#8217;s in Westfield (Nordstrom) shopping center on Market and 5th.</li>
<li><a href="http://www.specialtys.com/">Specialty&#8217;s</a> &#8211; Great sandwiches. Best part is they have an <a href="http://www.specialtys.com/mobile">iPhone-friendly ordering service</a>. Closest one is on New Montgomery between Mission and Market.</li>
<li><a href="http://www.thesentinelsf.com/">The Sentinel</a> &#8211; I haven&#8217;t eaten there yet, but people keep recommending it and it&#8217;s top of my list for lunch places to try. Fancy-looking sandwiches.</li>
</ul>
<h3 style="font-size: 1.17em;">Coffee</h3>
<p>The swill they serve at WWDC may be fine for getting you over your previous night&#8217;s hangover, but you owe it to yourself to get some decent coffee while in town. Good places within walking distance:</p>
<ul>
<li><a href="http://bluebottlecoffee.net/cafe.html">Blue Bottle</a> - Just go. Get the Latte if you&#8217;re in a hurry or the drip coffee if you have time. Don&#8217;t worry, it&#8217;ll make sense once you get there.</li>
<li><a href="http://www.peets.com">Peet&#8217;s</a> - Closest one is on Mission between 3rd and New Montgomery. Strong coffee. Puts hair on your chest, whether you want it or not.</li>
<li><a href="http://www.chatz.com/">Chatz</a> - Bit of a hike on 2nd Street between Howard and Folsom, but good place to go if your feet need some stretching.</li>
</ul>
<h3>﻿Local Watering Holes</h3>
<p>For some reason after a day of technical brain-melding a lot of people are extra-primed to kick back and partake of adult beverages. Go figure. If that&#8217;s what you&#8217;re looking to do, here&#8217;s a number of local hangouts where you are sure to bump into fellow WWDC attendees:</p>
<ul>
<li><a href="http://sanfrancisco.jilliansbilliards.com/">Jillian&#8217;s</a> &#8211; It&#8217;s across the street, doubles as a sports bar, has a large selection of beers on tap, and has pool tables in the back.</li>
<li><a href="http://www.thirstybear.com/">Thirsty Bear Brewing</a> &#8211; Upscale brewpub. Decent beers and Tapas-style dishes, only a block away.</li>
<li><a href="http://www.thechieftain.com/">Chieftain&#8217;s</a> &#8211; Grungy Irish pub. First stop for a lot of die-hard old-timers before they inexplicably head all the way out to&#8230;</li>
<li><a href="http://www.tommystequila.com/">Tommy&#8217;s Mexican Restaurant</a> &#8211; A favorite of Apple folks, but it&#8217;s all the way out in outer Richmond. With places like <a href="http://www.tresagaves.com/locations/sf">Tres Agaves</a> or dive bars like City Bar in the Mission you&#8217;d think someone would try to find something more accessible. It&#8217;s far away, in the fog zone, and the place is usually mobbed but if you do decide to head out to Tommy&#8217;s try to snag a ride with someone else&#8211;preferably a teetotaler. There&#8217;s a chance you&#8217;ll end up slamming tequila shots and trust me, you won&#8217;t want to be driving, flagging down a rare cab, or being at the mercy of Muni late at night.</li>
<li><a href="http://www.harlotsf.com/">Harlot</a> &#8211; Decent, but small. Odds are there will be a line to get in.</li>
<li><a href="http://www.starwoodhotels.com/whotels/property/overview/index.html?propertyID=1153">XYZ bar at W Hotel</a> &#8211; Upscale drink spot. Excellent place to hang out if you&#8217;re on a corporate expense account or your app just cracked the Top 10.</li>
</ul>
<h3>A little further out &#8212; but still worth it</h3>
<p>Want to pretend you&#8217;re a local? Some are a bit of a walk, but if you get in with a group of fellow developers and want to get out of the Folsom/Howard zone, here are a few places to try (in no particular order):</p>
<ul>
<li><a href="http://theirishbank.com/">Johnny Foley&#8217;s</a> - Irish Pub within walking distance. It can get a bit touristy, but there&#8217;s nightly live music and (natch) Guinness on tap.</li>
<li><a href="http://www.zeitgeistsf.com/">Zeitgeist</a> - Sort of a cross-road of cultures and styles. No other way to describe it.</li>
<li><a href="http://www.sfstation.com/orbit-room-cafe-a892">Orbit Room Cafe</a> - Best damn Bloody Marys in town.</li>
<li><a href="http://www.thehotelutahsaloon.com/">Hotel Utah</a> - Grungy local spot, sometimes with good music.</li>
<li><a href="http://www.bottomofthehill.com/">Bottom of the Hill</a> - Great place for local live indy bands. Out in Potrero Hill (accessible via the Muni T-line) but the music&#8217;s usually worth the trip.﻿</li>
<li><a href="http://asiasf.com/">AsiaSF</a> - The waitresses double as transgender stage performers &#8212; and they&#8217;re awesome.</li>
<li><a href="http://www.21st-amendment.com/">21st Amendment Brewery</a> - Big with the local tech types floating around 2nd street. Decent brews.</li>
</ul>
<p>Obviously I&#8217;m leaving a lot out, but this should give you a decent starting point. Feel free to post any corrections or favorites in the comments. Hope to see you all at WWDC. If anyone wants to look me up and say hi, I&#8217;m <a href="http://twitter.com/raminf">@raminf</a> on Twitter.</p>
<p> </p>
<p><em>Update</em>: Added a few more places &#8212; for those in a hurry to get back to hacking and getting their mind blown.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2010/06/04/a-visitors-guide-to-wwdc-and-san-francisco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problems with Push</title>
		<link>http://ramin.firoozye.com/2009/09/30/problems-with-push/</link>
		<comments>http://ramin.firoozye.com/2009/09/30/problems-with-push/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 06:51:22 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=215</guid>
		<description><![CDATA[I agree with most everything Karl Adam says about the limitations of the Apple Push Notification Service, especially the problem with its failure to stack notifications so they&#8217;re not missed. I posted a bug report a while back (rdar://7054632) offering a simple solution to get around this particular problem: save each incoming push payload into [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;"><img src="http://ramin.firoozye.com/wp-content/uploads/2009/09/pushsad.png" alt="pushsad.png" border="0" width="195" height="212" /></div>
<p>I agree with most everything <a href="http://matrixPointer.com/karl/posts/push-notifications-no-cigar" target="_blank">Karl Adam says</a> about the limitations of the Apple Push Notification Service, especially the problem with its failure to stack notifications so they&#8217;re not missed. </p>
<p>I posted a bug report a while back (<a href="rdar://7054632" target="_blank">rdar://7054632</a>) offering a simple solution to get around this particular problem: save each incoming push payload into Messages.app as a separate entry. That way if I get a push and don&#8217;t have time to get to it I can ignore it and come back to Messages later on and retrieve it and all received Push messages are kept until I choose to get rid of them.</p>
<p>The entry could be in the form of a special URL link that shows the alert message, but when clicked generates the same JSON payload format as a regular push event and invokes the app in the same manner so no extra coding would be needed (OK, maybe just a little bit of code on the server to check against processing duplicate requests). It would take care of a lot of problems with push usability.</p>
<p>An even more pressing issue I have with Push is if you are on a WiFi network behind a bunch of firewalls and more than one NAT server. This happens often in corporations or in homes with multiple routers acting as range-extenders. In these cases pushes fail to reach you &#8212; until you get back to a 3G network.</p>
<p>For some people Push is doubling as a remote event timer (since Apple won&#8217;t let us access the phone&#8217;s alarm database or submit local cron tasks). This makes it really hard  to issue reliable time-based alerts. </p>
<p>If Apple would just open up true background tasks and/or timed alerts and let the user decide whether they trust an app to let it access those services (much like location-based or push services) a lot of these hassles would go away.</p>
<p>Also, a European friend brought up that whereas SMS is included in most phone plans, push incurs data usage charges. Could be a hassle if you&#8217;re traveling and continue getting pushes.</p>
<p>Over all, I&#8217;d say push on the iPhone is a work in progress. As much as I&#8217;m intrigued and excited by its potential, I&#8217;m frustrated by its current implementation and limitations.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2009/09/30/problems-with-push/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WWDC 2009 Predictions</title>
		<link>http://ramin.firoozye.com/2009/03/26/wwdc-2009-predictions/</link>
		<comments>http://ramin.firoozye.com/2009/03/26/wwdc-2009-predictions/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 18:31:38 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=108</guid>
		<description><![CDATA[Word came today that Apple&#8217;s WorldWide Developer Conference is going to be running from June 8-12 2009 in San Francisco. Since Apple&#8217;s no longer going to be participating in MacWorld this is one of the few public conferences where Apple and its partners can make public product announcements. So now&#8217;s a good time to start [...]]]></description>
			<content:encoded><![CDATA[<p>Word came today that Apple&#8217;s <a href="http://developer.apple.com/wwdc/" target="_blank">WorldWide Developer Conference</a> is going to be running from June 8-12 2009 in San Francisco.</p>
<p>Since Apple&#8217;s no longer going to be participating in MacWorld this is one of the few public conferences where Apple and its partners can make public product announcements. So now&#8217;s a good time to start floating <strike>outlandish rumors</strike><br />
predictions as to what&#8217;s going to be announced.</p>
<p>Since Apple already announced its intention to release iPhone 3.0 software around that time, a lot of products will be taking advantage of those features. One of them was access to the external USB port. The <a href="http://www.engadget.com/2009/03/17/live-from-apples-iphone-os-3-0-preview-event/" target="_blank">announcement demo</a> featured a heart-monitor. My prediction is it will be totally upstaged by one of these:</p>
<p><img src="http://ramin.firoozye.com/i/iPhoneCoffeeWarmer.jpg" width="413" height="356" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2009/03/26/wwdc-2009-predictions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eval applications on the iPhone AppStore</title>
		<link>http://ramin.firoozye.com/2009/03/19/eval-applications-on-the-iphone-appstore/</link>
		<comments>http://ramin.firoozye.com/2009/03/19/eval-applications-on-the-iphone-appstore/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 07:09:05 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[appstore]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=104</guid>
		<description><![CDATA[One of the loudest complaints about the iPhone AppStore has been the lack of support for eval or demo applications. In the desktop world users can often download an application and use it for a period of time before deciding whether it&#8217;s worth paying for. But in the iPhone AppStore universe (where all transactions occur) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/30dayeval.jpg" width="119" height="100" alt="" /></p>
<p>One of the loudest complaints about the iPhone AppStore has been the lack of support for <em>eval</em> or <em>demo</em> applications. In the desktop world users can often download an application and use it for a period of time before deciding whether it&#8217;s worth paying for. But in the iPhone AppStore universe (where all transactions occur) there is no such support. Developers are then faced with the option of offering a <em>lite</em> version for free (or inexpensively) and a <em>full</em> version of their apps. The problem is that this still doesn&#8217;t allow the end-user to test out the full app and then choose to buy it if it fits their needs. And switching from a free to a full app involves installing an entirely  independent application. </p>
<p>What we really need is a way to <i>upgrade</i> an eval app to the full version once the user decides the app is worth paying for.</p>
<p>Yesterday Apple publicly announced the developer release of <a href="http://www.apple.com/iphone/preview-iphone-os/" target="_blank">iPhone 3.0</a> software (it won&#8217;t be publicly released until this Summer). To the dismay of many developers, there was &#8212; once again &#8212; no mention of support for <em>eval</em> applications among the 100 new features and &#8220;1000 new APIs.&#8221; So again, we are left without the option of letting users download an app, take it for a test run and then pay for it.</p>
<p>Or are we?</p>
<p>One of the features announced publicly was support for <strong>In App Purchases</strong>. This was presented as a way for users to obtain add-on levels or objects directly within games. The transaction (or more precisely, <em>micro-transaction</em>) still goes through the AppStore and gets charged to the same account. Despite <a href="http://i.gizmodo.com/5172350/why-iphone-in+app-transactions-could-be-a-disaster" target="_blank">public detractions</a> I belive this is a Good Thing &#8212; especially since the  feature can be used to <b>legitimately support eval applications</b>, even if the AppStore doesn&#8217;t officially support it yet.</p>
<p>Here&#8217;s how:</p>
<ul>
<li>Developer offers application <em>for free</em> on the app-store. This is a fully functional version (i.e. not <i>lite</i> or <i>crippleware</i>).</li>
<li>User downloads and runs the application and is informed that the application is in <em>eval</em> mode and will stop working after a period of time.</li>
<li>After the eval period  (say, 1-4 weeks) the application puts up a notice indicating the eval period has expired. It can either stop working or drop into a degraded mode.</li>
<li>At this point the user is given the option of performing an <em>In App purchase</em> of the full application.</li>
<li>If user accepts, the application contacts the AppStore and purchases the add-on &#8212; <i>which would be priced at what the full-price of the App would otherwise be</i>. Once completed, the app downloads an <i>add-on key</i> indicating the app has been purchased.</li>
<li>The presence of add-on indicates that the full app has been purchased and the timeout is taken out. All the application has to do each time it is launched is to look for the presence of this add-on.</li>
<li>Everyone&#8217;s happy.</li>
</ul>
<p>There&#8217;s a key assumption here &#8212; that the AppStore keeps track of already purchased <em>In App</em> purchases the same way it does with full applications today. In other words, if the user tries to re-download an In App purchase that they&#8217;ve already purchased with the same iTunes account, they shouldn&#8217;t be charged twice. If a user deletes the app or moves to a new phone, all they have to do is download the free version of the app, perform another In App purchase (for free this time) and off they go.</p>
<p>However, if this assumption is not true and In App purchases are tracked separately than full applications (or the application itself is responsible for keeping track of those transactions) then the developer will have to implement a way to track In App purchases that works across multiple app installs &#8212; most likely a simple web-server to keep track of eval vs. purchased apps. Let&#8217;s hope it doesn&#8217;t come to that (the documentation on the Store Kit is not out as of this writing and even if it was, developers under NDA won&#8217;t be able to talk about it publicly until the public  release of the 3.0 software).</p>
<p>There are some other issues that need to be hashed out, mainly what happens if unscrupulous third-parties find out what this add-on looks like and make it available for free download? The iPhone application sandbox makes it a non-issue since only the application itself is allowed to write to its Documents directory or modify its user settings &#8212; unless the phone has been jailbroken, in which case the concerned developer may want to support more complex security (like cryptographic  signing) for the add-on. Given that the <a href="http://www.google.com/search?q=Decrypting+AppStore+Applications&#038;ie=utf-8&#038;oe=utf-8" target="_blank">AppStore DRM appears to be compromised</a> using this technique does not significantly increase the risk of software piracy.</p>
<p>Another potential issue is the user who downloads the fully functional eval version, uses it for the full eval period, then deletes it, re-download and installs it so they can get another free eval period. If this is an area of concern, it can be handled through a simple web-service that keeps track of how many times the same user has installed an app. Personally, I don&#8217;t think it&#8217;s worth the hassle given that deleting an app also gets rid of all user-generated data. But that&#8217;s me.</p>
<p>Note also that when I&#8217;m talking about <em>downlaoding</em> something, I don&#8217;t mean literally downloading a chunk of code, but some sort of <em>token</em> that takes away the eval time limit. The whole operation can be performed very quickly once the In App transaction is completed.</p>
<p>I firmly believe having support for eval apps is critical for medium to high-priced applications to flourish on the AppStore. A user will hesitate to fork out a high price for a full-featured app without having the option to kick the tires beforehand. This method can easily solve the problem and let developers do eval apps as soon as the 3.0 software is officially released.</p>
<p><b>Update</b>: Apple has since announced that free apps <em>can not</em> use StoreKit. This is to avoid a potential bait-and-switch situation where the consumer downloads what they think is a free app and then get hit with a fee. However, I think it&#8217;s a misguided policy. A developer who does that will quickly get down-reviewed (if they even make it out of the app-review chute). A more likely scenario would be to allow users to use an app for a limited period of time, but give them the option to unlock the app for continued use.</p>
<p>Another more fundamental issue, however, is whether app developers even <i>want</i> an eval feature. I&#8217;ve heard from several Android developers that the Android store return policy has severely impacted sales of their apps. Their argument is that returns should be based on faulty apps, not because someone found their game too hard. Presumably, enabling eval apps will cut down on a lot of impulse-then-discard purchases that go on today.</p>
<p>Certainly a topic worthy of further discussion.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2009/03/19/eval-applications-on-the-iphone-appstore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes from the iPhone Tech Talk</title>
		<link>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/</link>
		<comments>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 23:34:52 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/?p=49</guid>
		<description><![CDATA[I spent all yesterday at Apple&#8217;s first iPhone Tech Talk in San Francisco (technically, Paris was first because of time differences, but we won&#8217;t quibble). After seeing the schedule of events (and having attended WWDC) my expectations for getting new technical information were pretty low. Boy, was I wrong. The talk itself was under NDA [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ramin.firoozye.com/i/iphonetechtalk.jpg" width="266" height="208" alt="" /></p>
<p>I spent all yesterday at Apple&#8217;s first <a href="http://developer.apple.com/events/iphone/techtalks/" target="_blank">iPhone Tech Talk</a> in San Francisco (technically, Paris was first because of time differences, but we won&#8217;t quibble). After seeing the schedule of events (and having attended WWDC) my expectations for getting new technical information were pretty low. </p>
<p>Boy, was I wrong.</p>
<p>The talk itself was under NDA so I won&#8217;t go into details. But I&#8217;ll point at a couple of items in current examples and documentation that everyone should be aware of:</p>
<ul>
<li>If your app is using audio in any way, you&#8217;ll want to make sure you&#8217;ve read and understood the &#8220;<em>Audio Sessions: Cooperating with Core Audio</em>&#8221; section of the &#8220;<em>Core Audio Overview</em>&#8221; document (it&#8217;s part of your help document set in the SDK).
<p>Of special importance is making sure you declare the proper <em>AudioSessionCategory</em> for your app. Not doing it means that if your app uses sound (input or output) and gets interrupted &#8212; by an incoming phone call, or even by the user plugging and unplugging headphones &#8212; your app&#8217;s sound may not continue playing properly.  There&#8217;s some example code in the <em>SpeakHere</em> example to help point the way.</p>
<p>Here, by the way is what the documentation says:<br />
<blockquote>Ignoring Audio Session Services will not prevent your application from running, but your app may not behave the way you want it to. <strong>Never ship an iPhone or iPod touch application that uses audio without using this interface</strong>.</p></blockquote>
<p>You&#8217;ve been warned.</li>
<li>If you&#8217;re using the accelerometer, you&#8217;ve probably seen the low-pass filter code in the docs and examples. The point of the filter is to smooth the effect of motion &#8216;jitter.&#8217;<br />
<br />
The thing is, the basic low-pass filter formula is &#8212; to put it mildly &#8212; non-functional (aka <em>brain-dead</em>). Again, I can&#8217;t talk about the specifics, but the presenter had graphs that showed how bad that formula behaves. </p>
<p>Actual color graphs, I tell you!!! </p>
<p>If you manage to get your hands on a sample iPhone Apple application called <em>Touch Fighter</em> &#8212; you&#8217;ll want to use the smoothing function there (the app was handed out in WWDC and isn&#8217;t part of the standard SDK example set). </p>
<p>If you can&#8217;t find it, I suggest looking around for source code that handles the Wii remote (they have to deal with similar issues). At some point, I might post a more detailed technical article on this.</li>
<li>Gesture management is <em>still</em> something that Apple leaves to individual developers, instead of including it in the SDK. I have a &#8216;swipe&#8217; detection library (but it&#8217;s only for one-finger swipes, not multi-touch). If there&#8217;s demand for it, I&#8217;ll post it up.
<p>But really, this should be something supported in the OS.</li>
</ul>
<p>Most of the TechTalks are full now. If you happen to have gotten accepted, don&#8217;t skip them. If not, get on the waiting list. It&#8217;s worth it. The sessions on game development and performance tuning are massive info-dumps. Might want to take a lot of notes.</p>
<p><em>P.S.</em> That mod-squad picture on <a href="http://developer.apple.com/events/iphone/techtalks/" target="_blank">the web site</a> (excerpted above) features actual Apple evangelism group members strutting their stuff <img src='http://ramin.firoozye.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/10/23/notes-from-the-iphone-tech-talk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Leopard firewall and hotspot security</title>
		<link>http://ramin.firoozye.com/2008/01/25/leopard-firewall-and-hotspot-security/</link>
		<comments>http://ramin.firoozye.com/2008/01/25/leopard-firewall-and-hotspot-security/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 05:22:30 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/2008/01/25/leopard-firewall-and-hotspot-security/</guid>
		<description><![CDATA[When I upgraded my MacBook Pro to Leopard last October, one of the first things I checked was whether the built-in firewall was running or not. To my abject horror, I found out that a) it wasn&#8217;t and b) it wasn&#8217;t really doing what I expected it to do, namely, keep incoming port-scanners out. Subsequent [...]]]></description>
			<content:encoded><![CDATA[<p>When I upgraded my MacBook Pro to Leopard last October, one of the first things I checked was whether the built-in firewall was running or not. To my abject horror, I found out that a) it wasn&#8217;t and b) it wasn&#8217;t really doing what I expected it to do, namely, keep incoming port-scanners out. Subsequent in-depth <a href="http://www.heise-security.co.uk/articles/98120" target="_blank">security analyses</a> didn&#8217;t exactly raise my confidence much.</p>
<p>Since I do most of my development work on my laptop and so much of it entails running various types of servers locally, I set out to find something that actually kept snoopers out. A quick <a href="http://seaotter.berkeley.edu/cab/mac-firewalls/" target="_blank">search</a> led me to <a href="http://www.intego.com" title="Intego Software" target="_blank">Intego Software</a> and their <a href="http://www.intego.com/netbarrier/" title="NetBarrier" target="_blank">NetBarrier</a> product (Symantec&#8217;s Norton products don&#8217;t run native on the Intel CPU). There are people out there who don&#8217;t like Intego and their offerings, especially with the &#8216;hidden&#8217; annual subscription fees associated with the software (now this isn&#8217;t unusual in the Windows world, but it&#8217;s something the folks at Intego <span style="font-style: italic;">should</span> mention right upfront.) But I haven&#8217;t had any bad experiences with them. Besides, choices were few and I found a deal for under $60.</p>
<p>To be clear, most people at home connect to the Internet through a router that offers them NAT services which effectively blocks incoming connections. For those situations, a software firewall is overkill. But if like me, you spend a lot of time at public WiFi hotspots like coffee shops or away from known, trusted routers, then you&#8217;ll want to run a firewall to keep the legions of port-scanners out there at-bay. If you think you&#8217;re unlikely to be a victim of port-scanning, think again. Last time I set up a web-server with a static IP directly connected to the net, it took less than 15 minutes from the time the ISP turned on the tap to when the first port-scans came in. By the time I turned the server off a month later, the web-server log-file was chock-a-block full of known exploits and bizarre attempts at trying to break through &#8212; most of them through overseas IP sources and zombies.</p>
<p>But I digress.</p>
<p><span id="more-16"></span></p>
<p>At the 2008 Macworld Conference in San Francisco last week, Intego had a booth and they were talking about their latest X5 version upgrade. It looked interesting, but NetBarrier was full of features I didn&#8217;t personally care about (Cookie management while doing web-service development. No thanks!) When I got home, I ran across <a href="http://www.macworld.com/article/131116/2007/12/firewall.html" target="_blank">this Macworld magazine article</a> that claimed the Leopard 10.5.1 upgrade had fixed a lot of the problems with the built-in firewall. So I set out to do some tests of my own. My primary test was for the situation you are most likely to encounter when you&#8217;re away from the comfort of your home router &#8212; to see if any TCP port on my machine was accessible from the outside.</p>
<p>First of all, to get around the NAT router firewall issue, I tried two types of tests: the first was a live test at a neighborhood coffee-shop running a standard Linksys router with no wireless security enabled. The other was with my Intel MacBook Pro running Leopard 10.5.1 and directly connected to the net via Sprint&#8217;s EVDO network. To do the actual port-scanning, I needed an external service and Steve Gibson&#8217;s excellent <a href="http://www.grc.com" title="Shields UP!" target="_blank">Shields UP!</a> service fit the bill nicely. This service opens each port sequentially and prints out a color-coded chart indicating whether the port is open (<span style="color: #FF051A;">red</span>), it&#8217;s responding but closed (<span style="color: #231BFF;">blue</span>), or it&#8217;s in <span style="font-style: italic;">stealth mode</span> (<span style="color: #36C60A;">green</span>) &#8212; meaning that it won&#8217;t even acknowledge that there is someone at the other end. Ideally, you want to have the output of Shields UP! be a field of green (all stealth). Blue squares are OK too, but certain port-scanners deduce from a reply that there&#8217;s a live machine at the other end and will keep scanning. Red boxes are really bad news, unless you&#8217;re running externally accessible services and have intentionally kept those ports open.</p>
<p>In my case, I didn&#8217;t want ANYTHING open, so I was looking for all greens. As a baseline, I turned off all firewalls and ran Shields UP! against my unprotected machine. Here&#8217;s what I got:</p>
<p>
<img src="http://ramin.firoozye.com/i/firewall-open.jpg" width="576" height="626" alt="" /><br />
Yikes! Most ports were responding as &#8216;closed&#8217; which meant that my my system was waving a red flag, saying <span style="font-style: italic;">I dare you to hit me with your best shot</span>. Here&#8217;s the same scan, this time with Intego&#8217;s NetBarrier X4 firewall enabled, using the preset <span style="font-style: italic;">Client, Local Server</span> setting. (I should also point out that NetBarrier correctly warned me about each and every port scan attempt until I told it to put the GRC server&#8217;s IP address on the trusted list):</p>
<p><img src="http://ramin.firoozye.com/i/withintego.jpg" width="560" height="625" alt="" /><br />
Looks good. Everything stealthy. Now let&#8217;s disable NetBarrier and try it with Leopard 10.5.1&#8242;s built-in firewall. You access the firewall settings from <span style="font-style: italic;">System Preferences</span> -&gt; <span style="font-style: italic;">Security</span> and then by clicking on the <span style="font-style: italic;">Firewall</span> tab. The default is set to <span style="font-style: italic;">Allow all incoming connections</span> (which gives us the mostly blue diagram above). I can understand why Apple chose to take this route. Security is often a balance between convenience and safety. Most users would be using their Macs at home behind a router or at work or school behind a firewall. These people would be protected against port scans by their NAT service (which effectively hides them from the outside world). A relatively smaller percentage visit open WiFi hotspots and of those who do, a very small number will find themselves sitting next to someone directly scanning their machine (the NAT service on the coffee shop&#8217;s wireless router will keep third-party scanners out). The only other population that would be truly at-risk would be those who run open servers with static IP addresses, and hopefully they know enough to go and manually enable their firewall.<br />
So setting the default to <span style="font-style: italic;">Allow all incoming connections</span> allows the significant majority of Mac users to hop onto the network and do their thing without having to muck with firewalls &#8212; which is as it should be. But if you&#8217;ve read this far, you (and I) are in the small majority of people paranoid enough to need better security.<br />
Anyway, this is the default&#8230;</p>
<p><img src="http://ramin.firoozye.com/i/firewallconfig1.jpg" width="493" height="303" alt="" /></p>
<p>So let&#8217;s try the <span style="font-style: italic;">Allow only essential</span> services option and run the port-scan:</p>
<p><img src="http://ramin.firoozye.com/i/firewallconfig-essential.jpg" width="576" height="626" alt="" /><br />
Hmm. Not much different than the <span style="font-style: italic;">Allow all incoming connections</span> version.<br />
Now let&#8217;s try the <span style="font-style: italic;">Set access for specific services and applications</span> option. The problem with this option is that by clicking the &#8216;+&#8217; button, you are presented with the contents of your <span style="font-style: italic;">Applications</span> folder. <span style="font-style: italic;">WTF!</span> What about background services already running or items registered to launch under the <span style="font-style: italic;">launchd</span> daemon? Obviously, if you want that level of control over your system, the simplified System Preference UI isn&#8217;t for you and should graduate to manually tweaking the <a href="http://www.ibiblio.org/macsupport/ipfw/" target="_blank">ipfw configuration</a> settings.</p>
<p>Moving along, we see an <span style="font-style: italic;">Advanced&#8230;</span> button on the bottom right:</p>
<p><img src="http://ramin.firoozye.com/i/firewall-advanced.jpg" width="595" height="319" alt="" /></p>
<p>Which brings up a dialog box to <span style="font-style: italic;">Enable Firewall</span> <span style="font-style: italic;">Logging</span> as well as <span style="font-style: italic;">Stealth Mode</span>. Aha! Let&#8217;s give that one a try.</p>
<p><img src="http://ramin.firoozye.com/i/firewall-advanced2.jpg" width="560" height="247" alt="" /><br />
And give it a go:<br />
<img src="http://ramin.firoozye.com/i/leopardfirewall.jpg" width="570" height="624" alt="" /><br />
Eureka! It&#8217;s all stealthy goodness. That&#8217;s what we want.<br />
<strong>In conclusion:</strong> if you are doing network development work under Leopard or spend a lot of time at public WiFi hotspots and have enabled sharing options on your laptop, you&#8217;d better be running some sort of software firewall. You can go with a commercial one (like NetBarrier) or use Apple&#8217;s built-in firewall, but <span style="font-style: italic;">only</span> if you tweak it so it&#8217;s set to <span style="font-style: italic;">Stealth</span> mode and it disables all incoming connections. If you do decide to go with the Apple firewall, I <span style="font-style: italic;">strongly</span> recommend you also augment it with an outbound scanner like <a href="http://www.obdev.at/products/littlesnitch/index.html" target="_blank">Little Snitch</a> (NetBarrier also provides this functionality) to make sure you know which applications on your machine are &#8216;phoning home.&#8217;<br />
Now a few caveats:</p>
<ul>
<li>We&#8217;re only looking at TCP ports here. I&#8217;m going to try to find an external UDP scanner and I&#8217;ll post the results. The UDP model behaves a little differently than TCP in that a closed UDP port is supposed to return an ICMP <span style="font-style: italic;">port unreachable</span> reply. So by staying quiet, scanners may assume that the port is open (!) and redouble their efforts. Let me repeat that. <span style="font-style: italic;">Staying quiet means your port is active</span>. But then, if you have a firewall and it&#8217;s blocking UDP requests, wouldn&#8217;t it be <span style="font-style: italic;">mistaken for the service being available?</span> The answer is&#8230; Yes. It&#8217;s a little strange and most UDP scanners sheepishly admit to that effect. But for the sake of completeness, it&#8217;s important to look for both kinds of scan, especially for <a href="http://www.cert.org/current/services_ports.html" target="_blank">well-known services</a>.</li>
<li>The GRC test only runs up to port number 1055 which covers the most commonly registered services (other than UPnP which usually runs at 5000). TCP ports technically go all the way up to 65535 but at those higher numbers there&#8217;s no guarantee any service is going to run on a given port number. I also ran all the above tests using GRC&#8217;s <span style="font-style: italic;">Common Ports</span> setting (which included UPnP) and got similar results.</li>
<li>Intego&#8217;s firewall also scans the incoming content for what they call <span style="font-style: italic;">spyware</span>, <span style="font-style: italic;">trojans</span>, and <span style="font-style: italic;">cookies</span>. There&#8217;s a little bit of poetic license being taken here. The most common methods for installing spyware and trojans on a machine is 1) through email or IM attachments, 2) if someone takes advantage of a flaw in your networked client (i.e. browser buffer overflow), or 3) if you download and run an infected application. I can&#8217;t tell from Intego&#8217;s material if they are, in fact, scanning for these vectors. If they are, good for them. But my guess is that what they&#8217;re doing is blocking spyware and trojans from <span style="font-style: italic;">going out</span>, once they&#8217;re installed on your machine. If that&#8217;s the case, you get the same effect by installing Little Snitch and monitoring outbound communications. I&#8217;ll keep digging on this.</li>
<li>Again, I&#8217;m most concerned with access to my machine while I&#8217;m out in the open and away from the comfort of my home firewall. If your use falls under that category you can choose to go with NetBarrier or Leopard firewall in stealth mode.</li>
</ul>
<p>Regardless of the firewall you run, if you spend a lot of time at public WiFi hotspots, you&#8217;ll also want to make sure you&#8217;re running some sort of VPN to keep the fellow with the mysterious smile, nursing a cold coffee, sitting across the room from you and sniffing your packets with <a href="http://kismac.macpirate.ch/" title="KisMac" target="_blank">KisMac</a> or <a href="http://www.netstumbler.com/" title="NetStumbler" target="_blank">NetStumbler</a>. Try running these programs yourself some time. You&#8217;ll be amazed how much critical stuff goes across the wire in the open. If you don&#8217;t have access to a VPN server at work or school, I suggest paying for a publicly accessible one like <a href="http://publicvpn.com/" title="PublicVPN" target="_blank">PublicVPN</a> or <a href="http://www.hotspotvpn.com/" title="HotSpotVPN" target="_blank">HotSpotVPN</a>.</p>
<p>And I&#8217;ll leave it at that.</p>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2008/01/25/leopard-firewall-and-hotspot-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2008 Concept Mac</title>
		<link>http://ramin.firoozye.com/2007/12/16/2008-concept-mac/</link>
		<comments>http://ramin.firoozye.com/2007/12/16/2008-concept-mac/#comments</comments>
		<pubDate>Sun, 16 Dec 2007 20:47:12 +0000</pubDate>
		<dc:creator>ramin</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://ramin.firoozye.com/2007/12/16/new-mac-for-macworld-2008/</guid>
		<description><![CDATA[The iPhone/iTouch input UI can do everything the Macbook trackpad/click-button combo can do and then some. It also opens up a new line of feedback and interaction between the application and the user. Throw in a Toshiba solid-state disk drive (with capacities up to 128GB in embeddable, 1.8&#8243; and 2.5&#8243; enclosures) and you&#8217;ve got another [...]]]></description>
			<content:encoded><![CDATA[<p><center><br />
  <img src="http://ramin.firoozye.com/i/NewMacConcept.jpg" width="420" height="354" alt="New Mac Concept" /><br />
</center></p>
<div style="clear:both">
<p>The iPhone/iTouch input UI can do everything the Macbook trackpad/click-button combo can do and then some. It also opens up a new line of feedback and interaction between the application and the user.</p>
<p>Throw in a Toshiba <a href="http://gizmodo.com/gadgets/solid-state-drives/toshiba-introduces-3-new-ssd-flavors-128gb-is-the-tastiest-332171.php" target="_blank">solid-state disk drive</a> (with capacities up to 128GB in embeddable, 1.8&#8243; and 2.5&#8243; enclosures) and you&#8217;ve got another category-changing leap.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ramin.firoozye.com/2007/12/16/2008-concept-mac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: ramin.firoozye.com @ 2012-02-05 02:40:45 -->
