<?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>yardley.ca</title>
	<atom:link href="http://yardley.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://yardley.ca</link>
	<description>greg yardley on online product management</description>
	<lastBuildDate>Thu, 08 Mar 2012 17:04:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>AdBlock&#8217;s acceptable ads won&#8217;t be</title>
		<link>http://yardley.ca/2012/01/03/adblocks-acceptable-ads-wont-be/</link>
		<comments>http://yardley.ca/2012/01/03/adblocks-acceptable-ads-wont-be/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 16:26:03 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Thought]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1121</guid>
		<description><![CDATA[Like Rob, I&#8217;m intrigued by AdBlock Plus&#8217; decision to start letting some &#8216;acceptable&#8217; ads go unblocked by default. This is a very decent way to make revenue &#8211; you can charge advertising companies who wish to be audited &#8211; but AdBlock Plus won&#8217;t be able to get away with it. It simply won&#8217;t be tolerated [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Like <a href="http://zeronomy.com/advertising/adblock-plus-will-let-some-ads-through">Rob</a>, I&#8217;m intrigued by AdBlock Plus&#8217; decision to start letting some &#8216;acceptable&#8217; ads go unblocked by default. This is a very decent way to make revenue &#8211; you can charge advertising companies who wish to be audited &#8211; but AdBlock Plus won&#8217;t be able to get away with it. It simply won&#8217;t be tolerated by the extension&#8217;s userbase. Why? People feel the pain of loss more sharply than the pleasure of gain. Ever released a new version of a product that simultaneously added ten wonderful new things and took away a tiny bit of little-used functionality? If you have, you know what I&#8217;m talking about.</p>
<p>The <em>correct</em> way to introduce selective ad blocking is to either release it as a completely separate, differently-branded product, or to add it to software that previously lacked ad blocking altogether. Wrap it in &#8216;make the Internet better&#8217; branding, call it &#8216;OccupyAdvertising&#8217; or something, and you&#8217;re good to go.</p>
<p>Some will argue that AdBlock Plus&#8217; new default settings will win out, because people don&#8217;t change settings. Not so. People don&#8217;t change most settings because they don&#8217;t care about them &#8211; if the default search engine&#8217;s Bing, it stays Bing. But look at the percentage of people who futz with something they do care about, like Facebook&#8217;s obtuse privacy settings &#8211; the majority can&#8217;t set them correctly, but try to set them they do. If it&#8217;s important enough, people will change it. And what&#8217;s most important to the users of a extension called &#8216;AdBlock Plus&#8217;?</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2012/01/03/adblocks-acceptable-ads-wont-be/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting up Kohana 3.2 on Mac OS X</title>
		<link>http://yardley.ca/2011/11/21/setting-up-kohana-3-2-on-mac-os-x/</link>
		<comments>http://yardley.ca/2011/11/21/setting-up-kohana-3-2-on-mac-os-x/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 22:58:45 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Kohana]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1108</guid>
		<description><![CDATA[I&#8217;ve been doing more coding than blogging lately. My tool of choice is Kohana, a hierarchical model-view-controller PHP framework &#8211; it forces me to follow some rules, and when you&#8217;re a relative beginner like me, you need to follow some rules. While Kohana is powerful, I&#8217;ve found it has a bit of a learning curve. [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>I&#8217;ve been doing more coding than blogging lately. My tool of choice is <a href="http://kohanaframework.org/">Kohana</a>, a hierarchical model-view-controller PHP framework &#8211; it forces me to follow some rules, and when you&#8217;re a relative beginner like me, you need to follow some rules.</p>
<p>While Kohana is powerful, I&#8217;ve found it has a bit of a learning curve. The documentation isn&#8217;t as strong as it could be, and the extensive changes between 2.X, 3.0, and 3.1 make it difficult to pick up and work with existing tutorials written for older versions.  The only long-form book written for Kohana, Packt&#8217;s <a href="http://www.packtpub.com/kohana-3-0-for-professional-web-applications-beginners-guide/book">Kohana 3.0 Beginners Guide</a>, was published in August and (while informative) is already a couple of versions behind.</p>
<p>For the beginner, setting up Kohana can be frustrating. This post covers some of the &#8216;gotchas&#8217; I&#8217;ve run into on Mac OS X.</p>
<p>After <a href="http://kohanaframework.org/download">downloading the Kohana 3.2 framework</a>, unzip it and place the contents of the unzipped folder in the directory where you plan on doing your development.  I keep my projects in a ~/Development folder, each in their own directory named after the project.  If I were create a project called &#8216;projectname&#8217;, I&#8217;d copy the contents of the unzipped kohana-3.2-master-1 folder to ~/Development/projectname.</p>
<p>First, enable Web Sharing from the Sharing pane of your System Preferences.app.  That will activate the stock Apache web server included with Mac OS X. (Yes, you could install Apache and PHP independently from the stock versions, but unless there&#8217;s a compelling reason I&#8217;d rather work with what I&#8217;ve got.)</p>
<p>Next, you&#8217;ll need to tell Apache to work with PHP5 by modifying Apache&#8217;s config file.  Open /private/etc/apache2/http.conf with your favorite editor and look for this line:</p>
<p><code>#LoadModule php5_module        libexec/apache2/libphp5.so</code></p>
<p>Remove the # in front of it to load Apache&#8217;s PHP5 module:</p>
<p><code>LoadModule php5_module        libexec/apache2/libphp5.so</code></p>
<p>While you&#8217;re editing Apache&#8217;s http.conf, you&#8217;ll want to make sure http.conf can be overridden by an .htaccess file in your Kohana directory, which will contain configuration specific to your Kohana application.</p>
<p>Search for the section starting with <code><Directory "/Library/WebServer/Documents"></code>. In that section, look for the AllowOverride directive. Change this to read <code>AllowOverride All</code>. Now you can save and close http.conf. </p>
<p>You&#8217;ll need to restart Apache for these changes to take effect, which you can do with the command <code>sudo /usr/sbin/apachectl restart</code>.</p>
<p>At this point, I encountered a rather cryptic error:</p>
<p><code>/usr/sbin/apachectl: line 73: ulimit: open files: cannot modify limit: Invalid argument</code></p>
<p>Happily, someone more knowledgable than me had <a href="http://blog.deversus.com/2010/11/mac-os-1065-apachectl-usrsbinapachectl-line-82-ulimit-open-files-cannot-modify-limit-invalid-argument/">already solved the problem</a>. Should you have this error, edit the /usr/sbin/apachectl script, and replace <code>ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"</code> with <code>ULIMIT_MAX_FILES=""</code>. You then will successfully be able to restart Apache.</p>
<p>Next, we need to get Mac OS X&#8217;s built in webserver to serve the contents of ~/Development/projectname. The default webserver directory on Mac OS X is /Library/WebServer/Documents. We could do this by editing Apache&#8217;s http.conf to change this default, but I prefer to create a symbolic link:</p>
<p><code>sudo ln -s ~/Development/projectname /Library/WebServer/Documents/projectname</code></p>
<p>This will make your Kohana application accessible at the http://localhost/projectname URL.  However, Kohana out of the box expects your application is at webroot &#8211; that is, at the http://localhost URL. </p>
<p>Let&#8217;s fix this. In your projectname directory, in the file application/bootstrap.php, find this code:</p>
<p><code>Kohana::init(array(<br />
	'base_url'   => '/',<br />
));</code></p>
<p>and change it to this:</p>
<p><code>Kohana::init(array(<br />
	'base_url'   => '/projectname/',<br />
));</code></p>
<p>You&#8217;ll also want to set up your local .htaccess file. The rules in .htaccess force all URLs to be redirected to index.php/URL, allowing Kohana to do its magic. Open the example.htaccess file in your projectname directory and change the <code>RewriteBase /</code> line to <code>RewriteBase /projectname/</code>.  Then save the file as .htaccess, not example.htaccess.  </p>
<p>From this point on, you can follow <a href="http://kohanaframework.org/3.2/guide/kohana/install">the usual Kohana installation procedure</a> &#8211; opening http://localhost/projectname, looking at the tests, and modifying the application/cache and application/logs directories to be writable with the following commands:</p>
<p><code>chmod 777 ~/Development/project-name/application/cache<br />
chmod 777 ~/Development/project-name/application/logs</code></p>
<p>And that&#8217;s it!</p>
<p>I apologize in advance for all errors &#8211; or missed &#8216;gotchas&#8217; &#8211; which are inevitably present.  If there&#8217;s something that needs correcting, leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/11/21/setting-up-kohana-3-2-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewing your iOS application usage</title>
		<link>http://yardley.ca/2011/04/02/viewing-your-ios-application-usage/</link>
		<comments>http://yardley.ca/2011/04/02/viewing-your-ios-application-usage/#comments</comments>
		<pubDate>Sat, 02 Apr 2011 17:24:55 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1096</guid>
		<description><![CDATA[Since the release of iOS 3.1 in September 2009, Apple&#8217;s App Store has a Genius for Apps feature, which recommends apps based on the other apps you use and just how often and how long you use them. If you backup your iOS device, Apple also syncs the database with the info Genius for Apps [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Since the release of iOS 3.1 in September 2009, Apple&#8217;s App Store has a Genius for Apps feature, which recommends apps based on the other apps you use and just how often and how long you use them.  If you backup your iOS device, Apple also syncs the database with the info Genius for Apps needs, so you too can view this information &#8211; it&#8217;s just a matter of knowing where to look and how to read it.  I&#8217;ve been asked about this a few times by a few people, so I figured this post was due.</p>
<p>Some notes and disclaimers up front: what I&#8217;m about to describe requires a little bit of technical knowledge.  (Not a lot &#8211; after all, I can do it.  But it does require some.)  It&#8217;s also written for Macs, since I don&#8217;t own a Windows machine.  It&#8217;s also only valid at this particular point in time, since Apple isn&#8217;t shy about changing things.  Finally, I don&#8217;t use Genius for Apps.  If Genius for Apps is activated, the data stored or the length it&#8217;s retained could be completely different.  Or it could be identical.</p>
<p>First, you&#8217;ll need to find the location of the MobileSync backup you&#8217;re interested in.  (On my Mac, they live under the ~/Library/Application Support/MobileSync/Backup directory.)  You&#8217;ll see one directory for each of the devices you&#8217;ve synced with your computer, named after each device&#8217;s UDID.</p>
<p>In each of these backup directories, there&#8217;s a <em>lot</em> of files &#8211; my most recent backup contains over 2,000!  The files are all cryptically named with universally unique identifiers &#8211; long hexidecimal strings.  In order to find the file containing the Genius for Apps data, you&#8217;re going to have to search for it.  Pop open the Terminal, go to the directory of the backup you&#8217;re interested in, and type &#8216;grep daysSince1970 *&#8217;.  That&#8217;ll return one match &#8211; the file we&#8217;re interested in.  This works because the file we&#8217;re after uses &#8216;daysSince1970&#8242; as a column name, unlike every other file in that directory.</p>
<p>The file you&#8217;ve identified is a sqlite database, so you&#8217;re going to need a way to read it.  I&#8217;m fond of both MesaSQLite and <a href="http://menial.co.uk/software/base/">Base</a>, although there are countless others.</p>
<p>When you open the sqlite file, you&#8217;ll see a few tables.  The one we want is &#8216;Scalars&#8217;.  The Scalars table contains key-day-value triples, where the key is a string combining the type of information being tracked with the application&#8217;s &#8216;bundle identifier&#8217; &#8211; information that identifies the application and company.  Usually (although not always) you can identify the application from the bundle identifier.</p>
<p>For example, there&#8217;s a key in my database that reads &#8216;appLaunchCount.com.magnetismstudios.citytransit&#8217;.  This means the row contains information about &#8216;appLaunchCount&#8217; for the excellent <a href="http://magnetismstudios.com/CityTransit">City Transit</a> application by Magnetism Studios.</p>
<p>The day information is stored within the &#8216;daysSince1970&#8242; column &#8211;  the number of days since the start of the Unix epoch.  There&#8217;s lots of sites online for converting this to a comprehensible date &#8211; for instance, <a href="http://www.toly.net/dayssince1970.html">here</a>.  In my row about City Transit, the daysSince1970 contains the value &#8217;15065&#8242; &#8211; April 1st, 2011.</p>
<p>The value column is unitless, and you have to try and figure it out from the context given by the key.  In my City Transit example, the &#8216;value&#8217; is &#8217;1&#8242;.  Since the key contains the string &#8216;appLaunchCount&#8217;, I&#8217;m going to take a wild leap and deduce that I launched City Transit exactly once on April 1st.</p>
<p>A few interesting key prefixes in this file relate to app usage:</p>
<ul>
<li>appActiveTime &#8211; likely the length of time the app&#8217;s been active.  I&#8217;d been assuming this is in seconds, but that might be wrong &#8211; see appBackgroundActiveTime for details.</li>
<li>appBackgroundActiveTime &#8211; the length of time the app&#8217;s been running, but in the background?  I&#8217;ve got a data point here with a value of 153,816 &#8211; and since there&#8217;s only 86,400 seconds in the day, I&#8217;m a bit stumped as to what the units could be.  Tenths of seconds?  A little testing could make this clear.</li>
<li>appLaunchCount &#8211; already covered, the number of times the app launched.  But see &#8216;appActivationCount&#8217;.</li>
<li>appActivationCount &#8211; I suspect this is the number of times the app came out of the background.  The number of times the user started the app on a day would therefore be appLaunchCount + appActivationCount.</li>
</ul>
<p>Some quick notes on the usage data:</p>
<ul>
<li>My sqlite database contains a month of data &#8211; older data seems to be dropped.</li>
<li>The sqlite database is populated whether you&#8217;re using Genius for Apps or not.  I suspect this is so Genius has historical data to work from the second it&#8217;s turned on.  One assumes that while the data is recorded on the phone at all times, it&#8217;s not sent to Apple unless Genius is active.</li>
<li>The sqlite database also contains application usage info for Apple&#8217;s internal applications, including the phone or IM apps.</li>
<li>While privacy advocates are extremely touchy these days, nothing particularly personal seems to be stored &#8211; for instance, this database doesn&#8217;t contain the content of your IMs or the phone numbers you&#8217;ve called.  I suppose it could be an issue if you&#8217;re using any sensitive applications &#8211; but the applications themselves are already backed up elsewhere on your computer.</li>
<li>Since Genius can be activated directly from the phone, I&#8217;m guessing the data&#8217;s sent from the phone to Apple and only backed up to the computer.</li>
<li>There&#8217;s a lot more information in this file beyond app usage, but (to me) it&#8217;s relatively boring stuff like number of writes to the Flash memory.  I&#8217;ve described those keys at the bottom of this post.</li>
</ul>
<p>I have no idea whether Apple&#8217;s storing the data it receives, or just dropping it on the floor.  The usage data could have a number of uses to Apple beyond the Genius for Apps feature.  For instance, it could be used to offer a (very basic) analytics product to developers (unique users, session counts, and time spent), to modify how applications are ranked in the App Store, or for iAds targeting.  </p>
<p>Although the data could change or vanish at any moment, and therefore is risky to use, it could also be used by companies outside of Apple.  Opt-in market research panels &#8211; the type operated by comScore or Nielsen &#8211; could use this to estimate iOS application usage by the general population.  Desktop or web apps could use it to provide better recommendations, in an attempt to out-Genius Genius.  (Of course, web apps would require a browser extension or Java applet to access the file system.  Some are already doing this, with user permission &#8211; mostly just to grab what applications are installed, but at least one is grabbing the usage information as well.)  Developers could build tools allowing users to track their app usage over time &#8211; a RescueTime for your phone.</p>
<p>&#8212;&#8211;</p>
<p>SOMEWHAT BORING (TO ME, ANYWAY) APPENDIX:  Here&#8217;s a rundown of the key prefixes in this table that <em>don&#8217;t</em> directly relate to app usage:</p>
<ul>
<li>appBackupFileCount &#8211; specific to individual applications, likely the number of files from that application backed up on that day.  For instance, my appBackupFileCount for Facebook is &#8217;30&#8242; &#8211; so I&#8217;m guessing 30 of the over 2,000 files in my Backup directory are related to Facebook.</li>
<li>appBackupFileSize &#8211; specific to individual applications, this seems to show the size, in bytes, of the files that the application backed up on that day.</li>
<li>appRegularTileCount &#8211; I believe the number of times the app shows a map tile, since this only shows for apps containing maps.</li>
<li>appReverseGeocodeRequestCount &#8211; again, specific to map-using applications.  Reverse geocoding involves translating a latitude / longitude pair to a physical address.	</li>
<li>appTileRequestCount &#8211; again for map-using applications, what I presume is the number of times an app requests a map tile.</li>
<li>com.apple.GameKit&#8230; &#8211; I don&#8217;t use Game Center much, so I doubt I have the complete data here.  In a month&#8217;s worth of data, all I&#8217;ve got are a few &#8216;com.apple.GameKit.login.appInit&#8217; and &#8216;com.apple.GameKit.invite.cancel&#8217; keys.</li>
<li>com.apple.MobileBackup.fileCount &#8211; what I presume is the number of files backed up that are relevant to a particular function.  For instance, I&#8217;ve got a &#8216;com.apple.MobileBackup.fileCount.cookies&#8217; key that&#8217;s always set to &#8217;4&#8242;.</li>
<li>com.apple.MobileBackup.fileSize &#8211; what is likely the file size of the files backed up to support particular functions.  For instance, my &#8216;com.apple.MobileBackup.fileSize.cookies&#8217; key has a value of &#8217;26886&#8242;.</li>
<li>com.apple.NANDInfo &#8211; a whole bunch of keys relating to the phone&#8217;s memory.  &#8216;NumFreeVirtualBlocks&#8217;, &#8216;NumLogicalReads&#8217;, &#8216;NumLogicalWrites&#8217;, &#8216;NumPhysicalReads&#8217;, &#8216;NumPhysicalWrites&#8217;, etc.</li>
<li>com.apple.accessibility &#8211; a few keys, indicating whether certain accessibility features (&#8216;largefonts&#8217;, &#8216;whiteonblack&#8217;, etc.) are enabled.</li>
<li>com.apple.maps &#8211; a few keys relating to usage of map features (&#8216;SearchRequestCount&#8217;, &#8216;StreetViewTileCount&#8217;).</li>
<li>com.apple.mobileslideshow &#8211; a couple of keys showing how many photos and videos are synced with the device.</li>
<li>com.apple.springboard &#8211; keys tracking disk space (both used and free), reboots, the number of third party apps, and the amount of time connected to wifi.</li>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/04/02/viewing-your-ios-application-usage/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Dickbar worked fine</title>
		<link>http://yardley.ca/2011/03/31/the-dickbar-worked-fine/</link>
		<comments>http://yardley.ca/2011/03/31/the-dickbar-worked-fine/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 01:04:26 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Thought]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1094</guid>
		<description><![CDATA[Twitter&#8217;s removed the Dickbar, the little visually-distracting bar that showed trending and sponsored topics, from its iOS client. Because of this, a lot of people are drawing a lot of incorrect conclusions about Twitter&#8217;s potential to make a buck. The argument goes something like this: &#8220;You can&#8217;t grow a mass consumer service without advertising and [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Twitter&#8217;s removed the Dickbar, the little visually-distracting bar that showed trending and sponsored topics, from its iOS client.   Because of this, a lot of people are drawing a lot of incorrect conclusions about Twitter&#8217;s potential to make a buck.  The argument goes something like this: &#8220;You can&#8217;t grow a mass consumer service without advertising and then add it later &#8211; your users will rebel.  Twitter grew big, added the Dickbar in order to draw more attention to its sponsored tweets, and its users rebelled.  Twitter can&#8217;t monetize.  Twitter is screwed.&#8221;</p>
<p>I don&#8217;t have any hard evidence, but I suspect the opposite is true &#8211; the Dickbar performed like a champ.  Why?  Because Twitter <a href="http://blog.twitter.com/2011/03/so-bar-walks-into-app.html">said as much in their blog</a>:</p>
<p><em>We believe there are still significant benefits to increasing awareness of what’s happening outside the home timeline. Evidence of the incredibly high usage metrics for the QuickBar support this.</em></p>
<p>&#8216;Incredibly high usage metrics&#8217; for an advertising product?  Normally there&#8217;d be smiles all around.  Now you might be a cynic, and not believe what Twitter&#8217;s telling you &#8211; but I suspect you&#8217;re wrong.  Baldfaced lies about company metrics are stupid.  They require a conspiracy, they hurt the morale of the honest employees who know about the lie, and in a large organization like Twitter&#8217;s, they eventually leak to the press.  If Twitter says &#8216;incredibly high usage metrics&#8217;, there were incredibly high usage metrics.</p>
<p>So why remove the Dickbar?  I suspect it got yanked because it interfered with a more important priority &#8211; client share.  The silent majority of people, the type that internet cognoscienti consider &#8216;<a href="http://jeffrock.com/post/3946391395/mandatory-racism">mouth-breathing buffoons</a>&#8216;, were using the Dickbar in droves, since it was simply reflecting their own tastes back at them.  Only a small percentage of people were annoyed or offended &#8211; that tiny portion of the world that acts and thinks like we do.  But that was enough to throw the Tweetdecks of the world a lifeline, at a time when Twitter would rather they drown.</p>
<p>Long-term control over the client experience is <em>way</em> more important to Twitter than short-term monetization, so the Dickbar had to go, in spite of its effectiveness and general popularity.  While we&#8217;ll see Son of Dickbar eventually &#8211; filtered to match our class prejudices, naturally &#8211; Twitter needs to beat the other client companies into submission first.  I doubt it&#8217;ll take that long.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/03/31/the-dickbar-worked-fine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Steve Blank&#8217;s bubble heresy</title>
		<link>http://yardley.ca/2011/03/13/steve-blanks-bubble-heresy/</link>
		<comments>http://yardley.ca/2011/03/13/steve-blanks-bubble-heresy/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 15:12:08 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Thought]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1086</guid>
		<description><![CDATA[Albert Camus once said &#8220;Every revolutionary ends up becoming either an oppressor or a heretic.&#8221; From his recent presentation at SxSW, it looks like Steve Blank&#8217;s selected the heretic route. Lightning recap: Steve Blank codified the &#8216;customer development&#8217; methodology for startups, which emphasizes iterative business model discovery during a period of low cash burn. This [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Albert Camus once said &#8220;Every revolutionary ends up becoming either an oppressor or a heretic.&#8221;  From <a href="http://www.slideshare.net/sblank/sxsw-new-rules-for-the-new-bubble-031211">his recent presentation at SxSW</a>, it looks like Steve Blank&#8217;s selected the heretic route.</p>
<p>Lightning recap: Steve Blank codified the &#8216;customer development&#8217; methodology for startups, which emphasizes iterative business model discovery during a period of low cash burn.  This has become the favored methodology for bootstrappers everywhere as they seek profitability.  But in his presentation yesterday, titled &#8220;New Rules for the New Bubble&#8221;, profitability is set aside.</p>
<p>The meat of the presentation starts on slide 118 and runs through slide 127.  Here Steve writes that because we&#8217;re in a bubble, the best route to liquidity requires customer development, but with user adoption taking priority over profitability.  It&#8217;s possible to engineer a financial transaction with an acquirer from the beginning by getting as much adoption as possible, focusing on visibility and PR (in other words, hype) and worrying about monetization later.</p>
<p>I&#8217;m a long way from Chicago, but I can <em>still</em> hear Jason Fried&#8217;s head exploding.</p>
<p>I suspect the rules <em>have</em> changed, and Steve&#8217;s strategy is correct, although only for a short period of time.  Steve suggests in his slides that the bubble period ends in 2014, which if true makes me wonder if his advice is even actionable &#8211; it takes <em>at least</em> a couple of years to blow up a business into something huge, so that&#8217;s less than a year to figure out the model.  </p>
<p>I would very much like to know why Steve thinks the bubble period is so short.  I suspect the only reason we&#8217;ve got a bubble in tech is because of the Fed&#8217;s zero-interest-rate policy and pumping of money into the market through bond purchases.  All that goosing of the economy has created a whole lot of money looking for higher returns, pushing up valuations as it tries to get in on the action.</p>
<p>This bubbly goodness goes away the second foreign investors decide they want better returns on government debt &#8211; which might not take too long, considering the rapid increase in our debt-to-GDP ratio.  At that time, having a bootstrapped startup with sustainable cashflow will look pretty good &#8211; not as good as selling during a bubble, but a hell of a lot better than <em>not</em> selling <em>after</em> a bubble.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/03/13/steve-blanks-bubble-heresy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There&#8217;s no &#8216;organic&#8217; on the App Store</title>
		<link>http://yardley.ca/2011/03/11/theres-no-organic-in-the-app-store/</link>
		<comments>http://yardley.ca/2011/03/11/theres-no-organic-in-the-app-store/#comments</comments>
		<pubDate>Fri, 11 Mar 2011 18:37:48 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Thought]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1078</guid>
		<description><![CDATA[Some of the top-ranked applications on iTunes purchase application installs. Recently Chris Dixon discovered this, and expressed interest in seeing an &#8216;organic&#8217; top list with the paid application installs removed. Privately, I&#8217;ve heard other people ask for this as well. I believe these people want the App Store&#8217;s &#8216;top paid&#8217; and &#8216;top free&#8217; lists to [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Some of the top-ranked applications on iTunes purchase application installs.</p>
<p>Recently Chris Dixon <a href="http://twitter.com/cdixon/status/45301782448054272">discovered this</a>, and expressed interest in seeing an &#8216;organic&#8217; top list with the paid application installs removed.  </p>
<p>Privately, I&#8217;ve heard other people ask for this as well.  I believe these people want the App Store&#8217;s &#8216;top paid&#8217; and &#8216;top free&#8217; lists to reflect what people are naturally discovering, liking, and sharing with their friends &#8211; in other words, they want the App Store to be a pure meritocracy.  At least in America, that resonates with us culturally.  These people assume that with a bit of filtering, this organic list could be created from what&#8217;s currently ranked on the App Store.</p>
<p>Unfortunately, there is no &#8216;organic&#8217; in the App Store.  Filter out everything that&#8217;s not there strictly by merit, and you&#8217;re left with almost nothing.</p>
<p>Here&#8217;s the apps that make the App Store&#8217;s top free or top paid lists:</p>
<ul>
<li>install-purchasers &#8211; a lot of social games, but also a good many you wouldn&#8217;t suspect</li>
<li>apps from companies with other apps, who use them to aggressively cross-promote</li>
<li>already-popular brands with large audiences &#8211; for example, Facebook, Amazon, eBay, Twitter</li>
<li>apps with already well-known intellectual property &#8211; Smurfs, Sims, Katy Perry, MLB</li>
<li>apps with already significant exposure on iTunes, thanks to Apple&#8217;s editorial staff</li>
</ul>
<p>I&#8217;m sure someone out there can find an exception, but there aren&#8217;t many of them.  If you want to be in the top free or top paid list, with all of the glorious exposure that brings, you need to already have an established brand or audience, to have a marketing budget big enough to buy your way there, or be fortunate enough to appear in a hand-curated category like &#8216;New &#038; Noteworthy&#8217; or &#8216;Staff Favorites&#8217;.  That&#8217;s it.  There&#8217;s no underlying list of apps that&#8217;ve been naturally &#8216;discovered&#8217; by the broader community of iOS users.</p>
<p>That&#8217;s not to say there&#8217;s <em>no</em> meritocracy in the system.  However Apple selects apps to feature, I suspect it involves merit.  Not every application featured by Apple rises to the top, and not every application that buys their way to prominence can stay there.  But it&#8217;s that initial front-page App Store exposure that gives your app the <em>opportunity</em> to be judged on its merits &#8211; it&#8217;s the price of admission to the meritocracy.  Without that exposure, the quality of your app doesn&#8217;t matter.</p>
<p>When anyone says &#8216;I wish I could see an organic list of top applications, instead of all this paid install stuff&#8217;, what they&#8217;re really saying is &#8216;I like the taste of Apple&#8217;s editorial staff.&#8217;  Which is fine &#8211; I also like the taste of Apple&#8217;s editorial staff!  I wouldn&#8217;t stake my business on my app being aligned with it, though &#8211; and that&#8217;s why some applications will continue to buy installs.  If they weren&#8217;t able to do so, they&#8217;d find other ways to get placement.</p>
<p>These apps, by the way, are anything but &#8216;<a href="http://twitter.com/cdixon/status/45301782448054272">lame</a>&#8216; &#8211; I don&#8217;t care how it got up there, if an application hangs in the top free or top paid list for more than a couple of days, it means there&#8217;s a real audience for it.  Right now, five of the ten top grossing applications on the US iTunes store are Facebook-style, &#8216;freemium&#8217; social games &#8211; not because they paid to be there, but because there&#8217;s a whole lot of people who really enjoy playing them.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/03/11/theres-no-organic-in-the-app-store/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Privacy protection may do the opposite</title>
		<link>http://yardley.ca/2011/03/09/privacy-protection-may-do-the-opposite/</link>
		<comments>http://yardley.ca/2011/03/09/privacy-protection-may-do-the-opposite/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 03:56:18 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1074</guid>
		<description><![CDATA[A few years back, I argued that aggressive regulation of ad targeting could actually lead to less privacy, if it forced publishers to make opt-in mandatory. Behavioral targeting could go rather quickly from something you could easily opt-out of (these days, I prefer Ghostery) to something you couldn&#8217;t avoid, if you wanted to access content. [...]]]></description>
				<content:encoded><![CDATA[<p></p><p><a href="http://yardley.ca/2008/03/20/adpocalypse-continued/">A few years back</a>, I argued that aggressive regulation of ad targeting could actually lead to <em>less</em> privacy, if it forced publishers to make opt-in mandatory.  Behavioral targeting could go rather quickly from something you could easily opt-out of (these days, I prefer <a href="http://ghostery.com/">Ghostery</a>) to something you couldn&#8217;t avoid, if you wanted to access content.</p>
<p>Today I read through some of the <a href="http://www.ftc.gov/os/comments/privacyreportframework/">many responses</a> to the FTC&#8217;s &#8220;<a href="http://www.ftc.gov/os/2010/12/101201privacyreport.pdf">Protecting Consumer Privacy in an Era of Rapid Change</a>&#8221; report, including <a href="http://www.ftc.gov/os/comments/privacyreportframework/00315-57664.pdf">the Online Publishers Association&#8217;s</a>.  I wasn&#8217;t particularly surprised to find this:</p>
<blockquote><p>Online publishers should have the right to offer their content and services on any lawful terms that are explicitly communicated to consumers and withhold access from those who do not agree to such terms.  To require otherwise would burden publishers’ First Amendment speech with free riders who enjoy the benefits of access to valuable content without providing fair value in exchange. [...] </p>
<p>Default rules that prevent fair value exchanges of digital content for user data could harm consumer welfare by reducing incentives for some publishers to invest in the production of content and/or creating incentives for publishers to charge or charge more for content that they would otherwise make available for free or at a lower cost.</p></blockquote>
<p>The <a href="http://www.online-publishers.org/index.php">Online Publishers Association</a>, of course, is the membership organization for <a href="http://www.online-publishers.org/index.php/join_opa/current_members">almost every national news organization in America</a>.  If the FTC&#8217;s privacy regulations impose high enough costs on their businesses, they just might restrict access to the people who explicitly opt-in to being tracked &#8211; and if that happens, you and I are going to have to choose between less privacy or less news.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/03/09/privacy-protection-may-do-the-opposite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make your product less useful</title>
		<link>http://yardley.ca/2011/03/04/make-your-product-less-useful/</link>
		<comments>http://yardley.ca/2011/03/04/make-your-product-less-useful/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 20:35:53 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1067</guid>
		<description><![CDATA[Seriously. Reducing functionality could not just allow you to charge more for your product, it could make it seem more useful to your users. I know that sounds counterintuitive, but I suspect it&#8217;s true &#8211; it&#8217;s related to a cognitive quirk of ours called the conjunction fallacy. Here&#8217;s a product example. At the last place [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>Seriously.  Reducing functionality could not just allow you to charge more for your product, it could make it seem <em>more</em> useful to your users.</p>
<p>I know that sounds counterintuitive, but I suspect it&#8217;s true &#8211; it&#8217;s related to a cognitive quirk of ours called the <a href="http://lesswrong.com/lw/ji/conjunction_fallacy/">conjunction fallacy</a>. </p>
<p>Here&#8217;s a product example.  At the last place I worked, <a href="http://www.flurry.com/">Flurry</a>, we offered an analytics feature called &#8216;path analysis&#8217;.  For any event in an application, we showed what percentage of users went to each of all the other events &#8211; or simply quit the app.  </p>
<p>Some of our competitors offered &#8216;conversion funnels&#8217; &#8211; for a multistep process, they showed what percentage of users dropped out at each step.</p>
<p>Conversion funnels are a subset of path analysis.  I believe conversion funnels are the most <em>useful</em> subset of path analysis, but there&#8217;s other things you can do with the data &#8211; &#8216;fallout reporting&#8217;, for example, which shows the chunk of your app most likely to get a user to leave.</p>
<p>Imagine my surprise when multiple small competitors, in their marketing materials, started claiming that they offered conversion funnels &#8211; and Flurry didn&#8217;t.  &#8220;Alright,&#8221; I&#8217;d sigh, &#8220;we just need to do a better job explaining that conversion funnels are a subset of path analysis.&#8221;  So we did some of that &#8211; but other companies were still signing up paying customers on the strength of their conversion funnels, a feature users could replicate quite easily using Flurry&#8217;s free product.</p>
<p>Curious, no?  Yet analogous results have been found in a number of experiments.  In a part of <a href="http://singinst.org/upload/cognitive-biases.pdf">this PDF</a> (worth reading from start-to-finish), Eliezer Yudowsky describes an experiment conducted on MBA students travelling to Thailand.  One group was asked what price they&#8217;d pay for terrorism insurance for their flight from Thailand to the US.  Another was asked how much they&#8217;d pay for terrorism insurance for their round-trip flight.  The last was asked how much they&#8217;d pay for terrorism insurance covering their entire trip, including their time on the ground.</p>
<p>The narrower and more-restricted the insurance coverage, the more money people were willing to pay.  Coverage for only the return flight was valued at $17.19.  Coverage for the entire trip, including the return flight, was only worth $7.44. </p>
<p>Why was the subset valued more than the whole?  The conjunction fallacy.  We think in narratives, and therefore find &#8216;a terrorist incident on my flight back to America&#8217; a lot more compelling than &#8216;a terrorist incident during my trip&#8217;.  That makes us willing to pay more for it.</p>
<p>Back to the products.  I suspect that when developers see &#8216;conversion funnels&#8217;, they quickly think &#8216;yeah, I can see myself using that&#8217;, and when developers see the more general &#8216;path analysis&#8217;, they&#8217;re at best going to think &#8216;yeah, I can see myself using some of that.&#8217;  The end result &#8211; conversion funnels alone are more appealing than a product that does that and more.</p>
<p>Stripping the versatility out of your product and focusing only on the specific problems your users are <em>most likely</em> to have might make your product less powerful, but it&#8217;ll make it feel <em>more</em> useful &#8211; and therefore more valuable.  Startups doing more with less can attack powerful, does-everything incumbents by identifying the parts of their product that are used most often &#8211; and then charging more for only that portion.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2011/03/04/make-your-product-less-useful/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>True worth</title>
		<link>http://yardley.ca/2010/08/19/true-worth/</link>
		<comments>http://yardley.ca/2010/08/19/true-worth/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 15:36:57 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1056</guid>
		<description><![CDATA[At pii2010, it&#8217;s frequently argued that privacy is something that you&#8217;re increasingly going to have to pay for &#8211; and that people will, in fact, pay money to preserve their privacy. (I haven&#8217;t seen any evidence for this, but venture capitalists are investing in the space, so it must be true.) This argument is then [...]]]></description>
				<content:encoded><![CDATA[<p></p><p>At <a href="http://pii2010.com/">pii2010</a>, it&#8217;s frequently argued that privacy is something that you&#8217;re increasingly going to have to pay for &#8211; and that people will, in fact, pay money to preserve their privacy.  (I haven&#8217;t seen any evidence for this, but venture capitalists are investing in the space, so it must be true.)  This argument is then followed by concern for the poor &#8211; since in a world where privacy is paid for, the poor won&#8217;t be able to afford it, and therefore will have to trudge along in their not-so-private dystopia.  This then leads to talk of regulation and rights.</p>
<p>Let&#8217;s assume the cost of preserving one&#8217;s online privacy is equal to the value extracted from &#8216;lack of online privacy&#8217; &#8211; by which I mean behavioral targeting for ad serving &#8211; plus a little bit more just to eke out a profit.  How much money do people think that actually is?  I suspect most of us assume our data is dramatically more valuable than it actually is.  We&#8217;re all good narcissists with healthy egos, after all, and we just don&#8217;t want to accept that all that internet browsing we do is worth a few bucks per year at best.  So &#8216;protecting our privacy&#8217; by blocking most targeting, rationally priced, shouldn&#8217;t be much more than a few bucks a year &#8211; a small expense that even the American poor can afford, considering they pay several times more than that each month for their internet connections.  Of course there are billions of people in this world that are poorer still, but their online privacy isn&#8217;t worth violating &#8211; if they&#8217;re even online at all.  Marketers don&#8217;t target people without money.</p>
<p>It would be useful, and add some rationality to debates around privacy, for some advertising technology firms to estimate the true worth of a typical individual&#8217;s behavioral targeting data.  With this information, we can figure out what a sensible price for protecting privacy should actually be, and stop worrying so much about whether the poor can afford it.  Of course, even sensibly priced, large numbers of people aren&#8217;t going to pay for their privacy.  But that&#8217;s a discussion for another time.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2010/08/19/true-worth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iAds performance &#8211; now and later</title>
		<link>http://yardley.ca/2010/07/08/iads-performance-now-and-later/</link>
		<comments>http://yardley.ca/2010/07/08/iads-performance-now-and-later/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 20:49:51 +0000</pubDate>
		<dc:creator>greg</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://yardley.ca/?p=1043</guid>
		<description><![CDATA[The Next Web writes that an iPhone developer made $1,372 from his first day running iAds. The developer was kind enough to post the following stats from his Apple dashboard: $1,372.20 total revenue $147.55 eCPM 26,651 requests 9,300 impressions 34.90% fill rate 11.80% CTR From this we can glean quite a bit. First, note that [...]]]></description>
				<content:encoded><![CDATA[<p></p><p><a href="http://thenextweb.com/apple/2010/07/08/revenues-for-one-app-developer-for-first-day-of-iads-150-huge/">The Next Web</a> writes that an iPhone developer made $1,372 from his first day running iAds.  The developer was kind enough to post the following stats from his Apple dashboard:</p>
<ul>
<li>$1,372.20 total revenue</li>
<li>$147.55 eCPM</li>
<li>26,651 requests</li>
<li>9,300 impressions</li>
<li>34.90% fill rate</li>
<li>11.80% CTR</li>
</ul>
<p>From this we can glean quite a bit.  </p>
<p>First, note that Apple&#8217;s using a rather favorable calculation of &#8216;eCPM&#8217;, basing it on impressions actually served, not ad requests made.  Given that 17,351 requests (65.90% of the total) resulted in no ad shown, I&#8217;d say the actual eCPM should be $51.49, not $147.55.  That&#8217;s still impressive.</p>
<p>Second, these numbers are consistent with a 60% revenue share to the developer and a $10.00 CPM + $2.00 CPC cost to the advertiser.  9,300 impressions x 11.80% CTR = 1,097 clicks = $2,194 in CPC charges to the advertiser.  9,300 impressions x $10.00 CPM = $93 in CPM charges to the advertiser.  $2,194 + $93 = $2,287 gross.  $2,287 x 60% to the developer = the reported $1,372.20.   Apple&#8217;s charging exactly what they said they would, at least for this campaign.</p>
<p>Third, at >10% the clickthrough rate is freakishly high &#8211; iAds are clearly still a novelty for the userbase.  If we assume the clickthrough rate drops to a still-high-but-more-standard 1.00% and also assume that pricing stays the same, that works out to an $18.00 eCPM &#8211; or, if you take the unfilled inventory into account, a $6.28 eCPM.  Still pretty good for independent developers.  Not so good for popular, large brands with dedicated sales teams &#8211; but excellent backfill for unsold remnant inventory, assuming you can keep it from sabatoging direct sales.</p>
<p>Fourth, at $6.00 CPM + $1.20 CPC to the developer, just a slight improvement in clickthrough rates drives substantial revenue.  There&#8217;s going to be a lot of iAd units placed really close to the game controls in the near future.   At those rates, I suspect click fraud is also going to become an issue.</p>
<p>Fifth, I&#8217;ve read that Apple has $60MM in sales commitments.  If clickthrough rates are averaging (say) 10% at the moment, that works out to $210 in charges to the advertiser for every 1,000 impressions &#8211; $10 in CPM, $200 in CPC.  Let&#8217;s round those charges down to $200 to keep things simple.  At that rate that $60MM buys 300MM impressions and 30MM clicks.  How long is that $60MM going to last Apple?  That entirely depends on the popularity of iAds &#8211; but note that in May 2010, AdMob did 2.75B impressions in the United States on iPhones and iPod Touches, and right now about a third of all traffic is on the iAd-compatible iOS 4.0.  If the much-higher-paying iAd runs as many impressions in July as AdMob did back in May, that 10% CTR will burn through the $60MM halfway through the month.  No wonder fill rates are low.  Keeping up with demand and getting fill rates up is going to keep Apple&#8217;s sales team busy.</p>
<p>My biggest takeaway from these iAd numbers?  Run, don&#8217;t walk, to get iAd-supported applications in the AppStore &#8211; it&#8217;s clearly &#8216;put the money in your pocket while the users and advertisers are still behaving irrationally&#8217; time, and it&#8217;s not likely to last.</p>
<p>UPDATE: Naturally, right after I write this I see <a href="http://kswizz.com/post/786160311/iad-report">Kenneth&#8217;s post</a> with much lower numbers.  If the pricing&#8217;s consistent, his average of $10.00 &#8211; $15.00 eCPM (let&#8217;s call it $12.50) implies about a 1.00% CTR.  In addition, his fill rate&#8217;s far lower &#8211; sub-10%, which brings iAd in line with every other ad network out there.  I think he&#8217;s wrong about his numbers including Apple&#8217;s 40% cut, though, since I could only make the above developer&#8217;s payout line up with Apple&#8217;s announced pricing by adding the 40% to the developer&#8217;s figures.</p>
<p>UPDATE 2: Thinking more about the above.  The developer with the >10% CTR apparently got it from a flashlight application.  If the phone is pointed away from the user in order to illuminate something, of course there&#8217;s going to be some accidental clicks on an ad unit.  (And incidentally, not so great performance for the advertiser.)  So I wouldn&#8217;t be surprised if CTR was artificially high, and everyone, including me, is wasting cycles over a freak outlier.  But if it&#8217;s Kenneth&#8217;s CTR that&#8217;s typical, the fill rate seems freakishly low &#8211; at 1% CTR they&#8217;d only be charging the advertisers $30 for 1,000 impressions and 10 clicks, so $60MM would pay for two billion impressions and 20MM clicks, certainly enough to meet more than 10% of the demand.  </p>
<p>A few possible explanations for low fill rate: a) the ad campaigns are tightly targeted, so 90% of the audience just isn&#8217;t eligible, b) the ad units are tightly frequency-capped, and Kenneth&#8217;s app is used much more often per-user than the flashlight, or c) the $60MM in sales includes a lot of campaigns slated to start later, and the complicated ad creative just isn&#8217;t ready yet.  I&#8217;d place my money on the last option &#8211; iAds might look great, but they don&#8217;t look easy to make.  If that&#8217;s the case, look for fill rate to increase slightly over time as more ad campaigns come online, but for Apple to ultimately have a lot of trouble keeping up with demand as agencies struggle with creative creation.</p>
]]></content:encoded>
			<wfw:commentRss>http://yardley.ca/2010/07/08/iads-performance-now-and-later/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
