<?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; twitter</title>
	<atom:link href="http://thepizzy.net/blog/tag/twitter/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>Dallas Stars Twitter (@dallasstars and @thedallasstars)</title>
		<link>http://thepizzy.net/blog/2009/05/dallas-stars-twitter/</link>
		<comments>http://thepizzy.net/blog/2009/05/dallas-stars-twitter/#comments</comments>
		<pubDate>Tue, 12 May 2009 04:18:13 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[cfaulk]]></category>
		<category><![CDATA[dallas stars]]></category>
		<category><![CDATA[dallas stars twitter]]></category>
		<category><![CDATA[dallasstars]]></category>
		<category><![CDATA[neotsn]]></category>
		<category><![CDATA[shickdog]]></category>
		<category><![CDATA[thedallasstars]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[winkydo]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=408</guid>
		<description><![CDATA[What happened to the Dallas Stars Twitter? They removed me from their friend list, and changed everything! If you&#8217;re asking yourself that question&#8230;it&#8217;s not what you think. Here&#8217;s what happened...]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignleft" title="@thedallasstars" src="http://a1.twimg.com/profile_images/421667289/stars-logo.png" alt="" width="200" height="200" />What happened to the Dallas Stars Twitter? They removed me from their friend list, and changed everything!</strong></p>
<p>If you&#8217;re asking yourself that question&#8230;it&#8217;s not what you think. Here&#8217;s what happened &#8211; it was all a mistake&#8230;</p>
<h3>The Backstory&#8230;</h3>
<p>Back in the Fall of 2007, @<a href="http://twitter.com/winkydo">winkydo</a> had an idea to start broadcasting the scores during the Dallas Stars NHL hockey games. <span id="more-408"></span>So he went to register the account for @<a href="http://twitter.com/dallasstars">DallasStars</a> and from then on, he and I (@<a href="http://twitter.com/neotsn">neotsn</a>) were all about posting updates, tying in news feeds. Our updates got pretty complicated using a 1400-character if-statement to parse a collection of inputs and derived values from a database of all the NHL players, their numbers and their teams. We&#8217;d watch every game, intently focused on a 52&#8243; Plasma HD TV so that we could see which players scored, which assissted, and get all the stats up on the internet before the official NHL Game Stats page was updated &#8211; and often before the announcers could say.</p>
<p>Well, that lasted all the way until the end of 2008-09 Season.</p>
<p>We got a message from @<a href="http://twitter.com/cfaulk">cfaulk</a>, asking who was behind the @<a href="http://twitter.com/dallasstars">DallasStars</a>, but because we had hidden who was behind the account, and had a policy never to reply, opinionate, or follow people with that account, we did not respond. Unfortunately, the means that @<a href="http://twitter.com/cfaulk">cfaulk</a> couldn&#8217;t find us to contact us.</p>
<p>Why does it matter that @<a href="http://twitter.com/cfaulk">cfaulk</a> couldn&#8217;t find us? Because he&#8217;s the Sr. VP of Ticket Sales for the @<a href="http://twitter.com/dallasstars">DallasStars</a>, Sr. Acct Executive for the Texas Rangers, and the Acct Executive for the Dallas Burn.</p>
<h3>What happened&#8230;</h3>
<p>Well, while the Dallas Stars organization was trying to get information from Twitter Co. about who was running the site, they created @<a href="http://twitter.com/thedallasstars">TheDallasStars</a> to start their feed. All they wanted to do was ask us to remove the word &#8220;Official&#8221; from our description since there was truely an Official feed out there.</p>
<p>&#8230;But they never got a response from the Twitter people.</p>
<p>Meanwhile, I saw the advertisement on Facebook for @<a href="http://twitter.com/thedallasstars">TheDallasStars</a> as the &#8220;Official&#8221; Twitter feed for the Dallas Stars, and made a comment advertising the one we set up. Then I went to look into the <a href="http://dallasstars.com">DallasStars.com</a> website, and in their Fan Zone menu, and pulled up their <a href="http://www.facebook.com/pages/Dallas-TX/Official-Dallas-Stars/47901465214">Official Facebook Fanpage</a> &#8211; it was the same one. So then I went back to figure out who it was that asked the @<a href="http://twitter.com/dallasstars">DallasStars</a> who they were, and found it was @<a href="http://twitter.com/cfaulk">cfaulk</a> and found him on LinkedIn, figured out who he was there, and asked him to confirm it. He responded asking who I was, and I gave him my contact info, explained how we were using the @<a href="http://twitter.com/dallasstars">DallasStars</a> profile, but didn&#8217;t hear anything back</p>
<h3>Then, today&#8230;</h3>
<p>When @<a href="http://twitter.com/cfaulk">cfaulk</a> and company logged into their Twitter account, they noticed that all-the-sudden, the account they registered (@<a href="http://twitter.com/thedallasstars">TheDallasStars</a>) was now simply @<a href="http://twitter.com/dallasstars">DallasStars</a>. So I got an email from @<a href="http://twitter.com/cfaulk">cfaulk</a> asking to talk to us. I went and looked at the @<a href="http://twitter.com/dallasstars">DallasStars</a> page to find out it had been suspended as @<a href="http://twitter.com/dallasstars_I">DallasStars_I</a>. So we were concerned too, because we had hoped we could transfer the fanbase to the NHL Organization by simply turning over the account credentials to the Dallas Stars Organization, as well as the infrastructure we had developed&#8230;and possibly work out some kind of contract-labor situation where we could keep maintaining it for them.</p>
<p>This evening there was a conference call placed between @<a href="http://twitter.com/winkydo">winkydo</a>, @<a href="http://twitter.com/cfaulk">cfaulk</a>, @<a href="http://twitter.com/shickdog">shickdog</a> (Sr. Dir. of Communications) and myself (@<a href="http://twitter.com/neotsn">neotsn</a>). During our conversation, we discovered that @<a href="http://twitter.com/cfaulk">cfaulk</a> &amp; @<a href="http://twitter.com/shickdog">shickdog</a> thought we ditched the account; and @<a href="http://twitter.com/winkydo">winkydo</a> and I thought they had acquired the account. But apparently Twitter did it on their own accord, probably to reduce mitigation, and just hand over the account to the copyright holder.</p>
<p>We were all disappointed by this because we lost the fanbase we had gained over the 1.5 seasons of tweeting. However, that&#8217;s part of the fun &#8211; and we still have 2400 (of the 2538 followers) emails telling us who is following. So we can re-add everyone as time goes by, a couple each day so we don&#8217;t get banned for adding disproportionate amounts of followers.</p>
<p>Essentially all they wanted to get in touch with us for was to ask us to remove the &#8220;Official&#8221; verbiage from the description on our page. They were happy that we had such enthusiasm and wanted to remain in touch, since they were just getting started in all of this social networking, and we were able to acquire the fans without their media presence.</p>
<h3>Here&#8217;s The Breakdown&#8230;</h3>
<p>Now we have new accounts set up, and they all have purposes, and @<a href="http://twitter.com/winkydo">winkydo</a> and I are going to be working closely with @<a href="http://twitter.com/cfaulk">cfaulk</a> &amp; @<a href="http://twitter.com/shickdog">shickdog</a> to get all this up and running again. At least, that&#8217;s the hope I think everyone had when we ended the conference call.</p>
<p>Here&#8217;s the twitter accounts that came out of it, and what they are:</p>
<ul>
<li><strong><span style="color: #00ff00;">@<a href="http://twitter.com/DallasStars">DallasStars</a> &#8211; The Official Dallas Stars Twitter account (formerly @thedallasstars)</span></strong>
<ul>
<li>Follow this acct to get <strong>Official News</strong> from the Dallas Stars Organization</li>
<li>Updated and maintained by the Dallas Stars NHL Organization&#8217;s Communications Department</li>
</ul>
</li>
<li><strong><span style="color: #00ff00;">@<a href="http://twitter.com/TheDallasStars">TheDallasStars</a> &#8211; The Fan-version Dallas Stars Twitter account (formerly @dallasstars)</span></strong>
<ul>
<li>Follow this acct to get most of the <strong>Official News, the Popular Stars Blogs, and Live Scores</strong></li>
<li>Yes, we did clear it with @<a href="http://twitter.com/cfaulk">cfaulk</a> that it would be OK with them to re-register @thedallasstars since they had our original page.</li>
<li>Updated and maintained by @<a href="http://twitter.com/winkydo">winkydo</a> and @<a href="http://twitter.com/neotsn">neotsn</a>, with Live Scores and News feeds just like before. The same Dallas Stars feed/speed you loved for the past 2 seasons, but this time, you know who&#8217;s doing it.</li>
</ul>
</li>
<li><strong><span style="color: #00ff00;">@<a href="http://twitter.com/DallasStarsLive">DallasStarsLive</a> &#8211; A new Fan-version of the Dallas Stars Twitter account</span></strong>
<ul>
<li>This is <strong>ONLY Live Scores</strong> updated during the games by @<a href="http://twitter.com/winkydo">winkydo</a> and @<a href="http://twitter.com/neotsn">neotsn</a>.</li>
</ul>
</li>
</ul>
<p><strong><span style="color: #ff0000;">Please ReTweet this, and tell all your friends about this change &#8211; so everyone can hit the ground running next season!</span></strong></p>

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

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/cfaulk' rel='tag' target='_blank'>cfaulk</a>, <a class='technorati-link' href='http://technorati.com/tag/dallas+stars' rel='tag' target='_blank'>dallas stars</a>, <a class='technorati-link' href='http://technorati.com/tag/dallas+stars+twitter' rel='tag' target='_blank'>dallas stars twitter</a>, <a class='technorati-link' href='http://technorati.com/tag/dallasstars' rel='tag' target='_blank'>dallasstars</a>, <a class='technorati-link' href='http://technorati.com/tag/neotsn' rel='tag' target='_blank'>neotsn</a>, <a class='technorati-link' href='http://technorati.com/tag/shickdog' rel='tag' target='_blank'>shickdog</a>, <a class='technorati-link' href='http://technorati.com/tag/thedallasstars' rel='tag' target='_blank'>thedallasstars</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/winkydo' rel='tag' target='_blank'>winkydo</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2009/05/dallas-stars-twitter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>Project Upstream and the *salmon &#8220;spam bots&#8221;</title>
		<link>http://thepizzy.net/blog/2009/02/project-upstream-and-the-salmon-spam-bots/</link>
		<comments>http://thepizzy.net/blog/2009/02/project-upstream-and-the-salmon-spam-bots/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 19:32:53 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[aclockworkcoho]]></category>
		<category><![CDATA[allergenicsalmon]]></category>
		<category><![CDATA[AutomatedCoho]]></category>
		<category><![CDATA[creepysalmon]]></category>
		<category><![CDATA[Disorderlysalmon]]></category>
		<category><![CDATA[excelletsalmon]]></category>
		<category><![CDATA[foreignsalmon]]></category>
		<category><![CDATA[glorioussalmon]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[liberatedsalmon]]></category>
		<category><![CDATA[NanoScaleCoho]]></category>
		<category><![CDATA[paradoxicalsalmon]]></category>
		<category><![CDATA[profiles]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[ProjectU]]></category>
		<category><![CDATA[ProjectUpstream]]></category>
		<category><![CDATA[salmon]]></category>
		<category><![CDATA[TalkativeCoho]]></category>
		<category><![CDATA[The Great Hatsby]]></category>
		<category><![CDATA[tickingsalmon]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[WoolenCoho]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=194</guid>
		<description><![CDATA[Well, last night was about the 7th time I&#8217;d been messaged by a salmon-themed screenname. The first time I was messaged, I asked if they were a bot, and got...]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-960" title="Robot Fish" src="http://thepizzy.net/blog/wp-content/uploads/2009/02/Mega-Man-2-Giant-Robot-Fish-620x-300x251.jpg" alt="" width="300" height="251" />Well, last night was about the 7th time I&#8217;d been messaged by a salmon-themed screenname. The first time I was messaged, I asked if they were a bot, and got a response. However, since I have used the <a title="TrillAlice AI Plugin" href="http://www.trillian-messenger.net/en/plugin/trillalice" target="_blank">TrillAlice plugin</a> before for <a title="Trillian Instant Messenger" href="http://www.trillian.cc" target="_blank">Trillian</a>, I knew that just because it responded with simple, yet pertinent answers, doesn&#8217;t mean it&#8217;s not a bot on the other end.</p>
<p>So, after the first time, I replied with something ridiculous, usually &#8220;I want your body&#8230;in my mouth.&#8221; and then blocked the user, and closed the window&#8230;<span id="more-194"></span></p>
<blockquote><p><span style="color: #cc9900;">creepysalmon:</span> Surely He hath borne our griefs and carried our sorrows.<br />
<span style="color: #cc9900;">creepysalmon:</span> who the hell art thou?<br />
<span style="color: #cc9900;">creepysalmon:</span> [[Neo]]?<br />
<span style="color: #cc0000;">[[Neo]]:</span> ?<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc9900;">creepysalmon:</span> Surely He hath borne our griefs and carried our sorrows.<br />
<span style="color: #cc0000;">[[Neo]]:</span> Auto-response sent to <span style="color: #cc9900;">creepysalmon:</span> Away since 6:54PM (GMT-6)<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc9900;">creepysalmon:</span> who the hell art thou?<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc9900;">creepysalmon:</span> [[Neo]]?<br />
<span style="color: #cc0000;">[[Neo]]:</span> you started this&#8230;who are you?<br />
<span style="color: #cc9900;">creepysalmon:</span> Looks like bots have gotten into Yahoo.<br />
<span style="color: #cc9900;">creepysalmon:</span> Ah&#8230;<br />
<span style="color: #cc9900;">creepysalmon:</span> it&#8217;s a bot.<br />
<span style="color: #cc0000;">[[Neo]]:</span> yeah<br />
<span style="color: #cc9900;">creepysalmon:</span> our apologies.<br />
<span style="color: #cc0000;">[[Neo]]:</span> np<br />
<span style="color: #cc9900;">creepysalmon:</span> <span style="color: #cc0000;">[[Neo]]:</span> WE verily miss you. Dost thou ever think about the good times?<br />
<span style="color: #cc9900;">creepysalmon:</span> how very droll!</p></blockquote>
<p>Until last night, when I decided to await a response&#8230;</p>
<blockquote><p><span style="color: #cc99ff;">liberatedsalmon:</span> I may be a robot, but if you say &#8216;domo arigato&#8217; to me, I will hurt you.<br />
<span style="color: #cc0000;">[[Neo]]:</span> domo arigato, beeyotch<br />
<span style="color: #cc0000;">[[Neo]]:</span> I want your body&#8230;<br />
<span style="color: #cc0000;">[[Neo]]:</span> in my mouth<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> huh?<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> http://[spamwebsite]/debtfree<br />
<span style="color: #cc0000;">[[Neo]]:</span> only if you get in my mouth<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> you first<br />
<span style="color: #cc0000;">[[Neo]]:</span> so how come you&#8217;re creating all these *salmon screennames? do people really click your links?<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> huh?<br />
<span style="color: #cc0000;">[[Neo]]:</span> how much of this conversation are you actually participating in?<br />
<span style="color: #cc0000;">[[Neo]]:</span> on my end, you initiated it<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> wierd<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc99ff;">liberatedsalmon:</span> I may be a robot, but if you say &#8216;domo arigato&#8217; to me, I will hurt you.<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc0000;">[[Neo]]:</span> domo arigato, beeyotch<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc0000;">[[Neo]]:</span> I want your body&#8230;<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc0000;">[[Neo]]:</span> &#8230;in my mouth<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc99ff;">liberatedsalmon:</span> huh?<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc99ff;">liberatedsalmon:</span> http://[spamwebsite]/debtfree<br />
<span style="color: #cc0000;">[[Neo]]:</span> <span style="color: #cc0000;">[[Neo]]:</span> only if you get in my mouth<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> you im&#8217;d me<br />
<span style="color: #cc0000;">[[Neo]]:</span> what was my first sentence?<br />
<span style="color: #cc0000;">[[Neo]]:</span> was it what I just sent you?<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> thats what poped up on my screen<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> you said lets play desert bus together.<br />
<span style="color: #cc0000;">[[Neo]]:</span> can you copy the chat log from the beginning few lines, and send it to me?<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> my nic isnt salmon anything .. your&#8217;s is <span style="color: #99cc00;">allergenicsalmon</span> though<br />
<span style="color: #cc0000;">[[Neo]]:</span> interesting&#8230;I bet someone grabbed our screennames, and is proxying them to other people<br />
<span style="color: #cc0000;">[[Neo]]:</span> my real one is &#8220;[[Neo]]&#8221;<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> <span style="color: #99cc00;">allergenicsalmon:</span> Let&#8217;s play Desert Bus together! M.R.: huh?<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> mine&#8217;s M.R.<br />
<span style="color: #cc0000;">[[Neo]]:</span> hmm&#8230;this is not the first time I&#8217;ve had a salmon derivative IM me<br />
<span style="color: #cc0000;">[[Neo]]:</span> talking about seeing things in the clouds, or if I liked puppy dogs<br />
<span style="color: #cc0000;">[[Neo]]:</span> http://profiles.yahoo.com/liberatedsalmon<br />
<span style="color: #cc0000;">[[Neo]]:</span> I wonder what ProjectU is, according to that profile<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> who knows<br />
<span style="color: #cc0000;">[[Neo]]:</span> I&#8217;m investigating further&#8230;I&#8217;ll let you go since neither one of us started this conversation&#8230;maybe it&#8217;s an elaborate scheme to get people to meet people online :-p<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> hehe<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> definalty wierd<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> i&#8217;d say it was a hack attempt but i didnt get any links to click on<br />
<span style="color: #cc0000;">[[Neo]]:</span> I got one from you<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> unless there&#8217;s an exploitable bug in the new yahoo IM<br />
<span style="color: #cc0000;">[[Neo]]:</span> but I am not even using Yahoo Messenger<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> i usually use trillian<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> but i got yahoo messenger last week to test some web bits.<br />
<span style="color: #cc0000;">[[Neo]]:</span> it has to be something inside the protocol for yahoo messenger&#8230;if I had to guess, I&#8217;d say someone set up a Jabber/XMPP that connected to the yahoo IM service, and was using fake names to initiate connections to gleamed sn&#8217;s<br />
<span style="color: #cc0000;">[[Neo]]:</span> I do too&#8230;Trillian Astra<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> i wonder if it has anything to do with the yahoobox you can add to your website<br />
<span style="color: #cc0000;">[[Neo]]:</span> that thought kinda makes me interested in setting one up, just to try it, and solve the question that&#8217;s floating around the internet<br />
<span style="color: #cc0000;">[[Neo]]:</span> probably not&#8230;at least not on my end &#8211; I don&#8217;t do hardly anything with yahoo and this screenname<br />
<span style="color: #cc0000;">[[Neo]]:</span> I have to use it for work, but that has a different acct tied to it<br />
<span style="color: #cc99ff;">liberatedsalmon:</span> well good luck!<br />
<span style="color: #cc0000;">[[Neo]]:</span> thanks</p></blockquote>
<p>After working out that neither of us started this conversation, I was able to surmise that it was either:</p>
<ul>
<li>an exploit in the Yahoo Instant Message delivery protocol, using the OpenSource Jabber/XMPP protocol, since one doesn&#8217;t have to be on another&#8217;s buddy list in order to contact them. or&#8230;</li>
<li>a non-malicious social experiment to connect people with other people on the internet.</li>
</ul>
<p>Well, my estimations and predictions weren&#8217;t too far off.</p>
<p>Last night I went searching for salmon screennames and <a href="http://profiles.yahoo.com/liberatedsalmon" target="_blank">ProjectU</a>, and came across <a href="http://twitter.com/mjlambie" target="_blank">@mjlambie</a>&#8216;s twitter page, and <a href="http://twitter.com/mjlambie/status/1117824397" target="_blank">his post</a> made in January about the liberatedsalmon screenname, and left <a href="http://twitter.com/neotsn/status/1201834879" target="_blank">a message</a>. This afternoon, I find <a href="http://twitter.com/mjlambie/status/1201957937" target="_blank">a response</a> from him mentioning <a href="http://www.google.com/search?rlz=1C1GGLS_enUS310US310&amp;sourceid=chrome&amp;ie=UTF-8&amp;q=project+upstream" target="_blank">Project Upstream</a>. A couple click-arounds, and I come across a <a href="http://community.livejournal.com/themissinghat/199227.html" target="_blank">LiveJournal page</a> that describes the project, in vague detail. A couple more clicks, and you can find <a href="http://community.livejournal.com/themissinghat/tag/salmon+master" target="_blank">more</a> <a href="http://www.llamasonic.com/troutbot-mystery-solved-project-upstream" target="_blank">details</a> about it.</p>
<p>Essentially, from the comments on the LiveJournal page&#8230;</p>
<blockquote><p>&#8220;&#8230;Project Upstream was trying to identify the open minded people who would be willing to swim against the stream and chat with the random strangers with whom they were connected.&#8221;</p>
<p>&#8220;The world honestly needs more ways to reach out and meet each other. Connecting people randomly should be an every day occurrence. I can wait to see who I get paired up with next.&#8221;</p></blockquote>
<p>&#8230;the project is to connect random people on the internet, all part of a larger project/idea called &#8220;<a href="http://en.wikipedia.org/wiki/TheGreatHatsby" target="_blank">The Great Hatsby</a>&#8220;. Fortunately, they have included a command that you can send to stop receiving random connections to your screenname: &#8220;$optout&#8221;. Just send it to any of the spamfish and it will remove you from their list.</p>
<p>So there you have it, hope that helps get you started for finding out why you&#8217;re getting these messages from allergenicsalmon, liberatedsalmon, creepysalmon, or any other *salmon-derivative.</p>
<p><strong>Update</strong>: Since the original posting of this article, over 1.5 years ago, The Great Hatsby wikipedia page has been removed from the site. The article detailed how a similar project was done on the AOL Instant Messaging platform using trout-derivative screennames.<a href="http://twitter.com/neotsn"><img class="size-full wp-image-583  aligncenter" title="twitter.com/neotsn" src="http://thepizzy.net/blog/wp-content/uploads/2010/08/twitter-wordpress-neo12.png" alt="twitter.com/neotsn" width="350" height="125" /></a></p>

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

<p class='technorati-tags'>Technorati Tags: <a class='technorati-link' href='http://technorati.com/tag/aclockworkcoho' rel='tag' target='_blank'>aclockworkcoho</a>, <a class='technorati-link' href='http://technorati.com/tag/allergenicsalmon' rel='tag' target='_blank'>allergenicsalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/AutomatedCoho' rel='tag' target='_blank'>AutomatedCoho</a>, <a class='technorati-link' href='http://technorati.com/tag/creepysalmon' rel='tag' target='_blank'>creepysalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/Disorderlysalmon' rel='tag' target='_blank'>Disorderlysalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/excelletsalmon' rel='tag' target='_blank'>excelletsalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/foreignsalmon' rel='tag' target='_blank'>foreignsalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/glorioussalmon' rel='tag' target='_blank'>glorioussalmon</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/liberatedsalmon' rel='tag' target='_blank'>liberatedsalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/NanoScaleCoho' rel='tag' target='_blank'>NanoScaleCoho</a>, <a class='technorati-link' href='http://technorati.com/tag/paradoxicalsalmon' rel='tag' target='_blank'>paradoxicalsalmon</a>, <a class='technorati-link' href='http://technorati.com/tag/profiles' rel='tag' target='_blank'>profiles</a>, <a class='technorati-link' href='http://technorati.com/tag/project' rel='tag' target='_blank'>project</a>, <a class='technorati-link' href='http://technorati.com/tag/ProjectU' rel='tag' target='_blank'>ProjectU</a>, <a class='technorati-link' href='http://technorati.com/tag/ProjectUpstream' rel='tag' target='_blank'>ProjectUpstream</a>, <a class='technorati-link' href='http://technorati.com/tag/salmon' rel='tag' target='_blank'>salmon</a>, <a class='technorati-link' href='http://technorati.com/tag/TalkativeCoho' rel='tag' target='_blank'>TalkativeCoho</a>, <a class='technorati-link' href='http://technorati.com/tag/The+Great+Hatsby' rel='tag' target='_blank'>The Great Hatsby</a>, <a class='technorati-link' href='http://technorati.com/tag/tickingsalmon' rel='tag' target='_blank'>tickingsalmon</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/WoolenCoho' rel='tag' target='_blank'>WoolenCoho</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2009/02/project-upstream-and-the-salmon-spam-bots/feed/</wfw:commentRss>
		<slash:comments>17</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>twitter &amp; tsn.7</title>
		<link>http://thepizzy.net/blog/2008/01/twitter-tsn7/</link>
		<comments>http://thepizzy.net/blog/2008/01/twitter-tsn7/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 15:31:04 +0000</pubDate>
		<dc:creator>[[Neo]]</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[the-spot.net]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[buddy list]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[database backend]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[front page]]></category>
		<category><![CDATA[members]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpbb]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[rss reader]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tsn.7]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://thepizzy.net/blog/?p=100</guid>
		<description><![CDATA[With a new My Spot page comes new possibilities. This time around, I&#8217;m going to make a concerted effort to actually write in new code and attach a new database...]]></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" />With a new My Spot page comes new possibilities. This time around, I&#8217;m going to make a concerted effort to actually write in new code and attach a new database backend that pulls from the phpbb database and the users&#8217; accounts on the-spot.net.With this new plan, there will be increased ability to add features and remove features on the user-level&#8230;that is to say, you can choose what you want to see on the page.</p>
<p>There will also be some integration to popular social sites right on the My Spot page, like twitter and flickr &#8211; community based sites with an API that doesn&#8217;t require you to visit their site in order to view content.</p>
<p>Last night, I worked with the twitter.com API and with the RSS reader that I&#8217;ve hacked up in PHP, and turned out the twitter stream for the-spot.net&#8217;s twitter friends. That will go on the front page of the My Spot page so that everyone on tsn can know what all the other tsn members are twittering about.</p>
<p>The next thing I&#8217;m going to be doing with that is working on a way to allow the users to update their twitter status directly from tsn. That&#8217;s going to take a bit more work than displaying the feed, but it will be a good challenge.</p>
<p>On the previous version of the site, there was a flickr flash app that showed the new photos from the tsn flickr group. That will be coming back as well.</p>
<p>I&#8217;m also going to try to make the User Control Panel more accessible and integrate the Buddy List into the My Spot page so you can see when your favorite posters are online (since the information box at the bottom displays the last X minutes, and not &#8220;Currently&#8221; online).</p>
<p>I&#8217;m still trying to gather new ideas from everyone about what they&#8217;d like to see on the page&#8230;and I hope to make it modular like that previous My Spot page was so they can just be plugged in to the template based on information in the new database determining whether or not they wish to see that.</p>
<p>if you have any ideas &#8211; leave comments, or message me directly.</p>
<p style="text-align: right; font-size: 8px;">Blogged with <a title="Flock" href="http://www.flock.com/blogged-with-flock" target="_new">Flock</a></p>
<p><!-- technorati tags begin --></p>
<p style="font-size: 10px; text-align: right;">Tags: <a rel="tag" href="http://technorati.com/tag/the-spot.net">the-spot.net</a>, <a rel="tag" href="http://technorati.com/tag/tsn7">tsn7</a>, <a rel="tag" href="http://technorati.com/tag/%20my%20spot"> my spot</a>, <a rel="tag" href="http://technorati.com/tag/%20flickr"> flickr</a>, <a rel="tag" href="http://technorati.com/tag/%20twitter"> twitter</a>, <a rel="tag" href="http://technorati.com/tag/%20api"> api</a>, <a rel="tag" href="http://technorati.com/tag/%20programming"> programming</a>, <a rel="tag" href="http://technorati.com/tag/%20hacking"> hacking</a>, <a rel="tag" href="http://technorati.com/tag/%20rss"> rss</a>, <a rel="tag" href="http://technorati.com/tag/%20php"> php</a>, <a rel="tag" href="http://technorati.com/tag/%20tsn"> tsn</a>, <a rel="tag" href="http://technorati.com/tag/%20community"> community</a>, <a rel="tag" href="http://technorati.com/tag/%20integration"> integration</a>, <a rel="tag" href="http://technorati.com/tag/%20mashup"> mashup</a></p>
<p><!-- technorati tags end --></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/buddy+list' rel='tag' target='_blank'>buddy list</a>, <a class='technorati-link' href='http://technorati.com/tag/community' rel='tag' target='_blank'>community</a>, <a class='technorati-link' href='http://technorati.com/tag/database+backend' rel='tag' target='_blank'>database backend</a>, <a class='technorati-link' href='http://technorati.com/tag/flash' rel='tag' target='_blank'>flash</a>, <a class='technorati-link' href='http://technorati.com/tag/flickr' rel='tag' target='_blank'>flickr</a>, <a class='technorati-link' href='http://technorati.com/tag/front+page' rel='tag' target='_blank'>front page</a>, <a class='technorati-link' href='http://technorati.com/tag/members' rel='tag' target='_blank'>members</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/phpbb' rel='tag' target='_blank'>phpbb</a>, <a class='technorati-link' href='http://technorati.com/tag/RSS' rel='tag' target='_blank'>RSS</a>, <a class='technorati-link' href='http://technorati.com/tag/rss+reader' rel='tag' target='_blank'>rss reader</a>, <a class='technorati-link' href='http://technorati.com/tag/style' rel='tag' target='_blank'>style</a>, <a class='technorati-link' href='http://technorati.com/tag/template' rel='tag' target='_blank'>template</a>, <a class='technorati-link' href='http://technorati.com/tag/the-spot.net' rel='tag' target='_blank'>the-spot.net</a>, <a class='technorati-link' href='http://technorati.com/tag/tsn.7' rel='tag' target='_blank'>tsn.7</a>, <a class='technorati-link' href='http://technorati.com/tag/twitter' rel='tag' target='_blank'>twitter</a></p>

<!-- end wp-tags-to-technorati -->
]]></content:encoded>
			<wfw:commentRss>http://thepizzy.net/blog/2008/01/twitter-tsn7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

