<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Jason Bartholme's SEO Blog</title><link>http://www.jasonbartholme.com</link><description>Synapses Firing In All Directions - Opinions and reviews of topics regarding search engine optimization, social media, web development, and web design.</description><language>en</language><generator>http://wordpress.org/?v=2.5.1</generator><geo:lat>42.326227</geo:lat><geo:long>-89.025739</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://www.jasonbartholme.com</link><url>http://feeds.feedburner.com/%7Efc/JasonBartholme?bg=66CCFF&amp;amp;fg=660033&amp;amp;anim=1</url><title>Jason Bartholme's SEO Blog</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JasonBartholme" type="application/rss+xml" /><feedburner:emailServiceId>680413</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item><title>Standardized Credit Card Year Field in ColdFusion</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/487216568/</link><category>ColdFusion</category><category>Social Media</category><category>cfc</category><category>component</category><category>credit card</category><category>reusable code</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Mon, 15 Dec 2008 22:43:46 -0600</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=303</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/12/credit-card-year.jpg" alt="credit card year"  align="right"/>Going back and updating old code sucks.  Especially, if you need to update code because it was statically coded.  I have been migrating a an older registration form for my current project, and noticed a the credit card year date field still had 2006 in the select list.  I created a solution that was reusable for any of my projects and I would not have to worry about updating the years ever again.</p>
<p>The current project is being built from scratch and has allowed me to really implement some best practices to save me time and resources.  I wanted a something that could be reused, so I allowed the user to change the field name of the drop list and the number of years in the future they care to display.  </p>
<h3><b>components.cfc</b></h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="cfm"><span style="color: #333333;">&<span style="color: #0000FF;">lt</span>;cfcomponent&<span style="color: #0000FF;">gt</span>;</span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cffunction</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;getCCyearfield&quot;</span> output<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;no&quot;</span> returntype<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;string&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfargument</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;FieldName&quot;</span> <span style="color: #0000FF">required</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;no&quot;</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000FF">default</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;ExpirationYear&quot;</span> <span style="color: #0000FF;">/</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfargument</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;YearsAhead&quot;</span> <span style="color: #0000FF">required</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;no&quot;</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;numeric&quot;</span> <span style="color: #0000FF">default</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;15&quot;</span> <span style="color: #0000FF;">/</span><span style="color: #990000;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> ccyearselect <span style="color: #0000FF">=</span> <span style="color: #009900;">&quot;&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> thisyear <span style="color: #0000FF">=</span> <span style="color: #0000FF;">val</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">dateformat</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">now</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">&#41;</span>,<span style="color: #009900;">'yyyy'</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> futuredate <span style="color: #0000FF">=</span> <span style="color: #0000FF;">val</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">dateformat</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">dateadd</span><span style="color: #0000FF;">&#40;</span><span style="color: #009900;">'yyyy'</span>,ARGUMENTS.YearsAhead,<span style="color: #0000FF;">now</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&#41;</span>,<span style="color: #009900;">'yyyy'</span><span style="color: #0000FF;">&#41;</span><span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #990000;">&lt;cfoutput&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfsavecontent</span> variable<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;ccyearselect&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #000000; font-weight: bold;">&lt;select</span> <span style="color: #0000FF;">name</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#ARGUMENTS.FieldName#&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #000000; font-weight: bold;">&lt;option</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;&quot;</span><span style="color: #990000;">&gt;</span></span>Choose Expiration Year<span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>option&<span style="color: #0000FF;">gt</span>;</span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfloop</span> <span style="color: #0000FF">from</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#thisyear#&quot;</span> <span style="color: #0000FF">to</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#futuredate#&quot;</span> <span style="color: #0000FF">index</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;i&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #000000; font-weight: bold;">&lt;option</span> <span style="color: #0000FF;">value</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#i#&quot;</span><span style="color: #990000;">&gt;</span></span><span style="color: #0000FF;">#i#</span><span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>option&<span style="color: #0000FF;">gt</span>;</span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfloop&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>select&<span style="color: #0000FF;">gt</span>;</span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfsavecontent&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfoutput&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #990000;">&lt;cfreturn</span> ccyearselect <span style="color: #0000FF;">/</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cffunction&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfcomponent&gt;</span></span></pre></td></tr></table></div>

<p>The display of the field is fairly straightforward.  Optional arguments are &#8220;FieldName&#8221; and &#8220;YearsAhead&#8221;.</p>
<h3><b>display.cfm</b></h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="cfm"><span style="color: #333333;"><span style="color: #990000;">&lt;cfinvoke</span> component<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;components&quot;</span>
<span style="color: #0000FF;">method</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;getCCyearfield&quot;</span>
returnvariable<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;CCYear&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>cfinvoke&<span style="color: #0000FF;">gt</span>;</span>
&nbsp;
<span style="color: #333333;"><span style="color: #990000;">&lt;cfoutput&gt;</span></span><span style="color: #0000FF;">#CCYear#</span><span style="color: #333333;"><span style="color: #990000;">&lt;/cfoutput&gt;</span></span></pre></td></tr></table></div>

