<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ThePizzy.net/blog &#187; beta</title>
	<atom:link href="http://thepizzy.net/blog/tag/beta/feed/" rel="self" type="application/rss+xml" />
	<link>http://thepizzy.net/blog</link>
	<description>Solving the complex in 140 characters or less...</description>
	<lastBuildDate>Mon, 02 Jan 2012 15:55:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>TweetSuite WordPress Plugin + Ping.fm (Preview)</title>
		<link>http://thepizzy.net/blog/2009/03/tweetsuite-wordpress-plugin-pingfm-preview/</link>
		<comments>http://thepizzy.net/blog/2009/03/tweetsuite-wordpress-plugin-pingfm-preview/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 16:41:23 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Ping.fm]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thought Experiments]]></category>
		<category><![CDATA[TweetSuite]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[dan zarrella]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[syndication]]></category>
		<category><![CDATA[tweetbacks]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=319</guid>
		<description><![CDATA[A couple weeks ago, I found out that Twitter had a Search feature that showed real-time tweets for a keyword. I gave it a little thought, considered what it would...]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago, I found out that <a href="http://twitter.com" target="_blank">Twitter</a> had a <a href="http://search.twitter.com" target="_blank">Search feature</a> that showed real-time tweets for a keyword. I gave it a little thought, considered what it would take to actually write the software &#8211; and then wised up, and decided to see if someone already did the hard work.</p>
<p>Sure enough, <a title="@danzarrella" href="http://twitter.com/danzarrella" target="_blank">Dan Zarrella</a> over at <a href="http://danzarrella.com/" target="_blank">danzarrella.com</a> had. He wrote one for <a href="http://danzarrella.com/tweetbacks-beta.html" target="_blank">Tweetbacks</a>, and then expanded on it with <a href="http://danzarrella.com/beyond-tweetbacks-introducing-tweetsuite.html" target="_blank">TweetSuite</a>. So I gave them a shot.</p>
<p>I started with Tweetbacks on the <a href="http://freeformfrog.com/blog" target="_blank">FreeformFrog.com Blog</a> and everything seemed to be working fine &#8211; until one day when the Tweetbacks stopped. It just stopped finding them &#8211; even though I knew they were getting tweeted &#8211; because I was using <a href="http://ping.fm" target="_blank">Ping.fm</a> to syndicate my blog posts to the appropriate social networks.</p>
<p>I gave it a couple weeks, and then decided I was going to fix it. I was tired of not having my TweetBacks working &#8211; especially during my efforts pushing a Social Networking campaign at job.</p>
<p>So, I added @danzarrella, and asked&#8230;</p>
<blockquote><p><span class="entry-content">@<a href="http://twitter.com/danzarrella">danzarrella</a> do you have plans to integrate ping.fm posting in TweetSuite? If not, mind if I take a crack at it?<br />
from @neotsn at <a class="entry-date" rel="bookmark" href="http://twitter.com/neotsn/status/1350750034"><span class="published">4:32 PM Mar 18th</span></a> from web</span></p></blockquote>
<p><span class="entry-content">A few minutes later, I got a response&#8230;</span></p>
<blockquote><p><span class="entry-content"><span class="entry-content">@<a href="http://twitter.com/neotsn">neotsn</a> go to town<br />
from @danzarrella at </span><span class="meta entry-meta"><a class="entry-date" rel="bookmark" href="http://twitter.com/danzarrella/status/1350761852"><span class="published">4:34 PM Mar 18th</span></a> from <a href="http://www.tweetdeck.com/">TweetDeck</a> <a href="http://twitter.com/neotsn/status/1350750034">in reply to neotsn</a></span></span></p></blockquote>
<p><span class="entry-content"><span class="meta entry-meta">Excellent&#8230;now I had his blessing to hack his codes. And so I have&#8230;<br />
</span></span></p>
<p><span class="entry-content"><span class="meta entry-meta"><span id="more-319"></span><br />
</span></span></p>
<h2><span class="entry-content"><span class="meta entry-meta">The download is coming soon</span></span></h2>
<h3><span class="entry-content"><span class="meta entry-meta">I have to get my Ping.fm API Key approved before anyone but me can install the plugin.<br />
</span></span></h3>
<p><span class="entry-content"><span class="meta entry-meta">And now I present to you a general overview of what I wanted to accomplish, and how I did it. (<strong>Please note, this is a GENERAL overview with some examples</strong> &#8211; it&#8217;s not meant to be a how-to, so don&#8217;t try to just copy/paste the samples &#8211; there is much more to do than can be explained here). Let&#8217;s get started&#8230;</span></span></p>
<h2><span class="entry-content"><span class="meta entry-meta">Objectives&#8230;</span></span></h2>
<ol>
<li><span style="text-decoration: underline;"><strong>Make it post through Ping.fm</strong></span> &#8211; I syndicate all my stuff through <a href="http://twitterfeed.com" target="_blank">twitterfeed.com</a> and it pushes everything out through Ping.fm for me. Upon further investigation, I noticed that TweetSuite used its own publishing code to push out the updates &#8211; after it created its own shortened urls and attached them. So of course it would never find my updates &#8211; it didn&#8217;t know what urls to search for, because it didn&#8217;t create them.</li>
<li><span style="text-decoration: underline;"><strong>Make it find my tweets that were pushed through Ping.fm</strong></span> &#8211; After realizing that it stopped searching for blog titles and started searching for the shortened urls as the unique identifier on the web, I realized that I needed it to create my urls and push them out with my Ping.fm update text. That was the only way to let TweetSuite know that there were tweets out there about my blog, and obtw here&#8217;s the link.</li>
<li><span style="text-decoration: underline;"><strong>Clean up some of the things that were a little messy</strong></span> &#8211; Once I got poking around in the code, I noticed that it some parts of it were written a little redundantly, and in order for me to maintain understanding of what was going on, I needed to clean it up a little.</li>
</ol>
<h2>Let&#8217;s Code&#8230;</h2>
<p>Well, for starters, to accomplish #1, I had to write a function that would validate the user&#8217;s app key with Ping.fm:<br />
{code type=php}<br />
/* [[Neo]] */<br />
//BEGIN Ping.fm functions<br />
function pingfm_verify() {<br />
	// request app key verification<br />
	$ch = curl_init();<br />
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
	curl_setopt($ch, CURLOPT_POST, true);<br />
	curl_setopt($ch, CURLOPT_URL, &#8216;http://api.ping.fm/v1/user.validate&#8217;);<br />
	curl_setopt($ch, CURLOPT_POSTFIELDS, Array(<br />
		&#8216;api_key&#8217; =&gt; get_option(&#8216;tweetsuite_ping_api_key&#8217;),<br />
		&#8216;user_app_key&#8217; =&gt; get_option(&#8216;tweetsuite_ping_app_key&#8217;)<br />
	));<br />
	$output = curl_exec($ch);<br />
	// update database with response<br />
	if (preg_match(&#8216;/OK/&#8217;, $output)) {<br />
		echo &#8216;	&lt;strong&gt;Your key has been verified.&lt;/strong&gt; Your can now post to your<br />
				&lt;a href=&#8221;http://www.ping.fm&#8221; target=&#8221;_blank&#8221;&gt;Ping.fm&lt;/a&gt; account.&#8217;;<br />
		update_option(&#8216;tweetsuite_ping_keyVerified&#8217;, 1);<br />
	} else {<br />
		echo (&#8216;&lt;strong&gt;Your key could not be verified.&lt;/strong&gt;.&#8217;);<br />
		update_option(&#8216;tweetsuite_ping_keyVerified&#8217;, 0);<br />
		return false;<br />
	}<br />
}</p>
<p>// END Ping.fm Functions<br />
{/code}<br />
Just your basic <span style="font-family: 'Courier New'; line-height: 18px; white-space: pre;">curl</span><span style="font-family: Georgia; line-height: 19px; white-space: normal;"> function to contact </span><span style="font-family: 'Courier New'; line-height: 18px; white-space: pre;">http://api.ping.fm/v1/user.validate</span><span style="font-family: Georgia; line-height: 19px; white-space: normal;"> and pass the api_key and user_app_key to the api, per the <a href="http://groups.google.com/group/pingfm-developers/web/api-documentation?pli=1#user.validate" target="_blank">API Documentation</a> on <strong>user.validate</strong>. Depending on the response, store it to the database, and display the appropriate message.</span></p>
<p><span style="font-family: Georgia; line-height: 19px; white-space: normal;">Next, I had to implement the fields to make that happen. We&#8217;ll start with the database&#8230;</span><br />
{code type=php}<br />
/* [[Neo]] */<br />
//ADDED:<br />
	add_option(&#8216;tweetsuite_ping_api_key&#8217;,&#8217;333333333333333333333333333333333&#8242;);<br />
	add_option(&#8216;tweetsuite_ping_app_key&#8217;,&#8221;);<br />
	add_option(&#8216;tweetsuite_use_ping&#8217;,0);<br />
	add_option(&#8216;tweetsuite_ping_keyVerified&#8217;,0);<br />
//END ADD<br />
{/code}<br />
This sticks those fields into the wordpress database table &#8220;wp_options&#8221; where all the config values go. My developer&#8217;s api key, a blank user application key, a field for the checkbox &#8220;Do you want to use Ping.fm?&#8221; and one for whether or not the user_app_key successfully verified.</p>
<p>Then I create the user interface for those fields (as well as rearrange the rest of the fields since these have to flow right to make sense&#8230;<br />
{code type=php}<br />
/* [[Neo]] */<br />
//ADDED:<br />
	update_option(&#8216;tweetsuite_ping_app_key&#8217;, $_POST['tweetsuite_ping_app_key']);<br />
//END ADD</p>
<p>//tweetsuite_use_ping<br />
($_POST['tweetsuite_use_ping']) ? update_option(&#8216;tweetsuite_use_ping&#8217;, 1) : update_option(&#8216;tweetsuite_use_ping&#8217;, 0);<br />
{/code}</p>
<p>That part allows the database to be updated with the data from the fields below&#8230;<br />
{code type=html}<br />
&lt;!&#8211; /* [[Neo]] */ &#8211;&gt;<br />
&lt;!&#8211; BEGIN ADD &#8211;&gt;<br />
&lt;tr valign=&#8221;top&#8221;&gt;<br />
	&lt;th scope=&#8221;row&#8221;&gt;Ping.fm :: Use Ping.fm to publish new posts (via your default method)?:&lt;/th&gt;<br />
	&lt;td&gt;&lt;INPUT TYPE=CHECKBOX NAME=&#8221;tweetsuite_use_ping&#8221; &lt;?php if(get_option(&#8216;tweetsuite_use_ping&#8217;)) { echo &#8220;checked&#8221;; } ?&gt;&gt;<br />
		&lt;br /&gt;&lt;b&gt;["Send a Tweet when you publish" is required for this to work]&lt;/b&gt;<br />
	&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr valign=&#8221;top&#8221;&gt;<br />
	&lt;th scope=&#8221;row&#8221;&gt;Ping.fm :: Your Ping.fm &lt;a href=&#8221;http://ping.fm/key/&#8221; target=&#8221;_blank&#8221;&gt;Application Key&lt;/a&gt;:&lt;/th&gt;<br />
	&lt;td&gt;&lt;INPUT TYPE=text NAME=&#8221;tweetsuite_ping_app_key&#8221;  value=&#8217;&lt;?php echo get_option(&#8216;tweetsuite_ping_app_key&#8217;); ?&gt;&#8217; /&gt;&lt;br /&gt;&lt;?php if(get_option(&#8216;tweetsuite_ping_app_key&#8217;)) { echo pingfm_verify(); } ?&gt;<br />
	&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;!&#8211; END ADD &#8211;&gt;<br />
{/code}<br />
This is below the checkbox for &#8220;Send a Tweet when you publish a post?&#8221;&#8230;if that is checked, then if you check &#8220;Use Ping.fm to publish new posts (via your default method)?&#8221; and fill out the next field for &#8220;Your Ping.fm <a href="http://ping.fm/key/" target="_blank">Application Key</a>&#8221; then it will send your post details on Publish through Ping.fm instead of Twitter itself, appending the tinyurl associated with the post to your Ping.fm message. All this is done by editing the function that sends the tweets&#8230;<br />
{code type=php}<br />
function tweetsuite_send($msg) {<br />
	/* [[Neo]] */<br />
	//REMOVED:<br />
	//$prefix = urlencode(get_option(&#8216;tweetsuite_prefix&#8217;).&#8217; &#8216;);<br />
	//REPLACED:<br />
	$prefix = (get_option(tweetsuite_use_ping) and get_option(tweetsuite_ping_keyVerified)) ? get_option(&#8216;tweetsuite_prefix&#8217;).&#8217; &#8216; : urlencode(get_option(&#8216;tweetsuite_prefix&#8217;).&#8217; &#8216;);<br />
	$msg = $prefix.$msg;</p>
<p>	/* [[Neo]] */<br />
	//ADDED<br />
	if(get_option(tweetsuite_use_ping) and get_option(tweetsuite_ping_keyVerified)) {<br />
		$ch = curl_init();<br />
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br />
		curl_setopt($ch, CURLOPT_POST, true);<br />
		curl_setopt($ch, CURLOPT_URL, &#8216;http://api.ping.fm/v1/user.post&#8217;);<br />
		curl_setopt($ch, CURLOPT_POSTFIELDS, Array(<br />
			&#8216;api_key&#8217; =&gt; get_option(&#8216;tweetsuite_ping_api_key&#8217;),<br />
			&#8216;user_app_key&#8217; =&gt; get_option(&#8216;tweetsuite_ping_app_key&#8217;),<br />
			&#8216;post_method&#8217; =&gt; &#8220;default&#8221;,<br />
			&#8216;body&#8217; =&gt; $msg)<br />
		);<br />
		$output = curl_exec($ch);<br />
	} else {<br />
		//END ADD<br />
		$username = get_option(&#8216;tweetsuite_twitter_username&#8217;);<br />
		$password = get_option(&#8216;tweetsuite_twitter_password&#8217;);<br />
		if(($username) and ($password))  {<br />
			$url = &#8216;http://twitter.com/statuses/update.xml&#8217;;<br />
			$curl_handle = curl_init();<br />
			curl_setopt($curl_handle, CURLOPT_URL, &#8220;$url&#8221;);<br />
			curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);<br />
			curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);<br />
			curl_setopt($curl_handle, CURLOPT_POST, 1);<br />
			curl_setopt($curl_handle, CURLOPT_POSTFIELDS, &#8220;status=$msg&#8221;);<br />
			curl_setopt($curl_handle, CURLOPT_USERPWD, &#8220;$username:$password&#8221;);<br />
			$buffer = curl_exec($curl_handle);<br />
			curl_close($curl_handle);<br />
		}<br />
	/* [[Neo]] */<br />
	//ADDED<br />
	}<br />
	//END ADD<br />
}<br />
{/code}<br />
This starts off by swapping out the original <strong>urlencode()</strong> function for a conditional statement deciding if this is a ping.fm post or a twitter post. If it&#8217;s a ping.fm post, then we don&#8217;t want to <strong>urlencode()</strong> the prefix, because it sticks + signs where there should be spaces in the prefix to the title. However, if we don&#8217;t want to use ping.fm, then don&#8217;t mess with the original code.</p>
<p>Following that, it splits which method we used to post, based on the same criteria &#8211; make sure the checkbox is true for &#8220;tweetsuite_use_ping&#8221; and that the user&#8217;s app key is verified in &#8220;tweetsuite_ping_keyVerified&#8221;. If that&#8217;s the case, then post it through ping.fm &#8211; if any of that is not met, then go ahead and try to post it through twitter. If there is no username and password supplied on the options page, then we just won&#8217;t post anything.</p>
<p>Now&#8230;about the whole $msg &#8211; that part got skipped in the logic of everything. This was the tricky part, for me. Originally, I stumbled across an API Documentation page for the ping.fm method &#8220;url.shorten&#8221; and that was the very thing I needed &#8211; something to grab a ping.fm url, without passing it through ping.fm yet. However, I found out, after much frustration, that this method was mysteriously &#8220;depreciated&#8221; (which should be read as &#8220;edited off the page, and 404&#8242;d when you try to use it). But, I found <a href="http://groups.google.com/group/pingfm-developers/browse_thread/thread/e6bf14bd63fdb7df/e59e3c16424ad20f?lnk=gst&amp;q=url+shortening#e59e3c16424ad20f" target="_blank">another solution</a> in the knowledgebase at Ping.fm&#8230;<br />
{code type=php}<br />
function ts_send_tweet($postID) {<br />
	global $wpdb;<br />
	if(!is_int($postID))<br />
		$postID = $postID-&gt;ID;</p>
<p>	$table_name = $wpdb-&gt;prefix . &#8220;shorturls&#8221;;<br />
	$line = $wpdb-&gt;get_row(&#8220;select * from $table_name where postID=$postID&#8221;);<br />
	if($line-&gt;postID==$postID) {<br />
		/* [[Neo]] */<br />
		// ADDED: &#8220;*&#8221;.<br />
		$shorturl = &#8220;*&#8221;.$line-&gt;tinyurl;<br />
		$post = get_post($postID);<br />
		if(get_option(&#8216;tweetsuite_send_posts&#8217;))<br />
			tweetsuite_send(trim($post-&gt;post_title).&#8217; &#8216;.$shorturl);<br />
	}<br />
}<br />
{/code}<br />
The article said you can prepend a <strong>* </strong>to the front of a url and it would not shorten it (in addition to the fact that they said they wouldn&#8217;t re-shorten any URLs 24 characters or smaller). So, I went with the * solution, because we&#8217;re already providing short URLs, but don&#8217;t want to risk the functionality in future updates to allow for custom url shortening services.</p>
<p>And that accomplishes both #1 and #2. We have the TweetSuite posting its updates through the Ping.fm API, and pushing a shortened url out with the post. TweetSuite then becomes aware of this url at publish, and stores it in its database. Then the cron job that runs every 5 minutes searches on any version of the URL that was stored and pulls back all the entries from the search.twitter.com Atom feed &#8211; parses them, and updates the database with them.</p>
<p>The rest of the stuff I did in the plugin was merely cleaning up&#8230;for example, reading the shortened urls from the Atom feed. The original code was:<br />
{code type=php}<br />
if(stristr($tweet, &#8216;http://bit.ly&#8217;)) {<br />
	if(strstr($tweet, $bitly)) {<br />
		$add = true;<br />
	} else {<br />
		$add = false;<br />
	}<br />
}<br />
{/code}<br />
Because the urls are using alphanumeric sequences to track what link is what &#8211; and the url&#8217;s are case-sensitive, it was returning links that were not related to the post. For example, I got <a href="http://twitter.com/lukebuchanan/statuses/1332713478" target="_blank">someone&#8217;s tweet about Rush Limbaugh</a> because the bit.ly url (&#8220;http://bit.ly/fyhz&#8221;)was the same letters, but in a different case then my original &#8220;http://bit.ly/FyhZ&#8221;. So I changed the order of the search, did it for all the services currently supported, and cleaned up the code a little:<br />
{code type=php}&#8230;<br />
if(strstr($tweet, &#8216;http://bit.ly&#8217;)) { $add = (stristr($tweet, $bitly)) ? true : false; } else {<br />
&#8230;<br />
{/code}<br />
The function<strong> strstr() </strong>is <strong>not</strong> case-sensitive, and that&#8217;s ok for a search on the domain name &#8211; we want anything that looks close to &#8220;bit.ly&#8221; to return positive. However, once it does, it&#8217;s imperitive that we use the case-sensitive <strong>stristr()</strong> function to return a positive result only if the full url matches what we have in the database case-for-case.</p>
<h2>Wrapping up&#8230;</h2>
<p>I made a couple more additions to the code beyond that, some of them required for functionality, some of them for cosmetics. I&#8217;ve submitted my plugin version to Ping.fm to approve it, and take my Developer&#8217;s Key out of &#8220;Pending&#8221; status. Once that&#8217;s done, I&#8217;ll send it off to Dan Zarrella to take a look and see how he wants to move forward. Then I&#8217;ll be able to post the plugin for download (definitely here, but also on the WordPress Plugin directory.</p>
<h2>Continuing on&#8230;</h2>
<p>I have read through the comments on Dan&#8217;s blog from the people, and have taken note of the things that they are asking for. After reading the code, he had already been working on some of the features. There are 5 main ones that people are asking for, and I&#8217;ve already done one of them in this release:</p>
<ol>
<li><span style="text-decoration: line-through;">TweetThis link opens in a new window.</span></li>
<li>AutoUpgrade via WordPress Plugin Directory</li>
<li>Allow customized URL Shortening Services</li>
<li>TweetThis links for pre-installation posts</li>
<li>TweetThis links on the home page.</li>
</ol>
<p>I&#8217;ll be looking more into the other options and see what I can do.</p>
<h2>One More Thing&#8230;</h2>
<p>This post was syndicated through the TweetSuite + Ping.fm plugin <img src='http://thepizzy.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/dan+zarrella' rel='tag' target='_blank'>dan zarrella</a>, <a class='technorati-link' href='http://technorati.com/tag/database' rel='tag' target='_blank'>database</a>, <a class='technorati-link' href='http://technorati.com/tag/internet' rel='tag' target='_blank'>internet</a>, <a class='technorati-link' href='http://technorati.com/tag/MySQL' rel='tag' target='_blank'>MySQL</a>, <a class='technorati-link' href='http://technorati.com/tag/PHP' rel='tag' target='_blank'>PHP</a>, <a class='technorati-link' href='http://technorati.com/tag/Ping.fm' rel='tag' target='_blank'>Ping.fm</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/syndication' rel='tag' target='_blank'>syndication</a>, <a class='technorati-link' href='http://technorati.com/tag/tweetbacks' rel='tag' target='_blank'>tweetbacks</a>, <a class='technorati-link' href='http://technorati.com/tag/TweetSuite' rel='tag' target='_blank'>TweetSuite</a>, <a class='technorati-link' href='http://technorati.com/tag/twitter' rel='tag' target='_blank'>twitter</a>, <a class='technorati-link' href='http://technorati.com/tag/Wordpress' rel='tag' target='_blank'>WordPress</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2009/03/tweetsuite-wordpress-plugin-pingfm-preview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Integrating Google Connect</title>
		<link>http://thepizzy.net/blog/2009/01/integrating-google-connect/</link>
		<comments>http://thepizzy.net/blog/2009/01/integrating-google-connect/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 05:38:32 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[thepizzy.net]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Connect]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[ThePizzy]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[ut3]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=184</guid>
		<description><![CDATA[I&#8217;ve been part of the Google Connect beta since shortly after it came out &#8211; but it wasn&#8217;t until recently that I actually implemented it on my blog and the...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Google.com" src="http://www.google.com/images/logos/ps_logo2.png" alt="" width="364" height="126" />I&#8217;ve been part of the Google Connect beta since shortly after it came out &#8211; but it wasn&#8217;t until recently that I actually implemented it on my blog and the parent site, www.thepizzy.net. So, if you read this (and I know there has to be at least 4 other people in the world that do), go ahead and hit the Join button on it, and let me know y&#8217;all are out there. (it helps to know one is writing to an audience instead of providing technical articles to the etherworld.)</p>
<p>You don&#8217;t have to worry about spam or anything &#8211; I don&#8217;t like it either.</p>
<p>In other news, I&#8217;m also working on a tutorial entry that describes how to get data from a Google Docs Spreadsheet. Normally, I wouldn&#8217;t worry about trying to release this code, but since it was such a pain for me to figure out (like the <a href="http://thepizzy.net/blog/2008/01/how-to-setup-a-ut3-internet-server/" target="_blank">UT3 Server setup</a>), I&#8217;m sure it&#8217;s a pain for others to figure out as well.</p>
<p>The code creates a secure-authenticated session to Google Accounts, and then requests the data from a particular cell on a spreadsheet. My code goes one step further though, and posts that data to Twitter &#8211; which means it also creates an authenticated POST request via the Twitter API.</p>
<p>&#8220;Why do that?&#8217; you ask&#8230;Well, if you want to be able to update a spreadsheet from, say an iPhone or other Mobile Browser, Google Docs will not let you. But I&#8217;ll explain more in the coming entry. Be looking for that sometime this week (I hope).</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/api' rel='tag' target='_blank'>api</a>, <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/blog' rel='tag' target='_blank'>blog</a>, <a class='technorati-link' href='http://technorati.com/tag/Connect' rel='tag' target='_blank'>Connect</a>, <a class='technorati-link' href='http://technorati.com/tag/google' rel='tag' target='_blank'>google</a>, <a class='technorati-link' href='http://technorati.com/tag/server' rel='tag' target='_blank'>server</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/Technology' rel='tag' target='_blank'>Technology</a>, <a class='technorati-link' href='http://technorati.com/tag/ThePizzy' rel='tag' target='_blank'>ThePizzy</a>, <a class='technorati-link' href='http://technorati.com/tag/twitter' rel='tag' target='_blank'>twitter</a>, <a class='technorati-link' href='http://technorati.com/tag/ut3' rel='tag' target='_blank'>ut3</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2009/01/integrating-google-connect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Update: tsnX – Database Converted, bugs persist</title>
		<link>http://thepizzy.net/blog/2006/06/update-tsnx-database-converted-bugs-persist/</link>
		<comments>http://thepizzy.net/blog/2006/06/update-tsnx-database-converted-bugs-persist/#comments</comments>
		<pubDate>Sun, 11 Jun 2006 13:40:26 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[The-Spot.Network]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[authorization database]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Converted]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=64</guid>
		<description><![CDATA[I finished uploading the database for the site, and all the posts are there, plus some others from the beta site. There are some issues with logging in right now,...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1181" title="the-spot.net logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/04/Untitled-2-150x150.png" alt="" width="150" height="150" />I finished uploading the database for the site, and all the posts are there, plus some others from the beta site. There are some issues with logging in right now, and issues with the topics not showing the last poster. They&#8217;re things I&#8217;m working on&#8230;it&#8217;s a bit more difficult, because I, myself, am not able to log into the site, so I have to mess with the Authorization database.</p>
<p>However, I have been up all night, and until 8:45 this morning, and I&#8217;m tired. So I&#8217;m going to sleep now.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/Authorization' rel='tag' target='_blank'>Authorization</a>, <a class='technorati-link' href='http://technorati.com/tag/authorization+database' rel='tag' target='_blank'>authorization database</a>, <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/Converted' rel='tag' target='_blank'>Converted</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/update' rel='tag' target='_blank'>update</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/06/update-tsnx-database-converted-bugs-persist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update: tsnX Database Movement</title>
		<link>http://thepizzy.net/blog/2006/06/update-tsnx-database-movement/</link>
		<comments>http://thepizzy.net/blog/2006/06/update-tsnx-database-movement/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 07:17:02 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[The-Spot.Network]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[conversions]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[forums]]></category>
		<category><![CDATA[pizzy]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sql code]]></category>
		<category><![CDATA[tsn]]></category>
		<category><![CDATA[tsnV]]></category>
		<category><![CDATA[tsnX]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=63</guid>
		<description><![CDATA[I&#8217;m backing up the tsnX.3 Beta&#8217;s Database (with the posts, forums, and accounts) and going to start moving the tsnV database into the tsnX site. The site is going to...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1181" title="the-spot.net logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/04/Untitled-2-150x150.png" alt="" width="150" height="150" />I&#8217;m backing up the tsnX.3 Beta&#8217;s Database (with the posts, forums, and accounts) and going to start moving the tsnV database into the tsnX site. The site is going to be down for a bit, while I do this, and iron out the kinks of auth-access, and conversions. If things don&#8217;t go properly after a bit, I&#8217;ll restore the tsnX.3 database, and continue working on converting tsnV to tsnX again. There are some things that I can&#8217;t test just by looking at the SQL Code, and that I have to implement for it to be tested.</p>
<p>So check the pizzy for updates if the forums aren&#8217;t working. If, in the meantime, the server goes down for some reason, and you can&#8217;t get to thepizzy or tsn, then go to http://tsnblog.blogspot.com to fing out why.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/code' rel='tag' target='_blank'>code</a>, <a class='technorati-link' href='http://technorati.com/tag/conversions' rel='tag' target='_blank'>conversions</a>, <a class='technorati-link' href='http://technorati.com/tag/database' rel='tag' target='_blank'>database</a>, <a class='technorati-link' href='http://technorati.com/tag/forums' rel='tag' target='_blank'>forums</a>, <a class='technorati-link' href='http://technorati.com/tag/pizzy' rel='tag' target='_blank'>pizzy</a>, <a class='technorati-link' href='http://technorati.com/tag/server' rel='tag' target='_blank'>server</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/sql' rel='tag' target='_blank'>sql</a>, <a class='technorati-link' href='http://technorati.com/tag/sql+code' rel='tag' target='_blank'>sql code</a>, <a class='technorati-link' href='http://technorati.com/tag/tsn' rel='tag' target='_blank'>tsn</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnV' rel='tag' target='_blank'>tsnV</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnX' rel='tag' target='_blank'>tsnX</a>, <a class='technorati-link' href='http://technorati.com/tag/update' rel='tag' target='_blank'>update</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/06/update-tsnx-database-movement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update: tsnX Database Conversion @ 50%</title>
		<link>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/</link>
		<comments>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/#comments</comments>
		<pubDate>Tue, 06 Jun 2006 21:29:30 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[The-Spot.Network]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[account]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[alpha phase]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database conversion]]></category>
		<category><![CDATA[database structure]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[forums]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[subSilver]]></category>
		<category><![CDATA[tsnV]]></category>
		<category><![CDATA[tsnX]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[user]]></category>
		<category><![CDATA[user accounts]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=62</guid>
		<description><![CDATA[Ok, so I&#8217;m converting the tsnV database into one that will work with the tsnX database structure. What this will do is bring our posts, user accounts, and forums over...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1181" title="the-spot.net logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/04/Untitled-2-150x150.png" alt="" width="150" height="150" />Ok, so I&#8217;m converting the tsnV database into one that will work with the tsnX database structure. What this will do is bring our posts, user accounts, and forums over from the old site and make it work with the mods and settings of the new site. It&#8217;s something I have not done before, but is apparently going rather smoothly.</p>
<p>I spent all night working on it, and then another 3 hours today already, and am going to take a break from it. But once the database conversion is finished, and I revisit the bugs in the code, I&#8217;ll load the database, and start working on the site design.</p>
<p>The theme that I&#8217;m going to be working off of is just going to be a re-coded subSilver theme. If you want to use the theme as I build it, to be one of the first to experience the tsnX feel, then feel free to do so. However, the theme is going to be in the alpha phase, which will guarantee nothing as far as it&#8217;s ability to function is concerned. So if I&#8217;m working on something, and the theme breaks, and it&#8217;s not something that I can fix immediately, then you will most likely be SOL until I get it fixed, as far as using the site is concerned.</p>
<p>For this purpose if you wish to create a separate user on the site and use the settings for it to work with everything beta, then that will be acceptable. Just name your user account _beta so that you can distinguish which is which, and we&#8217;ll still know who you are.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/account' rel='tag' target='_blank'>account</a>, <a class='technorati-link' href='http://technorati.com/tag/alpha' rel='tag' target='_blank'>alpha</a>, <a class='technorati-link' href='http://technorati.com/tag/alpha+phase' rel='tag' target='_blank'>alpha phase</a>, <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/code' rel='tag' target='_blank'>code</a>, <a class='technorati-link' href='http://technorati.com/tag/database' rel='tag' target='_blank'>database</a>, <a class='technorati-link' href='http://technorati.com/tag/database+conversion' rel='tag' target='_blank'>database conversion</a>, <a class='technorati-link' href='http://technorati.com/tag/database+structure' rel='tag' target='_blank'>database structure</a>, <a class='technorati-link' href='http://technorati.com/tag/design' rel='tag' target='_blank'>design</a>, <a class='technorati-link' href='http://technorati.com/tag/forums' rel='tag' target='_blank'>forums</a>, <a class='technorati-link' href='http://technorati.com/tag/site' rel='tag' target='_blank'>site</a>, <a class='technorati-link' href='http://technorati.com/tag/subSilver' rel='tag' target='_blank'>subSilver</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnV' rel='tag' target='_blank'>tsnV</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnX' rel='tag' target='_blank'>tsnX</a>, <a class='technorati-link' href='http://technorati.com/tag/update' rel='tag' target='_blank'>update</a>, <a class='technorati-link' href='http://technorati.com/tag/user' rel='tag' target='_blank'>user</a>, <a class='technorati-link' href='http://technorati.com/tag/user+accounts' rel='tag' target='_blank'>user accounts</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/06/update-tsnx-database-conversion-50/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update: tsnX Coding @ 100%</title>
		<link>http://thepizzy.net/blog/2006/06/update-tsnx-coding-100/</link>
		<comments>http://thepizzy.net/blog/2006/06/update-tsnx-coding-100/#comments</comments>
		<pubDate>Sun, 04 Jun 2006 05:21:04 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[The-Spot.Network]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[forums]]></category>
		<category><![CDATA[progress]]></category>
		<category><![CDATA[Spot]]></category>
		<category><![CDATA[tsnV]]></category>
		<category><![CDATA[tsnX]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=61</guid>
		<description><![CDATA[Well, I finished updating the basic forums to work with what I want and what people expect in the-spot.net. It&#8217;s taken about a month and a half, with some restarts...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1181" title="the-spot.net logo" src="http://thepizzy.net/blog/wp-content/uploads/2008/04/Untitled-2-150x150.png" alt="" width="150" height="150" />Well, I finished updating the basic forums to work with what I want and what people expect in the-spot.net. It&#8217;s taken about a month and a half, with some restarts in coding, and lots of frustration and a couple feature scale-backs.</p>
<p>What&#8217;s next on the list, is debugging some of the beta problems&#8230;then converting the tsnV database to work with the tsnX database, and then working on the design of the forums.</p>
<p>Once that is done, I&#8217;ll start the work on the My Spot page, and the design for that page. So it&#8217;s coming together, and people can start coming back soon&#8230;and within the next couple days, everyone will be able to log back in as before.</p>
<p>More updates to come, as more progress is made.</p>

<!-- start wp-tags-to-technorati 1.02 -->

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/beta' rel='tag' target='_blank'>beta</a>, <a class='technorati-link' href='http://technorati.com/tag/Coding' rel='tag' target='_blank'>Coding</a>, <a class='technorati-link' href='http://technorati.com/tag/database' rel='tag' target='_blank'>database</a>, <a class='technorati-link' href='http://technorati.com/tag/design' rel='tag' target='_blank'>design</a>, <a class='technorati-link' href='http://technorati.com/tag/feature' rel='tag' target='_blank'>feature</a>, <a class='technorati-link' href='http://technorati.com/tag/forums' rel='tag' target='_blank'>forums</a>, <a class='technorati-link' href='http://technorati.com/tag/progress' rel='tag' target='_blank'>progress</a>, <a class='technorati-link' href='http://technorati.com/tag/Spot' rel='tag' target='_blank'>Spot</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnV' rel='tag' target='_blank'>tsnV</a>, <a class='technorati-link' href='http://technorati.com/tag/tsnX' rel='tag' target='_blank'>tsnX</a>, <a class='technorati-link' href='http://technorati.com/tag/update' rel='tag' target='_blank'>update</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2006/06/update-tsnx-coding-100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

