<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Shannon Whitley</title>
	
	<link>http://www.voiceoftech.com/swhitley</link>
	<description>Inspired by Actual Events</description>
	<pubDate>Sat, 04 Jul 2009 04:34:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>37.769528</geo:lat><geo:long>-122.259378</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/swhitley" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Chat Catcher: Customize Your WordPress Comments and Trackbacks</title>
		<link>http://www.voiceoftech.com/swhitley/?p=728</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=728#comments</comments>
		<pubDate>Fri, 26 Jun 2009 10:27:06 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=728</guid>
		<description><![CDATA[WordPress themes are almost as varied and numerous as WordPress users. Changing the look of a blog on-the-fly is simple, and if a WordPress theme becomes a little stale, there are plenty of theme galleries to browse. But not all themes are created equal, and even if a theme is done well, WordPress upgrades can [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress themes are almost as varied and numerous as WordPress users. Changing the look of a blog on-the-fly is simple, and if a WordPress theme becomes a little stale, there are plenty of theme galleries to browse. But not all themes are created equal, and even if a theme is done well, WordPress upgrades can leave a theme with outdated code. If you use <a href="http://chatcatcher.com/" target="_blank">Chat Catcher</a> on your blog, it&#8217;s important to understand how your theme controls the display of comments and trackbacks.&nbsp; More importantly, if you&#8217;re not happy with that display, it&#8217;s important to learn how to change it.</p>
<p>When I wrote the Chat Catcher plugin, I felt it was important to leave as much of the existing comment system intact. WordPress manages comments effectively and I want to build on the existing code without replacing it. While this is the best approach for Chat Catcher, it does make the solution dependent on whichever theme is in place on a particular blog. For example, if a theme doesn&#8217;t display trackbacks and Chat Catcher is still set to post trackbacks, the captured tweets will never appear on the blog. Comments and trackbacks are often formatted differently, so even if a theme displays trackbacks, that doesn&#8217;t mean the Chat Catcher comments will be displayed properly.</p>
<p>Although there are many blog posts that address this topic, I thought it best to create one specifically for Chat Catcher. In the following sections, I&#8217;ll describe how easy it is to separate comments from trackbacks, and I&#8217;ll provide some additional tips for customizing the format of your blog&#8217;s comments.</p>
<h3>Before You Do Anything</h3>
<p>I highly recommend you setup a <a href="http://codex.wordpress.org/Test_Driving_WordPress#Install_another_Blog">test blog</a> before reading any further. Test blogs are wonderful things. They protect you from the embarrassment of bringing down your main blog when you make a big mistake performing a simple code change.</p>
<p>Now that I&#8217;ve warned you, I recognize that many of you will still apply this to your main blog without testing it first. At least make a copy of your theme files before performing any modifications. We&#8217;ll be modifying the comments.php file, so make a copy of that file in your theme folder. For example, let&#8217;s say you&#8217;re running the default theme on your blog. Go to &#8220;\{your web files}\wp-content\themes\default&#8221; and make a copy of the comments.php file.</p>
<h3>Chat Catcher Settings</h3>
<p>There are three main ways to leave feedback on a blog:&nbsp; comments, trackbacks, and pingbacks.&nbsp; All three of these are considered types of comments.&nbsp; They look similar when saved in the WordPress database, but a field called <strong>comment_type</strong> is used to keep them separate.&nbsp; Each regular comment has a blank comment type; trackbacks and pingbacks have a comment type of &#8220;trackback&#8221; or &#8220;pingback&#8221; respectively.</p>
<p>There isn&#8217;t an easy way to change a comment&#8217;s type after it has been saved. That&#8217;s why it&#8217;s important to select the comment type for Chat Catcher comments before they&#8217;re posted. To select the Chat Catcher comment type, navigate to the Chat Catcher Settings page and select from the list. If your blog receives a moderate amount of regular comments, I recommend separating your Chat Catcher comments so that they do not appear inline with regular comments. Use the Trackback or Custom Trackback (available in <a href="http://wordpress.org/extend/plugins/chatcatcher">Chat Catcher ver. 2.75</a>) type to separate the Chat Catcher comments. It&#8217;s important to note that you may need to modify your theme depending on the choice you make. Your readers, however, will appreciate the effort.</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/06/windowslivewriter6d8516facdbf-13b53cccommenttype-2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="168" alt="cccommenttype" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/06/windowslivewriter6d8516facdbf-13b53cccommenttype-thumb.png" width="579" border="0"></a> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3>Modifying the Comment Display</h3>
<p>Open the file called comments.php in your current theme. Comments are often displayed using a &#8220;loop&#8221; with a &#8220;foreach&#8221; statement. An example is shown below:</p>
<pre>
<pre class="brush: php">&lt;ol id=&quot;commentlist&quot;&gt;
&lt;?php foreach ($comments as $comment) : ?&gt;
	&lt;li &lt;?php comment_class(); ?&gt; id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;&gt;
	&lt;?php echo get_avatar( $comment, 32 ); ?&gt;
	&lt;?php comment_text() ?&gt;
	&lt;p&gt;&lt;cite&gt;&lt;?php comment_type(_c(&#039;Comment|noun&#039;), __(&#039;Trackback&#039;), __(&#039;Pingback&#039;)); ?&gt; &lt;?php _e(&#039;by&#039;); ?&gt; &lt;?php comment_author_link() ?&gt; — &lt;?php comment_date() ?&gt; @ &lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php comment_time() ?&gt;&lt;/a&gt;&lt;/cite&gt; &lt;?php edit_comment_link(__(&quot;Edit This&quot;), &#039; |&#039;); ?&gt;&lt;/p&gt;
	&lt;/li&gt;
&lt;?php endforeach; ?&gt;
&lt;/ol&gt;</pre>
</pre>
<p>In Version 2.7 of WordPress, a function was added to display the comments without a loop. Although the function is simpler to code, it does make it more difficult to customize the comment layout.</p>
<p>Using wp_list_comments():</p>
<pre>
<pre class="brush: php">	&lt;ol class=&quot;commentlist&quot;&gt;
	&lt;?php wp_list_comments(); ?&gt;
	&lt;/ol&gt;</pre>
</pre>
<p>Now that you&#8217;ve seen the standard code, it&#8217;s time to replace it. Let&#8217;s copy the delivered code and change it to separate different comment types. Keep in mind that your existing comments.php may have special formatting or the code may already be set to separate the comments and trackbacks.&nbsp; Make sure you have a backup of comments.php so that you can recreate the original and incorporate theme-specific coding if necessary.</p>
<p>The code displayed below is from a comment loop, modified to separate comments and trackbacks:</p>
<pre>
<pre class="brush: php">&lt;ol id=&quot;commentlist&quot;&gt;
&lt;?php
      $wp_query-&gt;comments_by_type = &amp;separate_comments($comments);
      $comments_by_type = &amp;$wp_query-&gt;comments_by_type;
?&gt;
&lt;?php foreach ($comments as $comment) : ?&gt;
&lt;?php if($comment-&gt;comment_type == &#039;&#039;) : ?&gt;
&lt;li &lt;?php comment_class(); ?&gt; id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;&gt;
	&lt;?php echo get_avatar( $comment, 32 ); ?&gt;
	&lt;?php comment_text() ?&gt;
	&lt;p&gt;&lt;cite&gt;&lt;?php comment_type(_c(&#039;Comment|noun&#039;), __(&#039;Trackback&#039;), __(&#039;Pingback&#039;)); ?&gt; &lt;?php _e(&#039;by&#039;); ?&gt; &lt;?php comment_author_link() ?&gt; — &lt;?php comment_date() ?&gt; @ &lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php comment_time() ?&gt;&lt;/a&gt;&lt;/cite&gt; &lt;?php edit_comment_link(__(&quot;Edit This&quot;), &#039; |&#039;); ?&gt;&lt;/p&gt;
	&lt;/li&gt;
&lt;?php endif; ?&gt;
&lt;?php endforeach; ?&gt;
&lt;/ol&gt;
&lt;ol class=&quot;commentlist&quot;&gt;
&lt;?php if(count($comments_by_type[&#039;trackback&#039;]) &gt; 0 || count($comments_by_type[&#039;pingback&#039;]) &gt; 0) : ?&gt;
&lt;h3&gt;Trackbacks&lt;/h3&gt;
&lt;?php endif; ?&gt;
&lt;?php foreach ($comments_by_type[&#039;trackback&#039;] as $comment) : ?&gt;
	&lt;li &lt;?php comment_class(); ?&gt; id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;&gt;
	&lt;?php echo get_avatar( $comment, 32 ); ?&gt;
	&lt;?php comment_text() ?&gt;
	&lt;p&gt;&lt;cite&gt;&lt;?php comment_type(_c(&#039;Comment|noun&#039;), __(&#039;Trackback&#039;), __(&#039;Pingback&#039;)); ?&gt; &lt;?php _e(&#039;by&#039;); ?&gt; &lt;?php comment_author_link() ?&gt; — &lt;?php comment_date() ?&gt; @ &lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php comment_time() ?&gt;&lt;/a&gt;&lt;/cite&gt; &lt;?php edit_comment_link(__(&quot;Edit This&quot;), &#039; |&#039;); ?&gt;&lt;/p&gt;
	&lt;/li&gt;
&lt;?php endforeach; ?&gt;
&lt;/ol&gt;</pre>
</pre>
<p>This example shows how to separate comments and trackbacks using the wp_list_comments() function:</p>
<pre>
<pre class="brush: php"> 	&lt;ol class=&quot;commentlist&quot;&gt;
	&lt;?php wp_list_comments(&#039;type=comment&#039;); ?&gt;
	&lt;/ol&gt; 

      &lt;?php
      $wp_query-&gt;comments_by_type = &amp;separate_comments($comments);
      $comments_by_type = &amp;$wp_query-&gt;comments_by_type;
      if(count($comments_by_type[&#039;trackback&#039;]) &gt; 0 || count($comments_by_type[&#039;pingback&#039;]) &gt; 0)
      {
          echo &#039;&lt;h3&gt;Trackbacks&lt;/h3&gt;&#039;;
      }
      ?&gt;
      &lt;ol class=&quot;commentlist&quot;&gt;
	&lt;?php wp_list_comments(&#039;type=trackback&#039;); ?&gt;
      &lt;/ol&gt;</pre>
</pre>
<p>Save the comments.php file and view a blog post. The comments and trackbacks/pingbacks should be neatly separated.</p>
<h3>Separating Chat Catcher Comments</h3>
<p>If you selected &#8220;Trackback&#8221; on the Chat Catcher settings page, the Chat Catcher comments will display under the Trackbacks heading. If you would like to further separate Chat Catcher comments, you can select the &#8220;Custom Trackback&#8221; type and modify your theme.</p>
<p>Modifying your theme for Custom Trackbacks requires the same type of coding as was used to separate regular trackbacks. Instead of specifying &#8216;trackback&#8217; in the code, you&#8217;ll use a custom type called &#8216;ctrackback&#8217;. </p>
<p>For the loop-style comment display, simply copy the trackback section and change the comment types.  Change <strong>$comments_by_type['trackback']</strong> to <strong>$comments_by_type['ctrackback']</strong>:</p>
<pre>
<pre class="brush: php">&lt;ol class=&quot;commentlist&quot;&gt;
&lt;?php if(count($comments_by_type[&#039;ctrackback&#039;]) &gt; 0 ) : ?&gt;
&lt;h3&gt;Social Media Comments&lt;/h3&gt;
&lt;?php endif; ?&gt;
&lt;?php foreach ($comments_by_type[&#039;ctrackback&#039;] as $comment) : ?&gt;
	&lt;li &lt;?php comment_class(); ?&gt; id=&quot;comment-&lt;?php comment_ID() ?&gt;&quot;&gt;
	&lt;?php echo get_avatar( $comment, 32 ); ?&gt;
	&lt;?php comment_text() ?&gt;
	&lt;p&gt;&lt;cite&gt;&lt;?php comment_type(_c(&#039;Comment|noun&#039;), __(&#039;Trackback&#039;), __(&#039;Pingback&#039;)); ?&gt; &lt;?php _e(&#039;by&#039;); ?&gt; &lt;?php comment_author_link() ?&gt; — &lt;?php comment_date() ?&gt; @ &lt;a href=&quot;#comment-&lt;?php comment_ID() ?&gt;&quot;&gt;&lt;?php comment_time() ?&gt;&lt;/a&gt;&lt;/cite&gt; &lt;?php edit_comment_link(__(&quot;Edit This&quot;), &#039; |&#039;); ?&gt;&lt;/p&gt;
	&lt;/li&gt;
&lt;?php endforeach; ?&gt;
&lt;/ol&gt;</pre>
</pre>
<p>&nbsp;</p>
<p>If you are using the wp_list_comments() function, copy the code and change the comment type.   Change <strong>$comments_by_type['trackback']</strong> to <strong>$comments_by_type['ctrackback']</strong> and change <strong>&#8216;type=trackback&#8217;</strong> to <strong>&#8216;type=ctrackback&#8217;</strong>:</p>
<pre>
<pre class="brush: php">
 &lt;?php
      if(count($comments_by_type[&#039;ctrackback&#039;]) &gt; 0)
      {
          echo &#039;&lt;h3&gt;Social Media Comments&lt;/h3&gt;&#039;;
      }
?&gt;
&lt;ol class=&quot;commentlist&quot;&gt;

&lt;?php wp_list_comments(&#039;type=ctrackback&#039;); ?&gt;

&lt;/ol&gt;</pre>
</pre>
<p>&nbsp;</p>
<p>As you&#8217;ve seen, it&#8217;s very easy to modify the comment section of WordPress through your theme.&nbsp; Although you usually won&#8217;t be forced to make these changes, it&#8217;s a good idea to at least consider them.&nbsp; If you don&#8217;t feel comfortable making these changes, perhaps the best way to handle this is to ask a friend for help.&nbsp; As a last resort, you can always search for a new theme with better comment handling.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3ed2d90e-468f-40bf-be8f-5f2161d4ccd6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Chat%20Catcher" rel="tag">Chat Catcher</a>,<a href="http://technorati.com/tags/Twitter" rel="tag">Twitter</a>,<a href="http://technorati.com/tags/FriendFeed" rel="tag">FriendFeed</a>,<a href="http://technorati.com/tags/identi.ca" rel="tag">identi.ca</a>,<a href="http://technorati.com/tags/comments" rel="tag">comments</a>,<a href="http://technorati.com/tags/blog" rel="tag">blog</a>,<a href="http://technorati.com/tags/trackbacks" rel="tag">trackbacks</a></div></p>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D728&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D728&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D728&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D728&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=728</wfw:commentRss>
		</item>
		<item>
		<title>Job Posting: We’re Looking for a Know-It-All. No, Really, We Are.</title>
		<link>http://www.voiceoftech.com/swhitley/?p=727</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=727#comments</comments>
		<pubDate>Tue, 23 Jun 2009 17:22:36 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=727</guid>
		<description><![CDATA[I ran across this job posting and would love to repost it so that someone could take advantage of the opportunity.&#160; Unfortunately, Gattaca is still a few years away and all of Superman’s phone booths have been decommissioned.&#160; I realize that recruiters often start with a best set of qualifications and then settle for less, [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across this job posting and would love to repost it so that someone could take advantage of the opportunity.&#160; Unfortunately, Gattaca is still a few years away and all of Superman’s phone booths have been decommissioned.&#160; I realize that recruiters often start with a best set of qualifications and then settle for less, but shouldn’t the requirements track a little closer to reality?</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><strong>Software Engineer 1      <br /></strong></p>
<p><strong>Job Description:</strong>&#160; Applicant should have experience in computer and network security. Applicant should have experience in the evaluation of system security such as vulnerability assessments and/or penetration testing Competence in the setup and administration of Linux (.rpm and .deb flavors), FreeBSD, OpenBSD, Windows (XP, Server), Solaris (9 and 10), OS X and ability to learn less mainstream operating systems. Experience configuring and building OS kernels. Experience configuring and building applications from source code. Experience with the setup and configuration of LANs including: Routers, managed switches, IP subnets, Firewalls and other infrastructure devices. Physical setup of networks. Experience setting up *nix network services including: Apache, Samba, NFS, YP, print services (LPD, CUPS), DHCP, DNS (Bind), IPSec and others. Setting up Windows services including: file shares, printer shares, Active Directory, IIS, DNS and others. Setup and development of websites and back end services including: CGI, SQL databases (MySQL, Postgress, MSSQL, Oracle), LAMP, PHP, Perl, HTML, DHTML, ASP, Java Script (AJAX). Configuration and setup of PCs, Mac and SPARC systems including: installation of cards (network, video, etc), memory, configuration of BIOS or firmware settings. Ability to diagnose computer and infrastructure device failures (e.g. power supply, motherboard, memory). Experience repairing computers (e.g. installing new motherboards, power supplies, etc) Programming experience with C/C++, Perl, Ruby, Python, assembly, Java, VB/Visual Studio, shell and BAT scripts. Experience with security tools such as: pf, IP tables/Netfilter, ISA, Nessus, Metasploit, Eeye Retina, ISS, Core Impact, Nmap, P0f, Nikto, miscellaneous fuzzers, Bactrack live CD, Netstumbler, Kismet, AirCrack, Airsnort, L0pthcrack, John the Ripper, rainbow crackers, Tr. Position requires ability to obtain Interim and/or Final Clearances (post start) - US Citizenship required. Applicants MUST include their Security Clearance Level, Investigation Type and Investigation Date clearly on their resume.</p>
<p><strong>Requirements:      <br /></strong>Education Requirements:Bachelor, Master or Doctorate of Science degree from an accredited course of study, in engineering, computer science, mathematics, physics or chemistry. ABET is the preferred, although not required, accreditation standard.2     <br />Security Clearance Requirement:Ability to Obtain a Clearance - US Citizenship Required</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>&#160;</p>
<p>I’m guessing they either already have someone and this was posted for compliance purposes, or the recruiter combined every IT post they’ve ever created and they have no idea what type of candidate they need.&#160; If you do happen to match these qualifications, please apply to Boeing here - <a href="http://www.techcareers.com/JS/General/Job.asp?id=20411505">http://www.techcareers.com/JS/General/Job.asp?id=20411505</a>.</p>
<p>Let me know if you make it so I can create a shrine for you here in my cubicle.</p>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D727&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D727&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D727&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D727&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=727</wfw:commentRss>
		</item>
		<item>
		<title>Chat Catcher: Catching More of the Conversation</title>
		<link>http://www.voiceoftech.com/swhitley/?p=726</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=726#comments</comments>
		<pubDate>Sun, 14 Jun 2009 07:15:35 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=726</guid>
		<description><![CDATA[How many times have you announced a new blog post on Twitter, and rather than commenting on your blog, people tweet their comments?&#160; If those tweets contain links to your post, Chat Catcher will capture them for you, but what if the tweets don&#8217;t have links?&#160; Now, with a new feature called Chat Threads, those [...]]]></description>
			<content:encoded><![CDATA[<p>How many times have you announced a new blog post on Twitter, and rather than commenting on your blog, people tweet their comments?&#160; If those tweets contain links to your post, <a href="http://chatcatcher.com">Chat Catcher</a> will capture them for you, but what if the tweets don&#8217;t have links?&#160; Now, with a new feature called Chat Threads, those tweets will be captured as well.</p>
<p>The example below shows a conversation that occurred on Twitter around a blog post that was written by Neville Hobson (<a href="http://www.nevillehobson.com/2009/06/12/twitter-drives-3m-sales-for-dell/">Dell&#8217;s Twitter Sales</a>).&#160; The first tweet (actually a retweet) contained a direct link to the original blog post.&#160; That first tweet would have always been captured by Chat Catcher.&#160; With the new Chat Threads feature, replies to those tweets are captured as well, even though they don&#8217;t contain links to the blog post.</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/profile-photo-normal.jpg"><img title="Profile_photo_normal" style="border-right: 0px; border-top: 0px; display: inline; margin: 10px; border-left: 0px; border-bottom: 0px" height="52" alt="Profile_photo_normal" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/profile-photo-normal-thumb.jpg" width="52" align="left" border="0" /></a> </p>
<ul>
<li>
<p><a href="http://twitter.com/jjdeeleythinks">jjdeeleythinks</a>: RT <a href="http://twitter.com/Hitwise_UK">@Hitwise_UK</a>: Dell&#8217;s Twitter sales (through <a href="http://twitter.com/DellOutlet">@DellOutlet</a>) have now reached $3m <a href="http://bit.ly/SRsBh">http://bit.ly/SRsBh</a> (blog post by <a href="http://twitter.com/jangles">@jangles</a>)&#160; </p>
<ul>
<li>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/bear-normal.jpg"><img title="bear_normal" style="border-right: 0px; border-top: 0px; display: inline; margin: 10px; border-left: 0px; border-bottom: 0px" height="52" alt="bear_normal" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/bear-normal-thumb.jpg" width="52" align="left" border="0" /></a> </p>
<p><a href="http://twitter.com/theraromachine">theraromachine</a>: <a href="http://twitter.com/jjdeeleythinks">@jjdeeleythinks</a> Dell say $2million&#8230; since 2007 (<a href="http://tinyurl.com/nh6a82">http://tinyurl.com/nh6a82</a> &#8230; so that&#8217;s what between 2,000 - 3,000 laptops? Not amazing.&#160; </p>
</li>
<li>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/profile-photo-normal1.jpg"><img title="Profile_photo_normal" style="border-right: 0px; border-top: 0px; display: inline; margin: 10px; border-left: 0px; border-bottom: 0px" height="52" alt="Profile_photo_normal" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/profile-photo-normal-thumb1.jpg" width="52" align="left" border="0" /></a> </p>
<p><a href="http://twitter.com/jjdeeleythinks">jjdeeleythinks</a>: <a href="http://twitter.com/theraromachine">@theraromachine</a> not sure its quite that underwhelming. Selling on a relatively new channel is still interesting + how many leads generated? </p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/bear-normal1.jpg"><img title="bear_normal" style="border-right: 0px; border-top: 0px; display: inline; margin: 10px; border-left: 0px; border-bottom: 0px" height="52" alt="bear_normal" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/07/bear-normal-thumb1.jpg" width="52" align="left" border="0" /></a> </p>
</li>
<li>
<p><a href="http://twitter.com/theraromachine">theraromachine</a>: <a href="http://twitter.com/jjdeeleythinks">@jjdeeleythinks</a> globally though? I guess it only gets better - and probably much better return than on advertising&#8230; </p>
<p>&#160;</p>
</li>
</ul>
</li>
</ul>
<p>&#160;</p>
<p>Chat Threads round out the conversation.&#160; In just this one example, the blog author might have missed three-quarters of what was said.</p>
<p>The Chat Threads feature has just been introduced and we will be closely monitoring its progress.&#160; Don&#8217;t expect to see these types of tweets appear for all blog posts, but you may start to notice them with your more popular posts.</p>
<p>As always, I look forward to your comments and suggestions.</p>
<p>&#160;</p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:09768317-d14d-4486-be5a-f0d053f7ad90" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Twitter" rel="tag">Twitter</a>,<a href="http://technorati.com/tags/Chat+Catcher" rel="tag">Chat Catcher</a>,<a href="http://technorati.com/tags/Blog+Comments" rel="tag">Blog Comments</a></div>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D726&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D726&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D726&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D726&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=726</wfw:commentRss>
		</item>
		<item>
		<title>I was a victim of the Twitpocalypse</title>
		<link>http://www.voiceoftech.com/swhitley/?p=720</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=720#comments</comments>
		<pubDate>Sun, 14 Jun 2009 03:03:05 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=720</guid>
		<description><![CDATA[If you use Twitter, no doubt you&#8217;ve read something about the &#8220;Twitpocalypse&#8221; that occurred this week.&#160; It&#8217;s one of those things that a regular Twitter user should never really have to know anything about, except that the problem can (and actually did) cause a few applications to stop working.
I made it through relatively unscathed.&#160; The [...]]]></description>
			<content:encoded><![CDATA[<p>If you use Twitter, no doubt you&#8217;ve read something about the &#8220;<a href="http://www.macworld.com/article/141146/2009/06/twitpocalypse_twitter.html">Twitpocalypse</a>&#8221; that occurred this week.&nbsp; It&#8217;s one of those things that a regular Twitter user should never really have to know anything about, except that the problem can (and actually did) cause a few applications to stop working.</p>
<p>I made it through relatively unscathed.&nbsp; The majority of my Twitter programs were fine.&nbsp; I learned a long time ago to define my ids as character types.&nbsp; This provides the greatest degree of flexibility if a another service implements an unexpected change.</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/06/windowslivewriterf5a9278cca13-bc0dbringbeatback.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="189" alt="bringbeatback" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/06/windowslivewriterf5a9278cca13-bc0dbringbeatback-thumb.png" width="244" align="left" border="0"></a> To understand the Twitpocalypse, it&#8217;s helpful to know how Twitter stores your tweets.&nbsp; A numeric id is assigned to every tweet in the Twitter system.&nbsp; Presumably, the tweet ids began at the number 1 and have been incrementing ever since.&nbsp; In the world of computing, numbers can be stored as different types and each type has a maximum value.&nbsp; At certain points, the tweet ids will exceed the limits of each numeric type.&nbsp; Although this doesn&#8217;t directly affect the Twitter service (they&#8217;ve used numeric types that have maximums well beyond the current ids), it can have an impact on services that download tweets.&nbsp; Some services may have defined the tweet id as a numeric type that can&#8217;t handle the larger numbers.&nbsp; </p>
<p>Picture a classroom where a teacher uses one of those fancy calculators with a display that goes well beyond the basic eight digits.&nbsp; Most of the students use the same calculator, but one of the students didn&#8217;t get the note and bought a simple eight-digit device.&nbsp; The student with the basic calculator will do fine for most of the class and will have no problems keeping up with all of the computations.&nbsp; Then one fateful day, the teacher puts up a nine-digit problem.&nbsp; Even though everyone else is fine, the one student&#8217;s work is kaput.&nbsp; (We might stop here to discuss the value of throwing away all of the calculators and doing the math by hand, but that&#8217;s a different post.)</p>
<p>So to complete the example, the teacher (Twitter) can continue to calculate numbers on into the future, but the student with the basic calculator is stuck (Twitterific) until he buys a calculator that can handle the additional digits.&nbsp; Most Twitter applications developers have been aware of this situation for awhile and it should have come as no surprise.</p>
<p>I did have one interesting issue pop up (I won&#8217;t mention the application since I&#8217;m its only user).&nbsp; The bug was something that I wouldn&#8217;t necessarily call obvious, and although in hindsight it seems simple enough, it was a little tricky to figure out.&nbsp; This bug also highlights the fact that you can run into problems with your code even if the data field is defined correctly in the database.</p>
<blockquote><p>I also treated the id as a numeric value and didn&#8217;t place quotes around it.</p>
</blockquote>
<p>The section of code that was causing an error contained several select statements, an update, and an insert.&nbsp; The error message that I received was roughly along these lines, <strong>&#8220;varchar could not be converted to int and resulted in an overflow error.&#8221;</strong>&nbsp; I was expecting one of the update or insert statements to be the cause.&nbsp; I spent several minutes scratching my head while trying to figure out why everything looked right and still wasn&#8217;t working.&nbsp; As it turns out, it was the select statement that was throwing the error.&nbsp; That was a surprise, but how did it happen?</p>
<p>Within my code, I had previous pulled a twitter id from the database in one of the early select statements.&nbsp; Since this id didn&#8217;t come from an external source, I wasn&#8217;t performing a check of the input.&nbsp; I also treated the id as a numeric value and didn&#8217;t place quotes around it.&nbsp; The statement worked fine until the Twitpocalypse.</p>
<p><font color="#0080ff">&#8220;select * from {table} where id = 2560000000&#8243; </font></p>
<p>&#8220;id&#8221; is defined as varchar in the database &#8212; notice the absence of quotes around the literal, 2560000000.</p>
<p>My lazy programming worked because the database was recognizing the number (sans the quotation marks) as an integer, which it then converted to varchar for the comparison to id.&nbsp; After the Twitpocalypse, the number was too large to be converted to a signed integer.&nbsp; Instead of simply converting the number directly to a character or a different numeric type, the database threw an error and the select statement failed.</p>
<p>So, obviously I should I have used quotation marks in the first place, or better yet, I should have used parameters.&nbsp; In a rush in the wee hours of the night, we don&#8217;t always write perfect code.&nbsp; This is a great reminder for me to skip shortcuts and hopefully it will help someone else avoid this issue in the future.</p>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cab52211-83b8-45e1-a86d-0a9a7e9932df" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/twitter" rel="tag">twitter</a>,<a href="http://technorati.com/tags/programming" rel="tag">programming</a>,<a href="http://technorati.com/tags/twitpocalypse" rel="tag">twitpocalypse</a></div>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D720&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D720&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D720&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D720&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=720</wfw:commentRss>
		</item>
		<item>
		<title>Chat Catcher: Evolution</title>
		<link>http://www.voiceoftech.com/swhitley/?p=717</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=717#comments</comments>
		<pubDate>Wed, 27 May 2009 06:25:37 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=717</guid>
		<description><![CDATA[ I&#8217;ve been working feverishly on my main development project, Chat Catcher.&#160; That&#8217;s the service that scans Twitter, Indenti.ca, and FriendFeed for blog comments.&#160; When Chat Catcher finds a comment, it posts it back to the original blog post.&#160; If you&#8217;ve spent any time here, you&#8217;ll see Twitter comments on many of the posts; that&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/05/windowslivewriterchatcatcherevolution-1496adna-2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="124" alt="dna" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/05/windowslivewriterchatcatcherevolution-1496adna-thumb.jpg" width="124" align="left" border="0"></a> I&#8217;ve been working feverishly on my main development project, <a href="http://chatcatcher.com/">Chat Catcher</a>.&nbsp; That&#8217;s the service that scans <a href="http://twitter.com">Twitter</a>, <a href="http://identi.ca">Indenti.ca</a>, and <a href="http://friendfeed.com">FriendFeed</a> for blog comments.&nbsp; When Chat Catcher finds a comment, it posts it back to the original blog post.&nbsp; If you&#8217;ve spent any time here, you&#8217;ll see Twitter comments on many of the posts; that&#8217;s Chat Catcher.&nbsp; It&#8217;s a fun project, but I haven&#8217;t written much about it&#8230;because I&#8217;ve been working so hard on it.&nbsp; I even skipped an entire chapter of Chat Catcher&#8217;s evolution as it pulled itself from the brink of the deadpool and returned, Sawyer-esque to <a href="http://www.answers.com/topic/the-adventures-of-tom-sawyer-novel-1">witness its own funeral</a>. </p>
<p>But the past couple of weeks have been a bit unreal for me.&nbsp; When I was having trouble funding Chat Catcher, Neville Hobson, a famous blogger and happy Chat Catcher user, wrote a post called <a href="http://www.nevillehobson.com/2009/05/08/chat-catcher-needs-a-white-knight/">Chat Catcher Needs a White Knight</a>.&nbsp; Within a few days, that post brought me together with an extraordinary group of gentlemen in the UK.&nbsp; The relationship has resulted in the following announcement:</p>
<blockquote><p>Chat Catcher is pleased to announce the completion of an investment round with Ocasta Labs, an early stage technology investment group.&nbsp; Ocasta Labs have injected both funds and resources to extend the Chat Catcher team and to accelerate development of the service.</p>
</blockquote>
<p>So the big news is that Chat Catcher will not only continue to exist, it will thrive.&nbsp; Ocasta Labs will help me strengthen the Chat Catcher service, and we&#8217;ll even evolve the service so that it keeps pace with the constantly changing world of social media.
<p>If you have a blog, any type of blog, <a href="http://chatcatcher.com">give Chat Catcher a try</a>.&nbsp; There&#8217;s a special plugin for WordPress and John Eckman recently released a Drupal Module.&nbsp; If you download the <a href="http://wordpress.org/extend/plugins/chatcatcher">WordPress plugin</a>, there&#8217;s even a framework that allows you to build a custom plugin for other types of blogs [yes, I know I need to document this].
<p>For me, this is an exciting service, and I&#8217;m happy to be joining forces with some really exceptional people who&#8217;ll help me expand its features.&nbsp; Do I know exactly what those features are today? &#8212; honestly no, but there are some amazing possibilities.&nbsp; It may sound odd to most people, but writing code and developing systems is fun, and I&#8217;m having a blast working through the evolution of Chat Catcher.</p>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4ae41f58-6d72-4899-bba7-8c20e2117891" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Twitter" rel="tag">Twitter</a>,<a href="http://technorati.com/tags/Chat%20Catcher" rel="tag">Chat Catcher</a>,<a href="http://technorati.com/tags/FriendFeed" rel="tag">FriendFeed</a>,<a href="http://technorati.com/tags/Indenti.ca" rel="tag">Indenti.ca</a>,<a href="http://technorati.com/tags/blog" rel="tag">blog</a>,<a href="http://technorati.com/tags/comments" rel="tag">comments</a>,<a href="http://technorati.com/tags/Ocasta%20Labs" rel="tag">Ocasta Labs</a>,<a href="http://technorati.com/tags/WordPress" rel="tag">WordPress</a>,<a href="http://technorati.com/tags/Drupal" rel="tag">Drupal</a>,<a href="http://technorati.com/tags/trackback" rel="tag">trackback</a>,<a href="http://technorati.com/tags/tweetback" rel="tag">tweetback</a></div>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D717&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D717&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D717&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D717&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=717</wfw:commentRss>
		</item>
		<item>
		<title>Our Trip to the Netherlands</title>
		<link>http://www.voiceoftech.com/swhitley/?p=712</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=712#comments</comments>
		<pubDate>Thu, 23 Apr 2009 06:02:59 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=712</guid>
		<description><![CDATA[They say you never forget your first sleepless night in Amsterdam&#8230;or your second&#8230;or your third.&#160; From the raving drunks, to the trolley line, right down to the chirping birdies, the first few nights of the family vacation were a challenge.&#160; Of course I can laugh about it now, but I still can&#8217;t believe I had [...]]]></description>
			<content:encoded><![CDATA[<p>They say you never forget your first sleepless night in Amsterdam&#8230;or your second&#8230;or your third.&nbsp; From the raving drunks, to the trolley line, right down to the chirping birdies, the first few nights of the family vacation were a challenge.&nbsp; Of course I can laugh about it now, but I still can&#8217;t believe I had to travel around the world to hear an American shouting in the streets at 3 a.m., &#8220;Come on down here!&nbsp; I&#8217;ll take you all on!&#8221;</p>
<p>Even with the lack of sleep and walking pneumonia, I still thoroughly enjoyed the city of Amsterdam.&nbsp; I am a sucker for period architecture and Amsterdam has some of the best preserved buildings that I&#8217;ve ever seen.&nbsp; The craftsmanship on display above every door and every window is simply breathtaking.&nbsp; I would return to the city for those views alone.</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/windowslivewriterourtriptothenetherlands-14411amsterdam-bicycles-2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="271" alt="amsterdam-bicycles" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/windowslivewriterourtriptothenetherlands-14411amsterdam-bicycles-thumb.jpg" width="404" border="0"></a> </p>
<p>I&#8217;ll always remember Amsterdam for its bicycles.&nbsp; There are bicycles everywhere and bicycle lanes are often built into the sidewalks so that there is very little room left for pedestrians.&nbsp; You&#8217;re not safe when you make your way to the sidewalk.&nbsp; It&#8217;s very easy to forget yourself and end up standing right in the middle of a bike lane.&nbsp; I&#8217;m glad my children are older.&nbsp; I really wouldn&#8217;t want to have taken a four-year-old there and be in a constant state of panic.&nbsp; Even with all the warnings, my son and I both forgot at least once and ended up standing in the path of oncoming bike traffic.</p>
<p>As much as the people of Amsterdam love their bikes, the bicycles themselves are often old and battered.&nbsp; Most of the bikes look like something that would have been vintage thirty years ago.&nbsp; I believe this is due to the high number of bicycle thefts.&nbsp; I&#8217;ve read that when someone&#8217;s bike is stolen it&#8217;s common for that person to simply steal someone else&#8217;s bike.&nbsp; It&#8217;s sort of like the Zip Car concept without the messy paperwork and money exchange.</p>
<p>We visited Anne Frank&#8217;s House, toured the Delft pottery factory, and rode the train through the tulip fields, but my favorite memory comes from a simpler excursion.&nbsp; One afternoon we took a paddleboat out on the canals of Amsterdam.&nbsp; We paddled up and down various canals, looking at the houseboats and viewing the buildings from an angle that you just can&#8217;t get from the streets.&nbsp; What a great experience!</p>
<p>After a few days in Amsterdam, we rented a car and drove to a <a href="http://www.centerparcs.com/" target="_blank">Center Parcs</a> near Eidnhoven.&nbsp; Center Parcs are wooded resorts that are very popular in Europe.&nbsp; In addition to the usual array of resort activities, this one featured indoor skiing.&nbsp; This Center Parcs was similar to the one that we&#8217;d stayed at in France a few years ago and we felt right at home.&nbsp; We rode bikes around the park and met some of the other guests.&nbsp; I even became hero for a day when an older woman asked for my help in removing a pigeon that had flown into her cabin (she was deathly afraid of birds).</p>
<p>While we were staying at the resort, we decided to take one of the days and head down to Brussels, Belgium, which was only about an hour away.&nbsp; Using maps and trying to follow foreign road signs could have made the drive a knuckle-biter, but luckily Cybelle decided to plugin our coordinates into the car&#8217;s navigation system and it was a breeze.&nbsp; It led us straight to Brussels and back and was honestly a lifesaver.&nbsp; </p>
<p>We had talked about visiting Luxembourg while we were in the area, but we just ran out of time.&nbsp; So instead of making the Benelux trip that is so often part of travel packages, we at least enjoyed the Bene-.</p>
<p>The food was good, the transportation was excellent, and the city is beautiful.&nbsp; And no, we did not visit the Red Light District, I did not munch on special brownies, and I did not visit a coffee shop.&nbsp; Really, the jokes get old. :)&nbsp; Would I visit Amsterdam again?&nbsp; Absolutely, but not flying KLM again (and that&#8217;s a completely different story).</p>
<p>&nbsp;</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/windowslivewriterourtriptothenetherlands-14411img-1389-2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="img_1389" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/windowslivewriterourtriptothenetherlands-14411img-1389-thumb.jpg" width="364" border="0"></a></p>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D712&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D712&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D712&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D712&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=712</wfw:commentRss>
		</item>
		<item>
		<title>Twitter Connect for WordPress</title>
		<link>http://www.voiceoftech.com/swhitley/?p=701</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=701#comments</comments>
		<pubDate>Tue, 21 Apr 2009 17:48:46 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=701</guid>
		<description><![CDATA[The latest version of Twit Connect allows any blog owner to self-host the entire oAuth connection process.&#160; The plugin now works just like Facebook Connect.

Install the plugin. 
Register your blog on Twitter.com and retrieve your Consumer Key and Consumer Secret. 
Plug those items into Twit Connect’s configuration page and you will have a complete and [...]]]></description>
			<content:encoded><![CDATA[<p>The latest version of Twit Connect allows any blog owner to self-host the entire oAuth connection process.&#160; The plugin now works just like Facebook Connect.</p>
<ol>
<li>Install the <a href="http://wordpress.org/extend/plugins/twitconnect" target="_blank">plugin</a>. </li>
<li><a href="http://twitter.com/oauth" target="_blank">Register your blog</a> on Twitter.com and retrieve your Consumer Key and Consumer Secret. </li>
<li>Plug those items into Twit Connect’s configuration page and you will have a complete and independent oAuth application. </li>
</ol>
<p>When your readers want to comment on a post, they’ll simply click on a button and provide their Twitter credentials to identify themselves.&#160; You’ll also see their Twitter avatar alongside the comments if you’ve setup avatar support on your blog.</p>
<p>I’ve left the option to continue to pass the oAuth process onto me, so you don’t have to register your blog with Twitter.</p>
<p>This version also sports a choice of two different buttons, the new button is from <a href="http://twibs.com/oAuthButtons.php" target="_blank">Peter Denton’s</a> “Signin with Twitter” button set.</p>
<p>You may notice that I haven’t implemented the “<a href="http://apiwiki.twitter.com/Sign-in-with-Twitter" target="_blank">Sign in with Twitter</a>” process.&#160; I will add that functionality later, however, I would like to spend more time testing that feature first.&#160; Although it has been reported as a “game changer,” leaving that piece out for now does not significantly change process flow.</p>
<p>&#160;</p>
<h2><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/twcconfig.png"><img title="twcconfig" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="439" alt="twcconfig" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/twcconfig-thumb.png" width="452" border="0" /></a> </h2>
<p>&#160;</p>
<h2>Filling out the Twitter Application Form</h2>
<p>The Twitter form was designed for applications, but it can work for your blog too.&#160; Please see the example below:</p>
<p>&#160;</p>
<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/twc1.png"><img title="twc1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="405" alt="twc1" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/04/twc1-thumb.png" width="484" border="0" /></a> </p>
<h2>&#160;</h2>
<h2>Some Caveats</h2>
<p>Although I’m a big fan of the Twitter oAuth process and I’m really pleased with this plugin,I recognize that there are still things to consider when implementing this type of technology:</p>
<ul>
<li>An evil blog owner could capture a user’s oAuth token and secret and read private messages or add unauthorized tweets (if write access is granted). </li>
<li>A compromised blog could send a user’s oAuth token and secret to a hacker’s site. </li>
<li>A completely bogus blog could be setup to simply capture oAuth login information. </li>
</ul>
<p>With oAuth, we’ve at least eliminated the need for a user to provide a password.&#160; This is important since we know many users use the same password across multiple applications.&#160; It doesn’t, however, make the process completely foolproof and users will need to continue to watch the urls in their browsers and make sure they are signing into legitimate applications.</p>
<p>As always, education is an important part of this technology.&#160; Luckily, we have a great forum for providing that education.</p>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D701&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D701&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D701&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D701&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=701</wfw:commentRss>
		</item>
		<item>
		<title>Talk with you after April 10th</title>
		<link>http://www.voiceoftech.com/swhitley/?p=697</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=697#comments</comments>
		<pubDate>Wed, 01 Apr 2009 17:43:03 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=697</guid>
		<description><![CDATA[I won’t be checking e-mail, voicemail, or even Twitter! 
&#160;

Reference Lookup: Dictionary, Thesaurus, Encyclopedia, &#038; Morepowered by PostRef]]></description>
			<content:encoded><![CDATA[<p>I won’t be checking e-mail, voicemail, or even Twitter! </p>
<p>&#160;</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2008/06/gonefishing.gif" /></p>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D697&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D697&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D697&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D697&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=697</wfw:commentRss>
		</item>
		<item>
		<title>Chat Catcher’s Moving Parts</title>
		<link>http://www.voiceoftech.com/swhitley/?p=695</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=695#comments</comments>
		<pubDate>Tue, 31 Mar 2009 14:35:17 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=695</guid>
		<description><![CDATA[I&#8217;ve received a couple of emails recently from blog owners who have had issues with Chat Catcher.&#160; They may have seen several tweets on Twitter, but those tweets haven&#8217;t appeared on their blog.&#160; That can be frustrating.&#160; Now, from my perspective, that&#8217;s a good thing.&#160; It means bloggers have come to rely on Chat Catcher [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/03/windowslivewriterchatcatchersmovingparts-6ab9ccbbl-whitebg-2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 10px; border-right-width: 0px" height="86" alt="ccbbl_whitebg" src="http://www.voiceoftech.com/swhitley/wp-content/uploads/2009/03/windowslivewriterchatcatchersmovingparts-6ab9ccbbl-whitebg-thumb.png" width="104" align="left" border="0"></a>I&#8217;ve received a couple of emails recently from blog owners who have had issues with <a href="http://chatcatcher.com" target="_blank">Chat Catcher</a>.&nbsp; They may have seen several tweets on Twitter, but those tweets haven&#8217;t appeared on their blog.&nbsp; That can be frustrating.&nbsp; Now, from my perspective, that&#8217;s a good thing.&nbsp; It means bloggers have come to rely on Chat Catcher and it&#8217;s an important feedback tool, but then again, that&#8217;s not a comforting thought when you&#8217;re missing important comments.</p>
<p>I spent months developing, testing, and beta testing Chat Catcher.&nbsp; The core code is solid.&nbsp; It&#8217;s not perfect (like most applications) and there are always things that can be improved, but there are not that many true &#8220;bugs&#8221; that result in missed comment posts.&nbsp; So what&#8217;s happening?&nbsp; Why might I see a blog comment on Twitter that doesn&#8217;t make it to my blog?&nbsp; There are several points-of-failure outside of Chat Catcher.&nbsp; I hope this list will be helpful in explaining how some of these issues occur.</p>
<p><strong>Twitter Search </strong>- Twitter Search (or Summize) is the <strong>source of Chat Catcher&#8217;s data</strong>.&nbsp; If there are any issues, any lags, any slight outages, Chat Catcher will be affected.&nbsp; It&#8217;s possible to see something in your Twitter timeline that hasn&#8217;t made it yet to Twitter Search.&nbsp; Although Twitter Search is an excellent service and very reliable, it&#8217;s just as subject to issues as any other Internet application.</p>
<p><strong>Your Blog</strong> - If Chat Catcher finds a direct link to one of your blog posts in a tweet, it will lookup the post from your server.&nbsp; If your server is a little slow or perhaps unavailable at the time that Chat Catcher comes by, then Chat Catcher can&#8217;t pull the information that&#8217;s necessary to post the comment back to your blog.&nbsp; Your blog is an important part of the lookup phase.&nbsp; It doesn&#8217;t matter if the tweet contains a full link or a shortened URL.</p>
<p><strong>Url Shorteners</strong> - Normally, Chat Catcher can translate shortened URLs to long URLs for <strong>any service</strong>.&nbsp; The URL shortening services, however, play an extremely important role.&nbsp; The service (tinyurl.com, bit.ly, tr.im, is.gd, snipurl.com, etc.) must be functioning properly.&nbsp; Occasionally, these services have problems and Chat Catcher is unable to translate a shortened link.&nbsp; There are also certain services that don&#8217;t provide a standard redirect for the shortened URL to your blog.&nbsp; An example is Adjix.com.&nbsp; I recently worked with Adjix and setup Chat Catcher to use their specialized process, but there are other services that might require special tweaking too.&nbsp; It&#8217;s also possible that some services have blocked Chat Catcher.&nbsp; A URL shortening service provider could see Chat Catcher as a nuisance and actually block Chat Catcher from retrieving URLs.&nbsp; Although I don&#8217;t have this problem with the major vendors, it is possible that smaller providers might block Chat Catcher requests.</p>
<p><strong>Your Blog, Again</strong> - Chat Catcher posts comments to your blog.&nbsp; The comments can come through the WordPress plugin, the PHP script, a pingback, or a standard trackback.&nbsp; You can picture Chat Catcher just as you would any visitor to your blog.&nbsp; Chat Catcher pulls your blog up in a virtual browser and is subject to the same problems that a human visitor might have at your site.&nbsp; What if your blog is a little slow (due to taffic on your blog or a problem with your webhost)?&nbsp; How about new plugins or theme changes?&nbsp; Has your blog been hacked (I&#8217;ve seen many hacked blogs where the owner isn&#8217;t even aware of it)?&nbsp; What if you are in the process of publishing a new post just as Chat Catcher tries to post a comment?&nbsp; Your database doesn&#8217;t have to allow both updates to happen.&nbsp; Sometimes one of your visitor&#8217;s sessions will timeout during a comment post.&nbsp; The same thing can happen to Chat Catcher.</p>
<p>&nbsp;</p>
<p><strong>No Excuses</strong></p>
<p>The purpose of this post is not to excuse hiccups in the Chat Catcher process.&nbsp; It&#8217;s not perfect, but I&#8217;m constantly making improvements.&nbsp; There are many things that I can do to workaround the shortcomings, and I will develop those solutions.&nbsp; In the meantime, I hope this helps you understand a few of the challenges involved in running a service like Chat Catcher, and I hope you&#8217;ll understand if there are problems from time-to-time.&nbsp; I&#8217;ll work to the best of my ability to improve your experience and keep things running smoothly.</p>
<p>&nbsp;</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:385b48e8-6956-4314-ae3b-89286e7513f3" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/Chat%20Catcher" rel="tag">Chat Catcher</a>,<a href="http://technorati.com/tags/Twitter" rel="tag">Twitter</a>,<a href="http://technorati.com/tags/Short%20URLs" rel="tag">Short URLs</a>,<a href="http://technorati.com/tags/blog%20comments" rel="tag">blog comments</a></div>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D695&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D695&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D695&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D695&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=695</wfw:commentRss>
		</item>
		<item>
		<title>WordPress Plugin List Corruption</title>
		<link>http://www.voiceoftech.com/swhitley/?p=684</link>
		<comments>http://www.voiceoftech.com/swhitley/?p=684#comments</comments>
		<pubDate>Wed, 25 Mar 2009 05:38:28 +0000</pubDate>
		<dc:creator>swhitley</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.voiceoftech.com/swhitley/?p=684</guid>
		<description><![CDATA[If you see something like the line below at the top of your plugin list in WordPress, it probably means there&#8217;s some corruption in your Active Plugin array.&#160; The array is stored in the {wp}_options table under the option_key of &#8220;active_plugins&#8221; 
&#160;Warning: Illegal offset type in {yoursite}\wp-admin\includes\plugin.php on line 456


The code below will fix this [...]]]></description>
			<content:encoded><![CDATA[<p>If you see something like the line below at the top of your plugin list in WordPress, it probably means there&#8217;s some corruption in your Active Plugin array.&nbsp; The array is stored in the {wp}_options table under the option_key of &#8220;active_plugins&#8221; </p>
<blockquote><p>&nbsp;<b>Warning</b>: Illegal offset type in {yoursite}<b>\wp-admin\includes\plugin.php</b> on line <b>456</b></p>
</blockquote>
<p><strong></strong></p>
<p>The code below will fix this problem and leave all of your active plugins intact.</p>
<p>&nbsp;</p>
<h2>Hello Dolly</h2>
<p>Hello Dolly is a great little plugin that I&#8217;m sure you&#8217;re using right now.&nbsp; Since it&#8217;s already loaded and ready to go, it&#8217;s easy to add a little code to this plugin, activate it, and let it make our corrections.</p>
<p>On the plugin editor page, open Hello Dolly.&nbsp; Locate the lines below and add the lines in blue.&nbsp; Save the file.&nbsp; Go to the Plugin Installation page and activate the Hello Dolly plugin.&nbsp; You may need to click on a link so that the code will run.&nbsp; The error messages should disappear and all will be good again.&nbsp; Be sure to deactivate Hello Dolly and remove the code.&nbsp; That&#8217;s it!</p>
<pre>...</pre>
<pre>// This just echoes the chosen line, we'll position it later
function hello_dolly() {
	$chosen = hello_dolly_get_lyric();
        echo "&lt;p id='dolly'&gt;$chosen&lt;/p&gt;";
<font color="#0000ff">  </font></pre>
<pre><font color="#0000ff">        sw_plugins_fix(); //Copy This Line</font>
</pre>
<pre>} //Don't Copy this line. (It's already there.)

//Copy all of these lines.
<strong><font color="#0000ff">function sw_plugins_fix() {
	$current = get_option('active_plugins');
        $fixed = array();
        foreach ( $current as $plugin ) {
            if(!is_array($plugin))
            {
               array_push($fixed,$plugin);
            }
	}
	update_option('active_plugins', $fixed);
}</font>
</strong></pre>
<pre>...</pre>
<p>Reference Lookup: <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D684&lookup=&toolset=Dictionary">Dictionary</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D684&lookup=&toolset=Thesaurus">Thesaurus</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D684&lookup=&toolset=Encyclopedia">Encyclopedia</a>, <a href="http://www.postref.com/postref/?url=http%3A%2F%2Fwww.voiceoftech.com%2Fswhitley%2F%3Fp%3D684&lookup=">& More</a><br>powered by PostRef</p>]]></content:encoded>
			<wfw:commentRss>http://www.voiceoftech.com/swhitley/?feed=rss2&amp;p=684</wfw:commentRss>
		</item>
	</channel>
</rss>