<p>The code itself is not rocket science.  However, it should save me, and hopefully you, the effort of updating a static credit card year select field.</p>
<p>Was this helpful for you? Let me know.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=d4zo07"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=d4zo07" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=pXJmO"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=pXJmO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=InuRo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=InuRo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=EVWXo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=EVWXo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=1ib5o"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=1ib5o" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/487216568" height="1" width="1"/>]]></content:encoded><description>Going back and updating old code sucks.  Especially, if you need to update code because it was statically coded.  I have been migrating a an older registration form for my current project, and noticed a the credit card year date field still had 2006 in the select list.  I created a solution [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/standardized-credit-card-year-field-in-coldfusion/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fstandardized-credit-card-year-field-in-coldfusion%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/standardized-credit-card-year-field-in-coldfusion/</feedburner:origLink></item><item><title>Getting Ready for Adobe MAX in San Francisco</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/452509630/</link><category>Adobe</category><category>adobe max</category><category>air</category><category>ColdFusion</category><category>cs3</category><category>flex</category><category>san francisco</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Thu, 13 Nov 2008 22:04:30 -0600</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=302</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.adobe.com/1to1_campaigns/2008_MAX/banners/MAX08_B125x125.jpg" alt="adobe air logo" align="right" />It&#8217;s been hectic for the last month with the fresh development of one of our major sites and myriad of other things on the home front.  I can safely say, I am ready for some fun.  Saturday, the web team and myself leave Chicago for Adobe MAX which is held in San Francisco this year.</p>
<p>I think I overloaded myself with sessions again this year. Sunday, I have the &#8220;Building High-Performance ColdFusion Applications&#8221; class all day which will hopefully give me some insight on making my own applications more robust.  Monday is sprinkled with AIR, Flex and more ColdFusion, Tuesday is a lot of AIR sessions and Wednesday is more advanced ColdFusion.</p>
<p>For fun our little group is hitting Alcatraz Monday for the twilight cruise.  It sounds like it&#8217;s going to be a great time, and I plan on taking a bunch of photos.   Hopefully, I hit it big again during the big event on Tuesday.  Last year, I took home a copy of the CS3 Master Collection for winning best hand at a Texas Hold &#8216;em game.  </p>
<p>I&#8217;ll be looking for the ColdFusion people and say I if I can.  Always nice to match the faces with the names.  </p>
<p>Hope to see you there. </p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=v6amJI"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=v6amJI" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=zAY3N"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=zAY3N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=sLubn"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=sLubn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=NQ65n"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=NQ65n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=ZKwrn"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=ZKwrn" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/452509630" height="1" width="1"/>]]></content:encoded><description>It&amp;#8217;s been hectic for the last month with the fresh development of one of our major sites and myriad of other things on the home front.  I can safely say, I am ready for some fun.  Saturday, the web team and myself leave Chicago for Adobe MAX which is held in San Francisco [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/getting-ready-for-adobe-max-in-san-francisco/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fgetting-ready-for-adobe-max-in-san-francisco%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/getting-ready-for-adobe-max-in-san-francisco/</feedburner:origLink></item><item><title>I Finally Got Hooked on the Eclipse Kool-Aid</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/418552021/</link><category>Web Development</category><category>Adobe</category><category>aptana</category><category>cfeclipse</category><category>ColdFusion</category><category>css</category><category>development</category><category>dreamweaver</category><category>eclipse</category><category>ide</category><category>PHP</category><category>python</category><category>ruby</category><category>svn</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Tue, 30 Sep 2008 21:17:41 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=299</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/09/eclipse-logo.jpg" alt="eclipse logo" width="131" height="68" align="right" /></a>The <a href="http://www.eclipse.org/" target="_blank">Eclipse Open Source IDE</a> coupled with the CFML plugin, CFEclipse, has been embraced by the ColdFusion community for years.  All of my sites were built with HomeSite and Dreamweaver.  I was waiting for a good excuse to start a site from scratch in Eclipse.  Three weeks later, I am loving the functionality,  power and ease.  The Kool-Aid is quite delicious. </p>
<h3><strong>My Current Setup</strong></h3>
<p>Right now, I have &#8220;Ganymede&#8221; the current version of Eclipse. Along with that I installed a few plugins that are a vital part of making the application so powerful:  </p>
<h3><strong>CFEclipse</strong></h3>
<p><a href="http://www.cfeclipse.org/download.cfm" target="_blank">CFEclipse</a> is the essential plugin for ColdFusion developers. There so many features that make this plugin great.  Some of the more powerful features:</p>
<p><strong>Code Folding</strong> -  Which manually or automatically collapses code from view.</p>
<p><strong>Bracket Highlighting</strong> - Which changes the pairs brackets, parens, and squiggles different colors when your are next to one.</p>
<p><strong>Integrated Browser</strong> - Run your pages from within Eclipse</p>
<p><strong>Scribble Pad</strong> - This has kept my project code from being littered with test.cfm type of pages. It is a defined page within is accessed by a toolbar button which allows you to run your code inside of Eclipse before you add it to your project.  It works nice for small chunks of code.</p>
<p><strong>Dynamic Snippets</strong> - add variables to your snippets before they are inserted onto the page.</p>
<p><strong>TODO task list</strong> - Simply add the text &#8220;TODO:&#8221; to your ColdFusion comments and they are all reference in a &#8220;Tasks&#8221;.  Good for going back to finished incomplete code or assigning tasks to other team members.</p>
<p><strong>SnipEX</strong> - This is a wonderful feature to create and share snippets.  You can host your own SnipEx snippets to share with your team or get them from public servers.  Some notable SnipEX server URLs are the following:</p>
<dl>
<dd><a href="http://cfsnippets.org/model/snippets/snipEx/snipEx.cfc" target="_blank">http://cfsnippets.org/model/snippets/snipEx/snipEx.cfc</a></dd>
<dd><a href="http://www.cflib.org/snipex/snipex.cfc" target="_blank">http://www.cflib.org/snipex/snipex.cfc</a></dd>
</dl>
<h3><strong>ColdFusion 8 Extensions for Eclipse</strong></h3>
<p>This <a href="http://www.cfreport.org/downloads/CF_FB_Extensions.zip" target="_blank">plugin</a> is release by Adobe and is a CFC and AS code generation from you database schemas.  It also give you a &#8220;Components Explorer&#8221; view gives you a look at the available components.</p>
<h3><strong>Subclipse</strong></h3>
<p>This is plugin or Eclipse that plays nice with the CFEclipse perspective to give you the functionality to get at and manage your SVN code repository.  <a href="http://subclipse.tigris.org/" target="_blank">Subclipse</a> works well for team development and you don&#8217;t need to use Tortoise or go to a command line for commits, updates and syncronization.</p>
<h3><strong>Aptana</strong></h3>
<p><a href="http://www.aptana.com" target="_blank">Aptana</a> is good for syntax highlighting of CSS files and it&#8217;s boasts itself as an IDE for creating Adobe AIR applications.  It also gives you an environment for developing in PHP, Ruby on Rails, and Python. 	</p>
<p>This are the plugins I have been using for the last few weeks that has made it a joy to code in Eclipse.  I&#8217;m curious to know what CF developers are using for their plugins. Let me know, I&#8217;m still finding pieces in the toolset to make me code more efficiently.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=bvDKpU"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=bvDKpU" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=MpVeM"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=MpVeM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=MLUlm"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=MLUlm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=C2WMm"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=C2WMm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=hA0Im"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=hA0Im" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/418552021" height="1" width="1"/>]]></content:encoded><description>The Eclipse Open Source IDE coupled with the CFML plugin, CFEclipse, has been embraced by the ColdFusion community for years.  All of my sites were built with HomeSite and Dreamweaver.  I was waiting for a good excuse to start a site from scratch in Eclipse.  Three weeks later, I am loving the [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/i-finally-got-hooked-on-the-eclipse-kool-aid/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fi-finally-got-hooked-on-the-eclipse-kool-aid%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/i-finally-got-hooked-on-the-eclipse-kool-aid/</feedburner:origLink></item><item><title>Dropbox Makes File Sharing and Storage Easy with Excellent OS Integration</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/390667603/</link><category>Site Reviews</category><category>dropbox</category><category>file sharing</category><category>linux</category><category>mac pc</category><category>online storage</category><category>operating systems</category><category>xp</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Thu, 11 Sep 2008 22:48:55 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=295</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/09/dropbox-logo.jpg" alt="dropbox logo" width="282" height="89" align="right"/>I was looking through Digg today and came across a new file sharing and storage service that just just launched today called, <a href="https://www.getdropbox.com/">Dropbox</a>.  I downloaded the installer and was up and running with a fresh account and I was sharing files with friends in a few minutes.</p>
<h3><strong>Quick Overview</strong></h3>
<p>Dropbox is a fast and easy way to share and store files remotely with the ability to access the files using PC, Mac, or Linux operating systems.  The files are versioned so you can actually restore previous versions of a file and even restore deleted files.   The basic account comes with 2GB of storage and premium accounts are $9.99 a month, or $99.99 a year.</p>
<h3><strong>Windows Experience</strong></h3>
<p>Once you install the application is installed, Dropbox sits in your notification area in the lower left of the desktop.  Right click on the icon and you can see your remaining storage space as well as other options.  When you click on &#8220;Open My Dropbox&#8221;, Explorer opens up a file location inside of your My Documents folder called &#8220;My Dropbox&#8221;.   </p>
<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/09/dropbox-pc.jpg" alt="dropbox pc" width="276" height="194" align="right" />Drop and drop files to the location and they sync to Dropbox&#8217;s servers automatically. It&#8217;s like SVN without having to manually commit and update.  It only takes a few moments for others to see the items you just placed in shared folders.  Also, you can choose to see any updates to your shared folders so you know when new items are added.   </p>
<h3><strong>Mac Experience</strong></h3>
<p>Installing Dropbox on the Mac was just as easy.  I downloaded the installed, dragged the program to the Application folder, signed into my account and I had Dropbox running on my G4 Mac.  I didn&#8217;t have to have an Intel Mac to run the software (yeay!). The program adds Dropbox to two locations on the Mac.  The first is in the area of Finder next to the Documents and Pictures.  The second is in the top right of the page with and icon to see the same options as on the PC.  </p>
<h3><strong>First Impressions</strong></h3>
<p>Right now, I carry around a few thumb drives in work bags to move around large files between work and home.  Now, I can simply drag and drop those files to a folder on either my Mac or PC. I&#8217;d say that&#8217;s pretty convenient.  Sharing files with friends is great too, already my friends and I have traded some large image files which wouldn&#8217;t send well in email.  I&#8217;m pretty excited on how easy the service is and will be using it in the foreseeable future.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=8bLjpU"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=8bLjpU" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=R8lkL"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=R8lkL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=Mclfl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=Mclfl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=3fsOl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=3fsOl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=8yCbl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=8yCbl" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/390667603" height="1" width="1"/>]]></content:encoded><description>I was looking through Digg today and came across a new file sharing and storage service that just just launched today called, Dropbox.  I downloaded the installer and was up and running with a fresh account and I was sharing files with friends in a few minutes.
Quick Overview
Dropbox is a fast and easy way [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/dropbox-makes-file-sharing-and-storage-easy-with-excellent-os-integration/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fdropbox-makes-file-sharing-and-storage-easy-with-excellent-os-integration%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/dropbox-makes-file-sharing-and-storage-easy-with-excellent-os-integration/</feedburner:origLink></item><item><title>Link Building Wiki is a Great Resource for Learning How to Get Quality Backlinks</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/384659382/</link><category>Site Reviews</category><category>backlinks</category><category>black hat</category><category>feed aggregator</category><category>link building</category><category>linking</category><category>SEO</category><category>seo blog</category><category>serps</category><category>services</category><category>XML</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Sat, 30 Aug 2008 22:17:39 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=294</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/08/link-building-wiki-logo.jpg" alt="link building wiki logo" title="link-building-wiki-logo" width="250" height="34"  align="right"/>Looking to do some link building for you own site or your clients?   Then you need to bookmark the <a href="http://www.linkbuildingwiki.com" target="_blank">LinkBuildingWiki.com</a>.  It is an all inclusive list of everything you need to learn about the art of link building and find some new methods.</p>
<p>Getting quality inbound links is an important part for getting targeted traffic and to encourage search engine spiders.    The Link Building Wiki covers almost every conceivable aspect of <a href="http://www.linkbuildingwiki.com" target="_blank">link building</a>.  You can educate yourself with link building references on popular webmaster and SEO forums such as SE Roundtable,  Cr8asite, Webmaster  World, and Abacus to name a few. </p>
<p>The Link Building/SEO Blogs and Posts section has required reading from the leaders in the industry.  The XML is on the page and is ready to be added into your feed aggregator for each blog. There are even blogs that dabble in the “grey hat” and “black hat” realms of link building which often involve shady or unorthodox methods.  Those blogs are interesting to read because the authors are very intelligent and know their stuff when it comes to getting links.</p>
<p>If you are link building yourself then you need an arsenal of tools to help you analysis your competitors and look for linking opportunities.  Listed are an extensive list of tools which include entire software packages, online tools, and Firefox add-ons.  I use a good handful of the tools listed when I am in the link building phase of a project.</p>
<p>Another option is to look into <a href="http://www.linkbuildingwiki.com/wiki/Link_Building_Services">link building services</a> if would like a quality, professional team to do the work for you.  A good team knows where to find the great links that your site needs to get it in front of the right people and high in the SERPs.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=k98VoL"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=k98VoL" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=poKmL"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=poKmL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=eea5l"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=eea5l" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=6OQ5l"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=6OQ5l" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=iwd5l"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=iwd5l" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/384659382" height="1" width="1"/>]]></content:encoded><description>Looking to do some link building for you own site or your clients?   Then you need to bookmark the LinkBuildingWiki.com.  It is an all inclusive list of everything you need to learn about the art of link building and find some new methods.
Getting quality inbound links is an important part for getting [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/link-building-wiki-is-a-great-resource-for-learning-how-to-get-quality-backlinks/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Flink-building-wiki-is-a-great-resource-for-learning-how-to-get-quality-backlinks%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/link-building-wiki-is-a-great-resource-for-learning-how-to-get-quality-backlinks/</feedburner:origLink></item><item><title>2 Methods to Help Prevent SQL Injections with ColdFusion</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/384659383/</link><category>ColdFusion</category><category>ascii</category><category>html</category><category>injections</category><category>microsoft</category><category>mssql</category><category>SQL</category><category>WYSIWYG</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Thu, 14 Aug 2008 13:03:03 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=291</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/08/ms-sql-logo.gif" alt="MSSQL 2005 logo" title="ms-sql-logo" width="240" height="118" align="right"/>During the few weeks my work sites were getting hit with a nasty SQL injection that would update all the text fields in our SQL tables.  I came up with some code to curb the URL injections as well as form-based attacks.  It has been effective, but I wonder if anyone has a better solution.</p>
<p>The attack would append a &lt;script&gt; tag pointing to a .js file usually in China at the end of every text field in all the tables in the database.  We have over 300 tables and the script added about 7gb of data to the database. </p>
<p>We have been using the &lt;cfqueryparam&gt; tag for the fields when creating queries, but thought the injection was still slipping through.  The logs from our host did not give us an exact point of entry. I decided that we would needed a different method to stop the injection code from being executed.</p>
<p>For the URL variables I created a block code that sits in the <b>onRequestStart</b> function in the Application.cfc.  This checks for the existence of a URL variable and if it finds one, then loops through the variable trying to match &#8220;4445434C415245&#8243; which is the hex equivalent of &#8220;DECLARE&#8221;, which was part of all the injection scripts that were attempted.  If the pattern was matched it would send an email and abort the page.  The script was catching a lot of attempts, so after a few hours we commented off the email response.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="cfm"><span style="color: #333333;"><span style="color: #990000;">&lt;cfif</span> NOT <span style="color: #0000FF;">StructISEmpty</span><span style="color: #0000FF;">&#40;</span>URL<span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span> 
	<span style="color: #333333;"><span style="color: #990000;">&lt;cfloop</span> <span style="color: #0000FF">list</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#StructKeyList(URL)#&quot;</span> <span style="color: #0000FF">index</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;i&quot;</span><span style="color: #990000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #990000;">&lt;cfif</span> URL<span style="color: #0000FF;">&#91;</span>i<span style="color: #0000FF;">&#93;</span> CONTAINS <span style="color: #009900;">'4445434C415245'</span><span style="color: #990000;">&gt;</span></span>
	     	  	<span style="color: #333333;"><span style="color: #990000;">&lt;cfmail</span> <span style="color: #0000FF">to</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;webmaster@site.org&quot;</span>
            			   <span style="color: #0000FF">from</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;info@site.org&quot;</span>
                   		   subject<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;SQL Injection Attempt&quot;</span>
                   		   <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;html&quot;</span><span style="color: #990000;">&gt;</span></span>
            			   <span style="color: #333333;"><span style="color: #990000;">&lt;cfdump</span> <span style="color: #000000; font-weight: bold;">var</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#URL#&quot;</span><span style="color: #990000;">&gt;</span></span>
           			   <span style="color: #333333;"><span style="color: #990000;">&lt;cfdump</span> <span style="color: #000000; font-weight: bold;">var</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#CGI#&quot;</span><span style="color: #990000;">&gt;</span></span>
            	     <span style="color: #333333;"><span style="color: #990000;">&lt;/cfmail&gt;</span></span>
                     <span style="color: #333333;">&<span style="color: #0000FF;">lt</span>;cfabort&<span style="color: #0000FF;">gt</span>;</span>
          <span style="color: #333333;"><span style="color: #990000;">&lt;/cfif&gt;</span></span>
    <span style="color: #333333;"><span style="color: #990000;">&lt;/cfloop&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfif&gt;</span></span></pre></td></tr></table></div>

<p>The second method we are using obscufates harmful string patterns in text submitted on forms.  The script simply looks for four different patterns that were part of the injection attempts and replaces the character with ASCII codes. We don&#8217;t have any WYSIWYG editors on the public side of the site, so we were not worried about breaking HTML formatted form content. </p>
<p>The script loops through all of the form fields based on the existence of the generated field list when a form is submitted.  Of course, more conditions can be added as needed. This also goes in the <b>onRequestStart</b> function in the Application.cfc.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="cfm"><span style="color: #333333;"><span style="color: #990000;">&lt;cfloop</span> <span style="color: #0000FF">list</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#FORM.FieldNames#&quot;</span> <span style="color: #0000FF">index</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;i&quot;</span><span style="color: #990000;">&gt;</span></span>
    <span style="color: #333333;"><span style="color: #990000;">&lt;cfscript</span> <span style="color: #990000;">&gt;</span></span>
        FORM[i] = replace(FORM[i],'<span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #009900;">','</span><span style="color: #0000FF;">&amp;lt</span>;<span style="color: #009900;">','</span>ALL<span style="color: #009900;">');
        FORM[i] = replace(FORM[i],'</span><span style="color: #990000;">&gt;</span></span>','&amp;gt;','ALL');
        FORM[i] = replace(FORM[i],'&quot;','&amp;quot;','ALL');
        FORM[i] = replace(FORM[i],'''',' ','ALL');
    <span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>cfscript <span style="color: #990000;">&gt;</span></span>  
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfloop&gt;</span></span></pre></td></tr></table></div>

<p>Aside from the cfqueryparams and these two methods, we also changed the constraints in SQL to not allow certain text patterns as well as limit permissions to the tables.  </p>
<p>Have you been hit by these type of SQL injection attacks?  If so, what have you been doing to prevent them?  I would like to further protect the tables seeing these to methods aren&#8217;t bulletproof.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=shxGh6"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=shxGh6" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=BLcDL"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=BLcDL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=9xVOl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=9xVOl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=46NPl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=46NPl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=uFyKl"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=uFyKl" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/384659383" height="1" width="1"/>]]></content:encoded><description>During the few weeks my work sites were getting hit with a nasty SQL injection that would update all the text fields in our SQL tables.  I came up with some code to curb the URL injections as well as form-based attacks.  It has been effective, but I wonder if anyone has a [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/2-methods-to-help-prevent-sql-injections-with-coldfusion/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2F2-methods-to-help-prevent-sql-injections-with-coldfusion%2F</feedburner:awareness><category domain="http://rss.financialcontent.com/stocksymbol">URL</category><feedburner:origLink>http://www.jasonbartholme.com/2-methods-to-help-prevent-sql-injections-with-coldfusion/</feedburner:origLink></item><item><title>Delicious Finally Gets a Face Lift</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/352646232/</link><category>SEO</category><category>Social Bookmarking</category><category>delicious</category><category>Firefox</category><category>forum</category><category>minimalist</category><category>tags</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Fri, 01 Aug 2008 08:00:43 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=282</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/08/delicious-logo.gif" align="right" alt="delicious logo">Today, one of the most popular social bookmarking sites, <a href="http://www.delicious.com" target="_blank">Delicious</a>, got a long-awaited redesign.  Besides a clean look and feel, long yearned for features have been added.</p>
<p>The first page looks very nice. The blue is a bit softer </a>than the original giving the page a fresher, dare I say, Web 2.0 look.  The tags associated to the listings are arranged below the number of saves to the item and when you mouseover the word &#8220;Tags&#8221; is displayed on the right column.  Same goes for when you mouseover the save count, it displays &#8220;people&#8221; on the right.  I would assume this would benefit people who are new to social bookmarking and are curious as to what those elements are. </p>
<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/07/delicious-screenshot.gif" alt="delicious screenshot" title="delicious-screenshot" width="416" height="149"  align="center"/></p>
<p>A new stat on the home page appears for the number of saves in the last minute.  It seems to hover around 200 saves on average.  The quick math gives Delicious a count of 288,000 saves per day.</p>
<p>According to the <a href="http://delicious.com/popular/addons" target="_blank">Popular Addons</a> page, it seems that they took removed the &#8220;recent saves&#8221; count next to each listing.  As a person who dabbles in social media optimization, I liked seeing the count, but it was not a critical feature.</p>
<p>Delicious has added a <a href="http://support.delicious.com/forum/index.php" target="_blank">support forum</a>.  Delicious team members are active in the forum answering user&#8217;s questions and responding to the wide range of opinions on the new site.   </p>
<p>A great new feature is when you save an item, a bit of AJAX opens the form around the item, and you can save the item without reloading the page. </p>
<p>I really enjoy the &#8220;top 10&#8243; stat on the right of any item when you click on the number of saves on my post  <a href="http://delicious.com/url/7e7b8bc0e60fb9ec5423c0aafbd0bf9d?show=all" target="_blank">11 Powerful Firefox 3 Add-ons That Can Replace Standalone Applications</a>, you can see the number of times a particular tag was associated to the post.  </p>
<p>Blue is the new red. The number of times an item is saved the background of the count is darker blue in relation to the number of saves.  Before, it was red and was sometime difficult to read the number when the post had a massive amount of saves. </p>
<p>Also, if any has the original URL saved in their bookmarks of del.icio.us, you will now see that it redirects to www.delicious.com. </p>
<p>All and all, I like the new design and functionality.  The team did a good job making it look clean while maintaining the minimalist look Delicious is known for. I especially enjoy the &#8220;top 10&#8243; stats.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=2816y9"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=2816y9" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=96OgO"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=96OgO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=e1gFo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=e1gFo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=6VOJo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=6VOJo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=O2FMo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=O2FMo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/352646232" height="1" width="1"/>]]></content:encoded><description>Today, one of the most popular social bookmarking sites, Delicious, got a long-awaited redesign.  Besides a clean look and feel, long yearned for features have been added.
The first page looks very nice. The blue is a bit softer than the original giving the page a fresher, dare I say, Web 2.0 look.  The [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/delicious-finally-gets-a-face-lift/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fdelicious-finally-gets-a-face-lift%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/delicious-finally-gets-a-face-lift/</feedburner:origLink></item><item><title>Clicky Web Analytics Improves API and Adds More Features</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/352605598/</link><category>SEO</category><category>analytics</category><category>api</category><category>charts</category><category>clicky</category><category>Firefox</category><category>JSON</category><category>osx</category><category>PHP</category><category>vista</category><category>web</category><category>XML</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Thu, 31 Jul 2008 00:00:33 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=287</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/08/clicky-web-analytics-logo.gif" alt="clicky web analytics logo" title="clicky-web-analytics-logo" width="254" height="69" align="right"/>The crew over at <a href="http://getclicky.com/13398" target="_blank">Clicky Web Analytics</a> have been working hard in making changes to their product to deliver what their customers want.  Recently, that have made improvements for  application developers and users.</p>
<h3><b>API Version 3 Improvements</b></h3>
<p>The main feature of the recent version of the API is combining requests.  Previously, data types were one per call, now that can be unlimited.  This speeds up applications by not pummeling the Clicky servers for every bit of information.  Now, more complete calls can be made less frequently.  Also added is the &#8220;daily&#8221; data range, this allows people to more easily get the data types based on a date instead of an lump sum.  The API comes in three flavors depending on you needs.  Choose between JSON, XML, and PHP.</p>
<h3><b>Browser and OS versioning</b></h3>
<p>Recently, they added enhanced statistics regarding the visitor&#8217;s browser and operating system.  Previously, only an aggregate of both browser and OS versions were listed.  Now, each brower is broken down into their respective versions.  As expected, a majority of my traffic going to my popular post on Firefox 3 extensions are, in fact, Firefox 3 users. For operating systems, at least 60% of visitors are XP users, followed by 10% Vista, 10% Mac OS X, and then the rest.  </p>
<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/08/clicky-charts.jpg" alt="Clicky charts" title="clicky-charts" width="399" height="237" align="center"/></p>
<h3><b>New Charting for Statistics</b></h3>
<p>Besides the blue bar charts, Clicky has also incorporated the very appealing Flash charts to represent data.  The charts also reveal more information when you mouseover the data. For instance, I hover over the FeedBurner chart and the date and actual subscriber count displays depending on the data point.  You can toggle between summaries or individual charts.  </p>
<p><a href="http://getclicky.com/13398" target="_blank">Clicky</a> continues to improve their product and I am always glad to see when the announce a new feature and usually when they do it was from user requests.  It goes to show that they still care about the users and their product.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=ErA2IA"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=ErA2IA" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=jPtWO"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=jPtWO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=Ft2ho"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=Ft2ho" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=h2Coo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=h2Coo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=ftkVo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=ftkVo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/352605598" height="1" width="1"/>]]></content:encoded><description>The crew over at Clicky Web Analytics have been working hard in making changes to their product to deliver what their customers want.  Recently, that have made improvements for  application developers and users.
API Version 3 Improvements
The main feature of the recent version of the API is combining requests.  Previously, data types were [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/clicky-web-analytics-improves-api-and-adds-more-features/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fclicky-web-analytics-improves-api-and-adds-more-features%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/clicky-web-analytics-improves-api-and-adds-more-features/</feedburner:origLink></item><item><title>Scraping Google SERPs with ColdFusion</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/349496544/</link><category>ColdFusion</category><category>cfhttp</category><category>marketing</category><category>regular expressions</category><category>scraping</category><category>serp</category><category>user agent</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Sun, 27 Jul 2008 22:21:03 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=280</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/07/scraping-google-with-coldfusion.gif" alt="scraping google with ColdFusion"width="225" height="73" align="right" />Recently, I have been working on an internal tool for our sales and marketing departments.  They wanted the ability to provide the URL of a company and return various information.  One of the elements they wanted was the number of pages index in Google.  </p>
<p>This was my first attempt to combine regular expressions with cfhttp. It&#8217;s pretty handy once you get the hang to it, and it can be a very powerful combination.  Here&#8217;s the script I use to scrape the total number of pages indexed in Google.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="code"><pre class="cfm"><span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!---  We only need the domain name without the http://www. ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> siteurl <span style="color: #0000FF">=</span> <span style="color: #009900;">&quot;jasonbartholme.com&quot;</span><span style="color: #990000;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!---  Regular expression which matches the pattern to determine count---&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> googleregex <span style="color: #0000FF">=</span> <span style="color: #009900;">'&lt;font size=-1&gt;</span></span>Results [\s\S]*? of about <span style="color: #333333;"><span style="color: #000000; font-weight: bold;">&lt;b&gt;</span></span>([\s\S]*?)<span style="color: #333333;"><span style="color: #990000;">&lt;</span><span style="color: #0000FF;">/</span>b&<span style="color: #0000FF;">gt</span>;</span> for'&gt;
&nbsp;
<span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!--- useragent is required because the page will not &quot;get&quot; properly otherwise ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfhttp</span> url<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;http://www.google.com/search?q=site%3A#siteurl#&quot;</span>
		<span style="color: #0000FF;">method</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;get&quot;</span>
		resolveurl<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;false&quot;</span>
		useragent<span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;#cgi.http_user_agent#&quot;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfhttp&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!---  Trims the whitespace in the content, and check for our regex pattern ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> sdoc <span style="color: #0000FF">=</span> <span style="color: #0000FF;">trim</span><span style="color: #0000FF;">&#40;</span>cfhttp.filecontent<span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> resu<span style="color: #0000FF;">lt</span> <span style="color: #0000FF">=</span> <span style="color: #0000FF;">refindnocase</span><span style="color: #0000FF;">&#40;</span>googleregex,sdoc,<span style="color: #FF0000;">1</span>,<span style="color: #009900;">&quot;true&quot;</span><span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!---  cftry/cfcatch to see if refindnocase() returned a result ---&gt;</span></span>
<span style="color: #333333;">&<span style="color: #0000FF;">lt</span>;cftry&<span style="color: #0000FF;">gt</span>;</span>
	<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> resu<span style="color: #0000FF;">lt</span>count <span style="color: #0000FF">=</span> <span style="color: #0000FF;">replace</span><span style="color: #0000FF;">&#40;</span><span style="color: #0000FF;">mid</span><span style="color: #0000FF;">&#40;</span>sdoc,resu<span style="color: #0000FF;">lt</span>.pos<span style="color: #0000FF;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #0000FF;">&#93;</span>,resu<span style="color: #0000FF;">lt</span>.<span style="color: #0000FF;">len</span><span style="color: #0000FF;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #0000FF;">&#93;</span><span style="color: #0000FF;">&#41;</span>,<span style="color: #009900;">','</span>,<span style="color: #009900;">''</span>,<span style="color: #009900;">'ALL'</span><span style="color: #0000FF;">&#41;</span><span style="color: #990000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;cfcatch</span> <span style="color: #0000FF;">type</span><span style="color: #0000FF;">=</span><span style="color: #009900;">&quot;any&quot;</span><span style="color: #990000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #990000;">&lt;cfset</span> resu<span style="color: #0000FF;">lt</span>count <span style="color: #0000FF">=</span> <span style="color: #FF0000;">0</span>&<span style="color: #0000FF;">gt</span>;</span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cfcatch&gt;</span></span>
<span style="color: #333333;"><span style="color: #990000;">&lt;/cftry&gt;</span></span>
&nbsp;
<span style="color: #333333;"><span style="color: #808080; font-style: italic; background-color:#FFFF99;">&lt;!---  display our result ---&gt;</span></span>
Pages indexed: <span style="color: #333333;"><span style="color: #990000;">&lt;cfoutput&gt;</span></span><span style="color: #0000FF;">#resu<span style="color: #0000FF;">lt</span>count#</span><span style="color: #333333;"><span style="color: #990000;">&lt;/cfoutput&gt;</span></span></pre></td></tr></table></div>

<p>I must give credit to the post &#8220;<a href="http://www.blogstorm.co.uk/how-to-scrape-pages-with-coldfusion/" target="_blank">How to Scrape Pages With ColdFusion</a>&#8220;.  It gave me the basics of what I needed to get me up and running.  </p>
<p>Do you scrape data with ColdFusion?  If so, do you use a similar method and do you use anything to help you with the regular expression syntax? Let me know, it would make for a good follow-up post.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=5gFpC3"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=5gFpC3" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=U36xO"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=U36xO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=wrX4o"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=wrX4o" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=4UKIo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=4UKIo" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=td40o"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=td40o" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/349496544" height="1" width="1"/>]]></content:encoded><description>Recently, I have been working on an internal tool for our sales and marketing departments.  They wanted the ability to provide the URL of a company and return various information.  One of the elements they wanted was the number of pages index in Google.  
This was my first attempt to combine regular [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/scraping-google-serps-with-coldfusion/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fscraping-google-serps-with-coldfusion%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/scraping-google-serps-with-coldfusion/</feedburner:origLink></item><item><title>Multiple Social Media Front Pages WTF</title><link>http://feeds.feedburner.com/~r/JasonBartholme/~3/336842680/</link><category>SEO</category><category>digg</category><category>fark</category><category>Firefox</category><category>mixx</category><category>reddit</category><category>smo</category><category>Social Media</category><category>StumbleUpon</category><category>web analytics</category><category>wired</category><category>yahoo</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jason Bartholme</dc:creator><pubDate>Wed, 16 Jul 2008 02:09:24 -0500</pubDate><guid isPermaLink="false">http://www.jasonbartholme.com/?p=278</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.jasonbartholme.com/wp-content/uploads/2008/07/schmacher-victory.jpg" align="right" alt=""Schmacher victory">A few days ago, my post, &#8220;<a href="http://www.jasonbartholme.com/11-powerful-firefox-3-add-ons-that-can-replace-standalone-applications" target="_blank">11 Powerful Firefox 3 Add-ons That Can Replace Standalone Applications</a>&#8221; reached the front page of multiple social media sites which sent a massive amount of traffic to my blog in a relatively short amount of time. With a quality web host and reliable analytics, the site was accessible throughout the burst of traffic and I have unbroken reports to show for.</p>
<h3><strong>Social Traffic</strong></h3>
<p>The post racked up some impressive numbers for traffic for three of the most popular social media sites.  Overall, <a href="http://digg.com/tech_news/11_Powerful_Firefox_3_Add_ons_to_Replace_Standalone_Apps" target="_blank">Digg</a> sent me 61,722 uniques, <a href="http://www.reddit.com/info/6qt2q/" target="_blank">Reddit</a> was next with 30,231 then <a href="http://del.icio.us/url/7e7b8bc0e60fb9ec5423c0aafbd0bf9d" target="_blank">del.icio.us</a> brang up the rear with 2,210.  Two other sites that sent a significant amount of visitors were StumbleUpon with 5,519 and PopURLs at 2,078.  The remained miscellaneous traffic accounts for the over 125,000 unique visitors to the post in four days.  </p>
<p>In regards to Digg, I recieved 2470 diggs to the post, which in itself, generated more traffic because it was listed in the &#8220;popular in last 24 hours&#8221; and &#8220;popular this week&#8221; sections of the Tech News category.</p>
<p>The post has 977 saves on Del.icio.us at the moment. That is the most I have ever received in one post.  I am still receiving traffic on the &#8220;popular&#8221; pages of related tags.  </p>
<h3><strong>Hosting</strong></h3>
<p>This was my first time to the front page of the social sites while being hosted on Media Temple&#8217;s Grid Server hosting. I was honestly impressed with the servers staying up almost 100% of time during the flood of traffic.  The site did go down for about fifteen minutes. At that time, the MySQL tables were served from a &#8220;BurstContainer&#8221;, which allows the blog to scale during the surge.  It seemed to work fine. Aside from the fifteen minutes I was able to access any part of the blog with a long wait time.</p>
<h3><strong>Analytics</strong></h3>
<p>I have abandoned Google Analytics over a year ago and have been exclusively using Clicky <a href="http://getclicky.com/13398" target="_blank">web analytics</a>.  The real-time statistics essential for monitoring traffic and visitor interaction.  For as much traffic as the blog was receiving, I didn&#8217;t know if there would be a break in reporting for the analytics.  Turns out there was not.  I have full statistics and bunch of reports to dissect.</p>
<h3><strong>Backlinks</strong></h3>
<p>According to Yahoo&#8217;s Site Explorer, the post has 2,272 &#8220;inlinks&#8221; at the time of this publish.  I am still sifting through those numbers to clear of the redundant and invalid entries, so I don&#8217;t have a solid number as of yet. </p>
<h3><strong>Disappointments</strong></h3>
<p>Even though, I &#8220;front paged&#8221; the big three social media sites, I was expecting a few others as well.  The post was submitted to Fark.com, but it wasn&#8217;t good enough to be green lit even though 65 premium members clicked on the post.  I have had posts go green with less than 20 visits.  Propeller did not do that well at all.  I got 10 total visitors from them.  Lastly, Mixx.com sent me 3 only visitors.  </p>
<h3><strong>Pleasant Surprises</strong></h3>
<p>I didn&#8217;t know that Reddit posts appeared on Wired.com&#8217;s home page.  People were more impressed by that because they didn&#8217;t know about Digg, del.icio.us, etc.</p>
<p>The post seemed to get international attention also.  It was linked to on German, Spanish, Polish, Israeli, and Croatian languages.  </p>
<p>Two developers of the mentioned add-ons made comments. It was good opportunity to thank them for the great work they have done.</p>

<p><a href="http://feeds.feedburner.com/~a/JasonBartholme?a=kyQCDp"><img src="http://feeds.feedburner.com/~a/JasonBartholme?i=kyQCDp" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JasonBartholme?a=WigIO"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=WigIO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=HONro"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=HONro" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=pR38o"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=pR38o" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JasonBartholme?a=9TGzo"><img src="http://feeds.feedburner.com/~f/JasonBartholme?i=9TGzo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JasonBartholme/~4/336842680" height="1" width="1"/>]]></content:encoded><description>A few days ago, my post, &amp;#8220;11 Powerful Firefox 3 Add-ons That Can Replace Standalone Applications&amp;#8221; reached the front page of multiple social media sites which sent a massive amount of traffic to my blog in a relatively short amount of time. With a quality web host and reliable analytics, the site was accessible throughout [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.jasonbartholme.com/multiple-social-media-front-pages-wtf/feed/</wfw:commentRss><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=JasonBartholme&amp;itemurl=http%3A%2F%2Fwww.jasonbartholme.com%2Fmultiple-social-media-front-pages-wtf%2F</feedburner:awareness><feedburner:origLink>http://www.jasonbartholme.com/multiple-social-media-front-pages-wtf/</feedburner:origLink></item><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=JasonBartholme</feedburner:awareness></channel></rss>
