<?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>Dan Grossman &#187; paging</title>
	<atom:link href="http://www.dangrossman.info/tag/paging/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dangrossman.info</link>
	<description></description>
	<lastBuildDate>Thu, 19 Aug 2010 20:19:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Monetization Plan for W3Counter</title>
		<link>http://www.dangrossman.info/2007/08/10/monetization-plan-for-w3counter/</link>
		<comments>http://www.dangrossman.info/2007/08/10/monetization-plan-for-w3counter/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 06:56:04 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[W3Counter]]></category>
		<category><![CDATA[advertising services]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[going forward]]></category>
		<category><![CDATA[manager for a status update]]></category>
		<category><![CDATA[model product]]></category>
		<category><![CDATA[paging]]></category>
		<category><![CDATA[paid advertising]]></category>
		<category><![CDATA[Philadelphia]]></category>
		<category><![CDATA[scheduler]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[USD]]></category>
		<category><![CDATA[web analytics solution]]></category>
		<category><![CDATA[word-of-mouth advertising]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2007/08/10/monetization-plan-for-w3counter/</guid>
		<description><![CDATA[Continuing my trend of not taking any of the advice given, coming up with a new option instead, I don&#8217;t plan to pick any of the choices I laid out for monetizing W3Counter. Missing from that list is what I am going to do instead &#8212; add more value to the paid accounts so that [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing my trend of not taking any of the advice given, coming up with a new option instead, I don&#8217;t plan to pick <a href="http://www.dangrossman.info/2007/06/13/monetizing-free-w3counter-users/">any of the choices I laid out for monetizing W3Counter</a>. Missing from that list is what I am going to do instead &mdash; add more value to the paid accounts so that more users have a reason to pay. Simple solution, isn&#8217;t it.<span id="more-152"></span></p>
<p>W3Counter should be a model product for <a href="http://www.awio.com">Awio</a> going forward. It&#8217;s everything I want to be selling:</p>
<ul>
<li>Created in-house, so I can be confident in both selling and supporting it effectively. I have full transparency into how it works, so there&#8217;s no problem I can&#8217;t investigate and solve for a user.</li>
<li>Costs, in terms of money and time, do not increase significantly with each new user.</li>
<li>Operation is nearly 100% automated, and since it &#8220;just works&#8221;, support mails come maybe once or twice a month.</li>
<li>Providing real value to every user. Unlike the advertising services, it&#8217;s free to try, and everyone gets something out of it no matter their experience level.</li>
<li>Users love it. I&#8217;ve had a survey up after log in for over a month now, have received over 100 lengthy replies, and everyone is genuinely happy with it.</li>
<li>All of these combined lead to a product that can be spread by word-of-mouth rather than paid advertising. I&#8217;ve never had to advertise the site, and new users sign up every day.</li>
</ul>
<p>Adding ads, throwing in tons of teasers, reducing limits&#8230; these all detract from what I want W3Counter to be. I don&#8217;t think compromising on quality will convince users to upgrade. The real reason few people upgrade is because they don&#8217;t see any compelling benefit of doing so. Those that have upgraded did it because they have more than one website &mdash; tracking more than one site from an account is a good benefit, but most users only have a single site, and most sites fall within the usage limits of the free plan. The stats-by-RSS benefit isn&#8217;t something most people understand, let alone want to pay for. Only a few hardcore developers make use of the API. There&#8217;s little left being offered for that $5 to $15 per month. </p>
<p>So what can I give? </p>
<p>It won&#8217;t be more reports &ndash; I don&#8217;t want the free users to feel cheated by not having access to vital information. I want to treat them so well they fall in love with W3Counter and want to upgrade just out of thanks &ndash; if only they didn&#8217;t have to pull out their wallets. They should be on the brink of doing it at all times, such that when they check out the list of reasons to upgrade, when they see these new reasons, they&#8217;ll follow through. </p>
<p>It won&#8217;t be date range selectors, or bigger log sizes, or even bigger limits. The business model won&#8217;t support free users if the few paid users use drastically more resources. $5 a month doesn&#8217;t buy new hardware for that user. The benefits shouldn&#8217;t require lots of resources for me to provide, but they must provide value to the users nonetheless.</p>
<p>For starters, I think these two features would add a lot of value to the type of user willing to pay for a low-cost web analytics solution:</p>
<ol>
<li>Export any report to CSV or Excel format. Suddenly the reports have more business value at little cost to me. They currently don&#8217;t print well due to the Flash graphs and paging, and can&#8217;t be easily analyzed outside the website. They can&#8217;t be taken offline or easily sent off to a manager for a status update. Exporting all the data for a report at once in a print-friendly, import-friendly format can provide all this.</li>
<li>E-mail any report, and schedule e-mails of any report, to any number of e-mail addresses. This could be easy as a scheduler to run the export, attaching an Excel spreadsheet to the mail. More premium users than not use the daily, weekly and monthly summary e-mails. Now they can do the same with the reports they are interested in. They can get these reports without checking the site, and other relevant parties can get reports without having access to the account or learning to use the site.</li>
</ol>
<p>I have some other ideas along these lines, but I don&#8217;t want to talk about them just yet. Combined with higher usage limits, SSL tracking code, and e-mail summaries, I think this could make a decent feature set to target small business. The type of business without a full IT staff, without a budget for enterprise-grade analytics, and for individuals that treat their sites as more than hobbies. </p>
<p>Aside from improving the <a href="http://www.w3counter.com/features.php">features</a> and <a href="http://www.w3counter.com/features.php">plans</a> pages of the site to better sell the benefits, I&#8217;m thinking of doing some direct mail selling as well. I think if done right, it can come across as something unexpectedly delightful instead of a put-off. I would need to start collecting addresses from free users on signup. I&#8217;d send a letter (heavy paper, professionally designed, screenshots and all, like a printed webpage) welcoming the user and highlighting some features, including the premium ones.</p>
<p>I&#8217;d also throw in a couple W3Counter stickers. People love free stuff &mdash; the inclusion of the stickers can change the perception of the letter into a positive instead of a possible negative. Stickers don&#8217;t appeal to everyone, but I think that W3Counter has a certain feel to it that wouldn&#8217;t fit the type of person to be turned off by stickers in the first place. It&#8217;s bright and shiny. The stickers are perfect for sticking to a laptop lid or computer. </p>
<div style="text-align: center"><img src="http://www.dangrossman.info/photos/dans-stuff/w3c_stickers.jpg" alt="W3Counter Stickers" /></div>
<p>They serve two more purposes &ndash; continually reminding the user about W3Counter, and as a trigger for word-of-mouth advertising.</p>
<ol>
<li>They&#8217;re shareable. With a handful of stickers, the recipient will be likely try to think of someone to give some to before throwing them away. New people get exposed to the service.</li>
<li>They&#8217;re a conversation starter. I don&#8217;t expect people to get super excited over stickers, but if even a single blogger were to write about it, that&#8217;s a new link and new vector for continuing the word-of-mouth advertising.</li>
</ol>
<p>I haven&#8217;t thought this all through yet, but I think I&#8217;m on the right track with the plans. I won&#8217;t be implementing any of this until after I&#8217;m back in Philadelphia in late September. That gives me time to think of more premium features worth paying for, ways to get users to think about them, and continue building on the idea of adding direct mail to the strategy. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2007/08/10/monetization-plan-for-w3counter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>W3Counter 4.0: Designing the Dashboard</title>
		<link>http://www.dangrossman.info/2007/01/15/w3counter-4-designing-the-dashboard/</link>
		<comments>http://www.dangrossman.info/2007/01/15/w3counter-4-designing-the-dashboard/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 02:45:43 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[W3Counter]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[paging]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2007/01/15/w3counter-4-designing-the-dashboard/</guid>
		<description><![CDATA[Step-by-step: From notes to working screen. The first draft of the new dashboard &#8212; the first report shown when viewing a site&#8217;s stats in W3Counter 4. I start out with a couple notes &#8212; what information do I want in the screen, and an initial idea for how it should be presented. The dashboard is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/photos/w3c_dev/dashboard_tiny.jpg" alt="Dashboard" style="float: left; margin: 0 10px 10px 0" />Step-by-step: From notes to working screen. The first draft of the new dashboard &mdash; the first report shown when viewing a site&#8217;s stats in W3Counter 4.<span id="more-65"></span></p>
<p style="clear: both">I start out with a couple notes &mdash; what information do I want in the screen, and an initial idea for how it should be presented. The dashboard is the first thing you&#8217;ll see after logging in to a copy of W3Counter tracking one website. It&#8217;s your overview of what&#8217;s going on today &mdash; how many visitors, how many are new, where they&#8217;re coming from, and what they&#8217;re doing. My initial idea is to have a chart area above a tabular area like the Visitors by Date report I&#8217;ve shown before. I&#8217;ll split it in half and have a pie chart for the new versus returning visitors, and another for the sources of those visits. Then, in tabular form, a list of the top pages viewed today &mdash; for a blog like this, that&#8217;d be the top posts people are reading.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step1.jpg" title="Step 1"><img src="/photos/w3c_dev/step1_small.jpg" /></a></p>
<p>I add the action to my controller, create a blank template for the page, and edit the application configuration files to add the new page.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step2.jpg" title="Step 2"><img src="/photos/w3c_dev/step2_small.jpg" /></a></p>
<p>The dashboard will have some fundamental differences between the rest of the reports in W3Counter. The date range options are different, there&#8217;s no paging, there are no modes to switch between, it won&#8217;t be exportable to CSV or XML format since everything it shows is available in detail elsewhere, and it will have two charts. That means I need to tell Symfony to use a different layout to decorate the template with than the rest of the pages, a simple change in the view configuration. I copy the date range template fragment and make a version specific to the dashboard and its three options &mdash; today, last 7 days and last 30 days.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step3.jpg" title="Step 3"><img src="/photos/w3c_dev/step3_small.jpg" /></a></p>
<p>With the new layout in place, I edit the template for the dashboard and add the area for the charts to appear, and the header for a data table that will list the most popular pages. These are all pieces I&#8217;ve created already for other pages, so it&#8217;s just a matter of including template fragments which are already encapsulated for just that purpose.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step4.jpg" title="Step 4"><img src="/photos/w3c_dev/step4_small.jpg" /></a></p>
<p>Next, I get the popular pages list up. I hadn&#8217;t created that report yet, but doing so takes no time at all. All I have to do is add a method to the database layer that pulls out that information. The rest of the work was done when I created the first few reports and refactored the common portions into reusable methods and template fragments. There&#8217;s no fundamental difference between a popular pages report and a top referrers report except the title of the page and the data in each row.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step6.jpg" title="Step 5"><img src="/photos/w3c_dev/step6_small.jpg" /></a></p>
<p>With that done, I can reuse the method I just wrote for the Popular Pages report to add the 10 most popular for the day, week or month to the dashboard. </p>
<p style="text-align: center"><a href="/photos/w3c_dev/step5.jpg" title="Step 6"><img src="/photos/w3c_dev/step5_small.jpg" /></a></p>
<p>Now to the two charts. I still haven&#8217;t made a decision on what to do about generating pie charts, but I&#8217;m leaning towards buying a license for amCharts, so I used that. I dropped their SWF and JavaScript files into my project and adjust the settings to get the desired look. I&#8217;ve broken out the sources into searches, direct visits from type-ins or bookmarks, and other sources. </p>
<p style="text-align: center"><a href="/photos/w3c_dev/step7.jpg" title="Step 7"><img src="/photos/w3c_dev/step7_small.jpg" /></a></p>
<p>I initially do the same for another chart on the left side showing new versus returning visitors. But it doesn&#8217;t look quite right. It&#8217;s not obvious how many visitors the site&#8217;s actually received that day, and even with mousing over the chart, nobody would take the time to add the two sections to figure that out. I also wanted to get across the number of page views which doesn&#8217;t fit well on the same chart. </p>
<p>Bars didn&#8217;t look right either because of the scale &mdash; some sites receive very large numbers of page views from each visitor. Instead, I decided to make the left hand side a text display of the relevant information. I use large, bold text to make it clear and the focal point of the page. </p>
<p style="text-align: center"><a href="/photos/w3c_dev/step8.jpg" title="Step 8"><img src="/photos/w3c_dev/step8_small.jpg" /></a></p>
<p>Finally, a few finishing touches: link the two headers to the reports with more detail, and add a link to the full Popular Pages report.</p>
<p style="text-align: center"><a href="/photos/w3c_dev/step9.jpg" title="Finished (For Now)"><img src="/photos/w3c_dev/step9_small.jpg" /></a></p>
<p>I&#8217;m sure I&#8217;ll revisit this screen several times before it&#8217;s truly ready, but I&#8217;m satisfied with it enough now to move on to the next set of reports. It&#8217;s time to start collecting data to build some of the all-new features &mdash; outbound click tracking and analysis.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2007/01/15/w3counter-4-designing-the-dashboard/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>W3Counter 4.0: Getting Started</title>
		<link>http://www.dangrossman.info/2006/12/23/w3counter-30-development-log-122306/</link>
		<comments>http://www.dangrossman.info/2006/12/23/w3counter-30-development-log-122306/#comments</comments>
		<pubDate>Sat, 23 Dec 2006 07:06:18 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[W3Counter]]></category>
		<category><![CDATA[authorization controller]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[front controller]]></category>
		<category><![CDATA[GD library]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[navigation controller]]></category>
		<category><![CDATA[paging]]></category>
		<category><![CDATA[Script.aculo.us JavaScript library]]></category>
		<category><![CDATA[with new services]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2006/12/23/w3counter-30-development-log-122306/</guid>
		<description><![CDATA[As you might&#8217;ve guessed from the comments in the screenshot in my Development Environment post, I was setting up to start this project. I&#8217;m making good progress so far. I started out with the Symfony framework 1.0-beta2 sandbox, which is an empty project and a copy of the Symfony libraries within the project folder, meaning [...]]]></description>
			<content:encoded><![CDATA[<p>As you might&#8217;ve guessed from the comments in the screenshot in my <a href="http://www.dangrossman.info/2006/12/20/php-development-environment/">Development Environment</a> post, I was setting up to start this project.</p>
<p style="text-align: center"><a title="W3Counter 12.23.2006" href="/photos/w3c_dev/w3counter_preview_12_23.jpg"><img alt="W3Counter 12.23.2006" src="/photos/w3c_dev/w3counter_preview_12_23_small.jpg" /></a></p>
<p><span id="more-33"></span>I&#8217;m making good progress so far. I started out with the Symfony framework 1.0-beta2 sandbox, which is an empty project and a copy of the Symfony libraries within the project folder, meaning it can all be zipped up and dropped into a hosting environment without external dependencies. I had to make a few edits to paths in the front controller to eliminate the need for the project to reside in a subdirectory as it&#8217;s set up by default.</p>
<p>I then created the database schema, which while similar to the one used by the hosted version, has a couple extra tables to manage new features (such as multiple users per install, and user roles with per-website granularity), and doesn&#8217;t create new tables on the fly as the hosted version does. I let Symfony&#8217;s command-line interface take my schema definition and build a database access layer out of it, as well as CRUD screens for the objects. I filled in the routing rules and created stub methods for all the controller actions I expect to need.</p>
<p>While it&#8217;d be more exciting to start on the new features I want to implement to make this competitive with new services like CrazyEgg and FeedBurner&#8217;s new Blogbeat integration, I&#8217;m starting with the core functions and building up from there.</p>
<p>Normally interface design doesn&#8217;t come first, but I just can&#8217;t work on a project if it doesn&#8217;t look good, so you can see a screenshot above of what the interface looks like now. I fully implemented a navigation controller that builds the menu from my list of routing rules and highlights the current location. I also built some reusable components for choosing date ranges (and made use of the Script.aculo.us JavaScript library for the first time to slide-in a custom date range entry area when chosen), and for encapsulating database result sets along with paging information.</p>
<p>Symfony comes bundled with Propel for database access, which provides ORM mapping and Criteria based object selection. Unfortunately most of my database queries, which won&#8217;t change much between the hosted version and the new one, don&#8217;t map well to Criteria. It&#8217;d take hours and hours to try to rewrite them if even possible; they usually involve many self-joins, subqueries, and grouping. Even if I get the Criteria working, Symfony&#8217;s built-in paging object doesn&#8217;t work well with queries that involve grouping, so I had to scrap that anyway. I went instead with a custom class which encapsulates the data as a simpler multi-dimensional array with some additional information about the result set to provide easy paging.</p>
<p>The next step was to implement an authorization module. I started out with a plugin from Symfony called sfGuard which is supposed to be drop-in user and role management for any application, but found it wasn&#8217;t easy to adapt to what I wanted to do with per-website access levels. I removed that and wrote my own auth module; basic login/logout with cookies for persistent logins. Symfony still takes care of most of the work in deciding when to send someone to my authorization controller for login, letting me specify what parts of the application require authorization and various credentials in a configuration file.</p>
<p style="text-align: center"><a title="W3Counter Login Screen 12.23.2006" href="/photos/w3c_dev/w3counter_preview_12_23_login.jpg"><img alt="W3Counter Login Screen 12.23.2006" src="/photos/w3c_dev/w3counter_preview_12_23_login_small.jpg" /></a></p>
<p>I think my next step will be to try implementing an HTML-only charting class to use for the dashboard in the first screenshot. I can&#8217;t use the same Flash charts as I do in the hosted version as I&#8217;d need to purchase a very expensive licensing contract to distribute those (the single server license was much more affordable). If I can&#8217;t get something nice working I may have to go back to generating charts as images with the GD library as I did with the original W3Counter. They did look good, but it&#8217;s extra coding for me and rendering time for the CPU I wanted to avoid.</p>
<p>If anyone knows of a free, redistributable Flash chart component set, I&#8217;d love to know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2006/12/23/w3counter-30-development-log-122306/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
