<?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/" >

<channel><title><![CDATA[Howard Ha - Blog]]></title><link><![CDATA[http://www.howardha.com/blog]]></link><description><![CDATA[Blog]]></description><pubDate>Sun, 18 Feb 2024 23:07:55 -0800</pubDate><generator>Weebly</generator><item><title><![CDATA[Ads in Captcha: Risk and Opportunity]]></title><link><![CDATA[http://www.howardha.com/blog/ads-in-captcha-risk-and-opportunity]]></link><comments><![CDATA[http://www.howardha.com/blog/ads-in-captcha-risk-and-opportunity#comments]]></comments><pubDate>Mon, 20 Dec 2010 05:36:52 GMT</pubDate><category><![CDATA[captcha]]></category><guid isPermaLink="false">http://www.howardha.com/blog/ads-in-captcha-risk-and-opportunity</guid><description><![CDATA[As with all industries, the online ad industry is constantly innovating ways to make money. &nbsp;In online advertising, a good number of players are chasing after the lucrative market to bring publishers incremental revenues without dipping into existing inventory (aka their banner inventory).Lately I've started noticing two promising potential avenues of revenue, each with companies contacting me to implement their services on our sites. One is the attempt to monetize image views with ad overl [...] ]]></description><content:encoded><![CDATA[<div  class="paragraph editable-text" style=" text-align: left; ">As with all industries, the online ad industry is constantly innovating ways to make money. &nbsp;In online advertising, a good number of players are chasing after the lucrative market to bring publishers incremental revenues without dipping into existing inventory (aka their banner inventory).<br><br>Lately I've started noticing two promising potential avenues of revenue, each with companies contacting me to implement their services on our sites. One is the attempt to monetize image views with ad overlays (I'll talk about these another time), and the other an attempt to monetize Captcha's by serving ads instead of gobbledygook in the Captcha field.<br><br><strong>The Opportunity</strong><br><br>This "Ads in CAPTCHA" model is actually pretty brilliant from the perspective of a publisher, and potentially very low impact from the perspective of users. &nbsp;Here's why:<br><br><ol><li>CAPTCHAs are on a lot of sites and are generally something users expect to find. &nbsp;This means inventory already exists.</li><li>Content engagement in CAPTCHAs is naturally high, because users need to decipher the CAPTCHA to post. &nbsp;Users would concentrate more on the ad content in the CAPTCHA in order to complete the captcha test.</li><li>CAPTCHAs are normally notoriously hard to read, and take a while to type. &nbsp;A Captcha ad would be the opposite: advertisers would want to make the CAPTCHA intentionally EASY to read so as to maximize the impact of their message, and the message would be in natural english, which would be faster to type.</li><li>If done right, the user will be subjected to quality sponsor messages which they resonate with, which I think enhances their experience compared to a string of random letters or weird words.</li></ol><br><strong>The Risk</strong><br><br>Offsetting the opportunity for publishers is the risk of driving away user engagement:<br><ol><li>CAPTCHAs are in a much more intimate and involved part of the usage chain. &nbsp;You are basically subjecting users who want to engage on your site to a forced ad message.</li><li>If the CAPTCHA ads are annoying or unprofessional, you drive away potential&nbsp;commenters<br></li><li>There are some users who are morally opposed to ads, who may refuse to participate in CAPTCHA protected items simply on basis of principle.</li><li>Adblock plugins may automatically block your CAPTCHA, leading to loss of engagement with users using such plugins.</li></ol><br><strong>The Problem</strong><br><br>I think the Ads in CAPTCHA model is pretty good, but I see current implementations as seriously flawed. &nbsp;Firstly, the ones I've seen so far are HUGE. &nbsp;Easily 5-10x bigger than the CAPTCHA we use on Neoseeker, and something like 50% bigger than the already massive <a href="http://www.google.com/recaptcha" target="_blank" title="">reCAPTCHA</a>&nbsp;module.<br><br><div>Secondly, the few ads I've demo'd go about it all wrong, they are confusing and require typing ridiculous messages. &nbsp;They also contain tons of text, like 2 phrases, or a slogan and a short message "Prices are right, get your lowest price always!"<br><br>Thirdly, there appears to be a ridiculous experimental foray into video captcha's, whereby the user has to watch a video and type something "revealed" by the video, said video being a TV like ad of course.<br><br>Fourth: the market is young, and I see alot of defaulted inventory on the example sites I see. &nbsp;Like many nascent ad formats, this is a chicken and egg problem, and my firm belief is that premium publishers should NOT donate their inventory to help establish companies trying to break into this type of ad market.<br><br>Fifth: as with many other form factors, I fear advertisers trying to get too much out of the medium. &nbsp;I am certain the huge CAPTCHA module has to do with the need for ads to stand out. &nbsp;I also worry advertisers would like the time spent per user on ad to be high, resulting in ads that require quite a bit of time for the user to decipher.<br>Lastly, I consider CAPTCHA to be a necessary evil, but one that I'd like to see done away with altogether in favour of better filtering, or other methods. Turning CAPTCHA into a revenue stream puts publishers at odds with making their sites as user friendly as possible, which is to say, zero captcha, while still filtering out as much spam as possible.<br><br><strong>Doing it right</strong><br><br>I think ads in CAPTCHA can be done in a way that respects users and also helps brands engage their audience and bring them meaningful brand messages.<br><br>This requires resolve on both the publisher and the CAPTCHA company's parts, as well as a healthy partnership with the advertisers. &nbsp;Here's what I'd love to see:<br><br><br><ol><li>Users have the ability to disable CAPTCHAs from brands they do not want to see with a single click (learn from the Facebook model)</li><li>Users can disable branded CAPTCHAs altogether with a single click</li><li>Both of the above would execute NETWORK wide, so that every site using that CAPTCHA system will stop serving that specific brand or stop serving ads altogether.</li><li>Publishers need a publishing back-end on which they can selectively decide what brand categories they wish to have on their CAPTCHA, as well as the ability to withdraw from brands they do not want represented.</li><li>The CAPTCHA module has to be very small, certainly no bigger than reCAPTCHA and preferably slightly smaller</li><li>The CAPTCHA ads must appear natural and inobtrusive. &nbsp;They should not have fancy colours, flashing animations, and annoying attributes.</li><li>The CAPTCHA ads should preferably contain a very simple and straightforward message and as little text as possible, not a slogan, or jingle quip. &nbsp;The most ideal would be a single word, or 2-3 words. &nbsp;If INTEL is a CAPTCHA sponsor they may ask you to type "Intel Inside" and nothing else would appear on the ad.</li></ol><br><br></div></div>]]></content:encoded></item><item><title><![CDATA[SELECT row number from MySQL While Sorting With Multiple ORDER BY Columns]]></title><link><![CDATA[http://www.howardha.com/blog/select-row-number-from-mysql-while-sorting-with-multiple-order-by-columns]]></link><comments><![CDATA[http://www.howardha.com/blog/select-row-number-from-mysql-while-sorting-with-multiple-order-by-columns#comments]]></comments><pubDate>Sat, 30 Oct 2010 03:03:40 GMT</pubDate><category><![CDATA[mysql]]></category><guid isPermaLink="false">http://www.howardha.com/blog/select-row-number-from-mysql-while-sorting-with-multiple-order-by-columns</guid><description><![CDATA[Today I came across an interesting MySQL problem. &nbsp;I needed to SELECT data while also returning the row number of each row of data. &nbsp;Normally to do this you do the following:Conventional method:SELECT @row := @row + 1 as row, t.*FROM some_table t, (SELECT @row := 0) rBut in my situation I needed to ORDER BY the data using multiple columns, and when you do this the row number gets completely broken (the order goes completely crazy). &nbsp;So after searching and finding nothing I played  [...] ]]></description><content:encoded><![CDATA[<div  class="paragraph editable-text" style=" text-align: left; ">Today I came across an interesting MySQL problem. &nbsp;I needed to SELECT data while also returning the row number of each row of data. &nbsp;Normally to do this you do the following:</div><div ><div id="629721527687452552" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml"><strong>Conventional method:</strong><div class="code">SELECT @row := @row + 1 as row, t.*FROM some_table t, (SELECT @row := 0) r</div></div></div><div  class="paragraph editable-text" style=" text-align: left; ">But in my situation I needed to ORDER BY the data using multiple columns, and when you do this the row number gets completely broken (the order goes completely crazy). &nbsp;So after searching and finding nothing I played with the query and came up with the below solution, which is to basically sort the results using as many ORDER BY criteria as you want, then SELECT it again and sort that using the row numbers:</div><div ><div id="233969298320673491" align="left" style="width: 100%; overflow-y: hidden;" class="wcustomhtml">Method to select when you ORDER BY multiple columns.<div class="code">SELECT @row := @row + 1 as row, t.* FROM (SELECT t.*FROM some_table t ORDER BY t.col1, t.col2) as sorttbl, (SELECT @row := 0) r ORDER BY row</div></div></div><div  class="paragraph editable-text" style=" text-align: left; ">The above works in MySQL 5.1.x and should work in 4.1+.</div>]]></content:encoded></item><item><title><![CDATA[Getting the Wordpress "read more" link to work in RSS feeds]]></title><link><![CDATA[http://www.howardha.com/blog/getting-the-wordpress-read-more-link-to-work-in-rss-feeds]]></link><comments><![CDATA[http://www.howardha.com/blog/getting-the-wordpress-read-more-link-to-work-in-rss-feeds#comments]]></comments><pubDate>Tue, 10 Aug 2010 20:02:57 GMT</pubDate><category><![CDATA[rss]]></category><category><![CDATA[wordpress]]></category><guid isPermaLink="false">http://www.howardha.com/blog/getting-the-wordpress-read-more-link-to-work-in-rss-feeds</guid><description><![CDATA[Sometime in 2008, around Wordpress 2.6 or so, the Wordpress team made an update to "fix" a bug with how "Read More" works in the RSS feeds. &nbsp;Apparently the "Read More" feature was not intended to work in RSS feeds when you chose to show full posts in feeds (Settings &gt; Reading &gt; For each article in a feed, show &gt; Full text). &nbsp;Some users seemed to really like this "fix" but for TalkAndroid it was a nuissance because sites were using our RSS feed to reproduce our entire content o [...] ]]></description><content:encoded><![CDATA[<div  class="paragraph" style=" text-align: left; ">Sometime in 2008, around Wordpress 2.6 or so, the Wordpress team made an update to "fix" a bug with how "Read More" works in the RSS feeds. &nbsp;Apparently the "Read More" feature was not intended to work in RSS feeds when you chose to show full posts in feeds (<em>Settings &gt; Reading &gt; For each article in a feed, show &gt; Full text</em>). &nbsp;Some <a href="http://en.forums.wordpress.com/topic/more-tag-fixed?replies=19" target="_blank">users seemed to really like this "fix"</a> but for <a href="http://www.talkandroid.com/" target="_blank">TalkAndroid</a> it was a nuissance because sites were using our RSS feed to reproduce our entire content on their own pages and the "Read More" tag was useful for splitting up our more original content.<br /><br /><br />After many hours of tooling around I found a reference to <a href="http://codex.wordpress.org/Customizing_the_Read_More" target="_blank">Customizing Read More</a>&nbsp;and this handy post here which mentions enabling the <a href="http://www.rlmseo.com/blog/read-more-link-on-wordpress-pages/" target="_blank">"Read More" on pages aside from the main page</a> of your blog. &nbsp;Even those two pages were not enough. &nbsp;I had to track down exactly where the RSS pages were and then hack them specifically to make it work. &nbsp;Here's how to do it:<br /><br /><ol><li>Look for the <strong>wp-includes/feed-rss2.php</strong> and&nbsp;<strong>wp-includes/feed-rss.php</strong>&nbsp;scripts in your Wordpress folder</li><li>Look for code that looks like "<em>&lt;content:encoded&gt;&lt;![CDATA[&lt;?php the_excerpt_rss() ?&gt;]]&gt;&lt;/content:encoded&gt;</em>" and replace it with: "<em>&lt;content:encoded&gt;&lt;![CDATA[&lt;?php the_content('&lt;strong&gt;Read More...&lt;/strong&gt;'); ?&gt;]]&gt;&lt;/content:encoded&gt;</em>"</li><li>Add &lt;?php $more = false; ?&gt; right before the content encode portion of the RSS files. &nbsp;This part is necessary because the the_post() function sets $more to 1 and this prevents the Read More from working.</li></ol><br />The final code looks something like this:<br /></div><div ><div id="133995216792158941" align="left" style="width: 100%; overflow-y: hidden;"><div class="code">&lt;?php<br />global $more;<br />$more = false;<br />?&gt;<br />&lt;content:encoded&gt;&lt;![CDATA[&lt;?php the_content('<strong>Read More...</strong>'); ?&gt;]]&gt;&lt;/content:encoded&gt;<br /></div></div></div>]]></content:encoded></item><item><title><![CDATA[Showing Code only to Guests in IPB 3 Templates]]></title><link><![CDATA[http://www.howardha.com/blog/showing-code-only-to-guests-in-ipb-3-templates]]></link><comments><![CDATA[http://www.howardha.com/blog/showing-code-only-to-guests-in-ipb-3-templates#comments]]></comments><pubDate>Tue, 20 Jul 2010 01:32:33 GMT</pubDate><category><![CDATA[ipb]]></category><guid isPermaLink="false">http://www.howardha.com/blog/showing-code-only-to-guests-in-ipb-3-templates</guid><description><![CDATA[In Invision Power Board 2 you could hide text in their templates by preventing it from showing to logged in users. &nbsp;The code looked like this:&lt;if="$this-&gt;ipsclass-&gt;member['id'] == 0"&gt;Hello, guest&lt;/if&gt;In IPB3 templates this didn't work at all. &nbsp;Instead, to limit your code to show only to guests and not to registered users use the following:&lt;if test="$this-&gt;memberData['member_id'] == 0"&gt;Hello, guest&lt;/if&gt; [...] ]]></description><content:encoded><![CDATA[<div  class="paragraph" style=" text-align: left; ">In Invision Power Board 2 you could hide text in their templates by preventing it from showing to logged in users. &nbsp;The code looked like this:<br /><font color="#000000" size="3"><span style="font-size: 13px; line-height: normal;"><font color="#666666" size="3"><span style="font-size: 12px; line-height: 19px;"><br /><strong>&lt;if="$this-&gt;ipsclass-&gt;member['id'] == 0"&gt;<br />Hello, guest<br />&lt;/if&gt;</strong></span></font></span></font><br /><br />In IPB3 templates this didn't work at all. &nbsp;Instead, to limit your code to show only to guests and not to registered users use the following:<br /><br /><strong>&lt;if test="$this-&gt;memberData['member_id'] == 0"&gt;<br />Hello, guest<br />&lt;/if&gt;</strong></div>]]></content:encoded></item></channel></rss>