<?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>Edward Stafford&#187; Internet</title>
	<atom:link href="http://www.edwardstafford.com/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.edwardstafford.com</link>
	<description>Technologist, Artist, and Geek</description>
	<lastBuildDate>Thu, 12 Aug 2010 17:59:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What are your credentials worth?</title>
		<link>http://www.edwardstafford.com/2010/02/03/what-are-your-credentials-worth/</link>
		<comments>http://www.edwardstafford.com/2010/02/03/what-are-your-credentials-worth/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:16:29 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[cybercrime]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/2010/02/03/what-are-your-credentials-worth/</guid>
		<description><![CDATA[Security Watch posted an interesting article today discussing the value of personal login credentials, or username and password combinations used to access online services. I often get asked question about why people hack into computers, or write and spread viruses and malware. My answer has always been that it&#8217;s less about damaging computers or systems [...]]]></description>
			<content:encoded><![CDATA[<div class="posterous_autopost">
<p><a title="The value of login Credentials" href="http://bit.ly/cLFx29" target="_blank">Security Watch posted an interesting article</a> today discussing the value of personal login credentials, or username and password combinations used to access online services. I often get asked question about why people hack into computers, or write and spread viruses and malware. My answer has always been that it&#8217;s less about damaging computers or systems anymore, and more about being stealthy and collecting valuable information that can be used for monetary gain. This article paints a general picture and help to explain of how much our information is worth, answering the question &#8211; Why do they do it?.</p>
<p><span style="font-family: Arial, Tahoma, Verdana; font-size: 12px; color: #222222; line-height: 20px;"> </span></p>
<div>Twitter credentials worth $1,000 to cybercriminals</div>
<div>Gmail account worth $80.00 +</div>
<p>According to the article, the actual value of account credentials is based mainly on <span style="font-family: Arial, Tahoma, Verdana; font-size: 12px; color: #222222; line-height: 20px;"><em>popularity of the application, and the `popularity’ of the account, but I&#8217;d </em><span style="color: #000000; font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: 13px;">also include type of application, authority of the account holder, and the probability of an account granting access to additional valuable data as determining overall value of the credentials.</span></span></p>
<p><a title="The Value of Your Login Credentials" href="http://bit.ly/cLFx29" target="_blank">Read the full Article here.</a></p>
<p style="font-size: 10px;"><a href="http://posterous.com">Posted via web</a> from <a href="http://edstafford.posterous.com/what-are-your-credentials-worth">Ed&#8217;s Posterous</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2010/02/03/what-are-your-credentials-worth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YouTube API Hack: Link Your Videos Directly to Your YouTube Channel</title>
		<link>http://www.edwardstafford.com/2009/08/07/youtube-api-hack-link-your-videos-directly-to-your-youtube-channel/</link>
		<comments>http://www.edwardstafford.com/2009/08/07/youtube-api-hack-link-your-videos-directly-to-your-youtube-channel/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 19:09:00 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Code Mode]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[SimplePie]]></category>
		<category><![CDATA[youtube api]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/?p=105</guid>
		<description><![CDATA[Wait! Your a Hacker? First of all, my use of the word &#8220;Hack&#8221; is not the version popularized by the media. It is used here in the context of using a tool (YouTube API) to accomplish a task that was not originally part of the tool&#8217;s design. By using some creative thinking and little trial [...]]]></description>
			<content:encoded><![CDATA[<h2>Wait! Your a Hacker?</h2>
<p><img class="alignleft size-medium wp-image-121" title="Hack It" src="http://www.edwardstafford.com/wp-content/uploads/swissarmy-300x225.jpg" alt="Hack It" width="300" height="225" />First of all, my use of the word &#8220;Hack&#8221; is not the version popularized by the media. It is used here in the context of using a tool (YouTube API) to accomplish a task that was not originally part of the tool&#8217;s design. By using some creative thinking and little trial and error, I was able to accomplish a desired result, and overcome a limitation of the API.</p>
<h2>Ready, Set, GO!!</h2>
<p>While working on a recent project I came across a mildly irritating limitation of the YouTube API. The thing is, I wanted to display a list of recently added YouTube video thumbnails to a web site that link back to the videos in the YouTube users channel.  Easy! right?</p>
<h2>Not So Fast!</h2>
<p>Here&#8217;s the thing. The channel feed returned by the API does include the link back to the YouTube Video, <strong>BUT</strong> it sends the visitor to the usual standard public YouTube page with the video embeded and <strong>NOT </strong>to the Channel of the YouTube member who uploaded it.</p>
<p>For most, this would be fine. But I wanted to be able to preserve a connection and identity between the web site and the YouTube Channel.</p>
<p>Unfortunately, the YouTube API does not provide a direct way to do this [link videos back directly to the YouTube Channel instead of the standard YouTube page]. So what&#8217;s a developer to do? &#8230; Come up with a hack, of course!! (even if is is a small one)..</p>
<h2>First A Note:</h2>
<p>This solution uses the <a title="http://simplepie.org/" href="http://simplepie.org/" target="_blank">Simplepie PHP Code Library</a> to grab the Channel RSS feed</p>
<h2>The Code:</h2>
<blockquote><p>&lt;?php</p>
<p>require_once(&#8216;php/simplepie.inc&#8217;);</p>
<p>$feed = new SimplePie(&#8216;http://gdata.youtube.com/feeds/api/users/[user name]/uploads&#8217;);</p>
<p>$feed-&gt;handle_content_type();</p>
<p>$YT_PlayerPage = &#8220;http://www.youtube.com/user/[user name]#play/uploads/&#8221;;</p>
<p>$YT_VideoNumber = 0;<br />
$ShowMax = 4;</p>
<p>foreach ($feed-&gt;get_items() as $item)<br />
{</p>
<p>if ($enclosure = $item-&gt;get_enclosure())<br />
{</p>
<p>$YT_VidID = substr(strstr($item-&gt;get_permalink(), &#8216;v=&#8217;), 2, 11);</p>
<p>echo &#8216;&lt;a href=&#8221;&#8216; . $YT_PlayerPage . $YT_VideoNumber . &#8220;/&#8221; . $YT_VidID . &#8216;&#8221;title=&#8221;&#8216; . $item-&gt;get_title() . &#8216;&#8221;&gt; &lt;img src=&#8221;&#8216; . $enclosure-&gt;get_thumbnail() . &#8216;&#8221;/&gt;&lt;/a&gt;&#8217;;</p>
<p>}<br />
if($YT_VideoNumber == $ShowMax) break;<br />
$YT_VideoNumber++;<br />
}<br />
?&gt;</p></blockquote>
<h2>Tiptoe Through the Tulips (or walking through the code)</h2>
<p>There you have it. A small block of PHP code and we have the result we&#8217;re looking for. Now let&#8217;s take a look at each line in the code.</p>
<blockquote><p>require_once(&#8216;php/simplepie.inc&#8217;);</p></blockquote>
<p>This line does nothing more than call/include the Simplepie Library. The one thing you may need to change here is the location of the library. I stored it in a directory at the root of my web called &#8220;php&#8221;. So depending where you store your copy of the library, you may need to change this.</p>
<blockquote><p>$feed = new SimplePie(&#8216;http://gdata.youtube.com/feeds/api/users/[user name]/uploads&#8217;);</p></blockquote>
<p>The next line creates a new feed and stores it as $feed. Pretty creative.. huh? Whats happening here is simplepie is grabing the rss feed for the YouTube Channel&#8217;s Uploaded videos.</p>
<p>An important note to make here is that the URI for the RSS passed to SimplePie is not the same as the RSS URI that you would use to subscribe to the channel&#8217;s RSS feed to use with your RSS reader. You will also need to replace [user name] in the URI with the YouTube user name for the channel you want to pull videos from.</p>
<p>The Standard RSS Subscription URI looks like this:<br />
http://gdata.youtube.com/feeds/<span style="text-decoration: underline;"><strong>base</strong></span>/users/[user name]/uploads</p>
<p>While the URI used by the API to grab the RSS looks like this:<br />
http://gdata.youtube.com/feeds/<span style="text-decoration: underline;"><strong>api</strong></span>/users/[user name]/uploads</p>
<p>Notice the difference indicated in bold text (&#8220;base&#8221; vs &#8220;api&#8221;). You will need to be sure you use &#8220;API&#8221; version of the URI. You can get this by copying the public RSS URI and simply changing &#8220;base&#8221; to &#8220;api&#8221;.</p>
<p>At the next line we have:</p>
<blockquote><p>$feed-&gt;handle_content_type();</p></blockquote>
<p>This just makes sure the content is being served out to the browser properly.</p>
<p>The next three lines contain three variables I&#8217;ve added: $<strong>YT_PlayerPage, $YT_VideoNumber</strong> and <strong>$ShowMax</strong></p>
<blockquote><p>$YT_PlayerPage = &#8220;http://www.youtube.com/user/[user name]#play/uploads/&#8221;;</p></blockquote>
<p>This is the first part of the key to getting YouTube links to point directly to the Channel page. This variable holds the base Channel player URI and is used to construct a complete video link. The completed URI link also includes a counter reference and the unique 11 character video ID. To get the URI for the channel player page, visit the YouTube Channel you&#8217;re grabing the video feed from and click on a video link. The complete URI for that video will appear in the browser&#8217;s address bar. Simply copy that URI and eliminate everything following the backslash &#8220;/&#8221; after &#8220;uploads&#8221; (indicated in <strong><span style="color: #ff0000;">red</span></strong>)</p>
<p>http://www.youtube.com/user/[user name]#play/uploads/<span style="color: #ff0000;"><strong>#/xxxxxxxxxxx</strong></span></p>
<blockquote><p>$YT_VideoNumber = 0;</p></blockquote>
<p>The links on the YouTube Channel page contain a counter in the URI and increases by +1 with each link. This is the second part of the key in constructing the direct Channel links. This counter was a portion of the link that was removed in <strong>$YT_PlayerPage</strong>. I&#8217;m not completely clear on what the purpose of the counter is and in my experimenting with this, it did not seem to make a difference what the counter value was as long as the video ID followed it. But since it is the format that is used on YouTube&#8217;s Channel pages, I&#8217;ve figured it would be best to recreate the same thing here. Besides, we are going to use that value later in the code. I&#8217;ve set the initial value of the variable to 0 (zero) because the counter is zero based. (0, 1, 2 &#8230; )</p>
<blockquote><p>$ShowMax = 4;</p></blockquote>
<p>The next line contains the <strong>$ShowMax</strong> variable. This is used to set a limit to the number video links I wanted to display on the page. BUT, there is a trick you need to be aware of here. We are using the <strong>$YT_VideoNumber</strong> to get the counter number for the current video in the Loop (the loop will be described in the next section). But because <strong>$YT_VideoNumber</strong> is zero based, we need to compensate for that in the <strong>$ShowMax</strong> Variable and offset the limit by -1. In other words, to limit the display to 5 items, we need to set <strong>$ShowMax </strong>to 4 because we are including 0 as the first item (0 1 2 3 4) for a total of 5 items. Got it?&#8230; good!</p>
<blockquote><p>foreach ($feed-&gt;get_items() as $item)<br />
{</p></blockquote>
<p>These lines start/open the Loop getting each item in the feed. This is where the code will &#8220;loop&#8221; through each item (video) in the feed and extract the information I wanted for each video.</p>
<blockquote><p>if ($enclosure = $item-&gt;get_enclosure())<br />
{</p></blockquote>
<p>This line sets a conditional variable ($enclosure) to check if the current item in the loop contains enclosure data provided by MRSS (Multimedia RSS) that might be provided with the feed. YouTube feeds do support and provide MRSS enclosure data and we need to be able to pull it from the feed. The get_enclosure() method is part of the SimplePie Library and makes getting access to this data pretty easy.</p>
<blockquote><p>$YT_VidID = substr(strstr($item-&gt;get_permalink(), &#8216;v=&#8217;), 2, 11);</p></blockquote>
<p>This line is the final [and probably most important] part of the key to constructing the Channel video link.  It&#8217;s also the most confusing part at first sight. I mentioned earlier that a video link is provided with the feed that will direct the viewer to a the standard public YouTube page for viewing. This link contains the video ID that we need. The bad news is that the API as far as I could see does not allow a direct or easy way to get the ID for each video [please correct me if I'm wrong here]. The good news is that the ID can be extracted from the link provided with the feed, and that&#8217;s exactly what this line does.</p>
<p>$item-&gt;get_permalink() returns the URI / video  that would direct a visitor to the standard YouTube page. The URI is similar to:<br />
http://www.youtube.com/watch?<span style="color: #ff0000;"><strong>v=xxxxxxxxxxx</strong></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">v=xxxxxxxxxxx of the URI contains the video ID and needs to be extracted.</span><br />
</span></p>
<p><em><strong>substr(strstr($item-&gt;get_permalink(), &#8216;v=&#8217;), 2, 11)</strong> </em>isolates and extracts the video ID and then stores the ID in the <strong>$YT_VidID </strong>variable.</p>
<p><strong>Lets have a closer look.</strong><br />
We need to find the position in the URI string where the video ID starts and then extract it.</p>
<p>The video ID is passed in the URI as in query string paramater &#8220;v&#8221;.  I used the PHP strstr() method to match and find the position of &#8220;v=&#8221;. This will create a new string eliminating everything in front &#8220;v=&#8221; so we are left with &#8220;<span style="color: #ff0000;"><span style="color: #000000;">v=xxxxxxxxxxx&#8221;.</span></span></p>
<p>If you look close, you&#8217;ll notice that <em><strong>strstr($item-&gt;get_permalink(), &#8216;v=&#8217;) </strong></em>and therefore the resulting string, is actually used as the string argument in the substr() method used to isolate the video ID.<em><br />
</em></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"> </span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">The second argument, &#8220;2&#8243; tells the substr method to offset the beginning of the string by two characters. This is to eliminate the &#8220;v&#8221; and &#8220;=&#8221; characters and moves the substring start position to the character after the &#8220;=&#8221; which is the first character of the Video ID. </span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">The third argument, 11, tells the substr method to isolate the next eleven characters from the start position, leaving us with the full video ID &#8220;xxxxxxxxxxx&#8221;.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"> In experimenting and playing with this, I found that all YouTube video IDs are 11 characters long. I limited the substring to 11 instead of allowing it to extend to the end of the URI because, if for some reason additional string data was passed with the URI after the video ID, it would be included as part of  the extracted string and the result would be an invalid ID.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">After all that, I had the golden nugget of an isolated video ID which is now stored in the </span></span><strong>$YT_VidID </strong>variable. The hard part is DONE!! (really, it wasn&#8217;t that hard).</p>
<blockquote><p>echo &#8216;&lt;a href=&#8221;&#8216; . $YT_PlayerPage . $YT_VideoNumber . &#8220;/&#8221; . $YT_VidID . &#8216;&#8221;title=&#8221;&#8216; . $item-&gt;get_title() . &#8216;&#8221;&gt; &lt;img src=&#8221;&#8216; . $enclosure-&gt;get_thumbnail() . &#8216;&#8221;/&gt;&lt;/a&gt;&#8217;;</p></blockquote>
<p>The three key pieces needed to construct the direct Channel URIs are now available and the links can be put together. This line, still contained in our loop, constructs the link for each video item in the feed and outputs the HTML markup that will be included in the rendered page. To construct the link, join the three key pieces (the variables) like so:</p>
<p><strong>$YT_PlayerPage . $YT_VideoNumber . &#8220;/&#8221; . $YT_VidID</strong></p>
<p>$YT_PlayerPage = The base URI.<br />
$YT_VideoNumber = The video counter<br />
include a &#8220;/&#8221; character<br />
$YT_VidID = The video ID</p>
<p>The output should look like:<br />
http://www.youtube.com/user/[user name]#play/uploads/<span style="color: #000000;">#/xxxxxxxxxxx</span></p>
<p>Include this string as the value of the href of an HTML &lt;a&gt; tag.<br />
<strong>&#8216;&lt;a href=&#8221;&#8216; . $YT_PlayerPage . $YT_VideoNumber . &#8220;/&#8221; . $YT_VidID . &#8216;</strong><br />
Next add a &#8220;title&#8221; attribute to the &lt;a&gt; tag and set the value to $item-&gt;get_title().<br />
<strong>&#8220;title=&#8221;&#8216; . $item-&gt;get_title() . &#8216;&#8221;&gt;</strong><br />
This will create a hover text that shows the title of the video when the cursor hovers over the link.</p>
<p>Next, include the link content (text or image to act as the visible link). In my sample, I&#8217;ve used a thumbnail of each video.<br />
<strong>&lt;img src=&#8221;&#8216; . $enclosure-&gt;get_thumbnail() . &#8216;&#8221;/&gt;</strong><br />
Note that again I&#8217;m extracting the enclosure data included with MRSS as part of the RSS feed to get the thumbnail image for each video.</p>
<p>Finally add the closing &lt;/a&gt; tag to complete.</p>
<h2>But wait &#8230; There&#8217;s more!!</h2>
<blockquote><p>}</p></blockquote>
<p>The next line is nothing more than a closing bracket that closes and completes the conditional statement that checks for the enclosure data.</p>
<blockquote><p>if($YT_VideoNumber == $ShowMax) break;</p></blockquote>
<p>Remember the <strong>$ShowMax</strong> variable? This is where it comes into play. We are using the $YT_VideoNumber variable that was added to hold the counter for the current video and comparing it to the <strong>$ShowMax</strong> variable used to limit the number of videos the page will display. With each iteration of the loop, the code extracts the information for each video item and increments the counter by +1. The counter actually serves two purposes in the code. First,  to be used in constructing the video URI and second, to control the point at which the loop is to be exited. Why?.. If our video feed has 100 items and we only want to display 5 of them, then it does not make any sense to continue stepping through the loop to read the remaining items. So after we get what we want, we exit the loop to save resources.</p>
<p><strong>What&#8217;s happening here is this:</strong><br />
If the current <strong>$YT_VideoNumber</strong> variable value for the current iteration of the loop matches the value of the <strong>$ShowMax</strong> variable, then &#8220;break&#8221; (exit) out of the loop and we&#8217;re done.</p>
<blockquote><p>$YT_VideoNumber++;</p></blockquote>
<p>BUT, if the values of these variables does not match, then the next line increments the <strong>$YT_VideoNumber</strong> by +1 and continues to the next iteration of the loop.</p>
<blockquote><p>}</p></blockquote>
<p>And Finally, there is the closing bracket of the loop which also brings us to the end of the code block.</p>
<p>So that&#8217;s it. This code will render a set of YouTube video thumbnails in a web page that will link directly back to the video on the YouTube member&#8217;s channel page where ever it is included. But don&#8217;t stop there. Have a look at the other methods available in the YouTube API and SimplePie Library for additional information and data you can extract and use, add your own CSS and markup to the the output to change the layout, appearance, function &#8230; whatever you want.</p>
<p>I hope you found this useful. If you have any thoughts, improvements or comments to share, please post in the comments section here.</p>
<p><strong>And if you do use this in your own projects, I&#8217;d really appreciate a comment in your code, a shoutout or link back to this post. </strong></p>
<p>Happy coding!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2009/08/07/youtube-api-hack-link-your-videos-directly-to-your-youtube-channel/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RSS: What is it, and how do I use it?</title>
		<link>http://www.edwardstafford.com/2008/10/20/rss-what-is-it-and-how-do-i-use-it/</link>
		<comments>http://www.edwardstafford.com/2008/10/20/rss-what-is-it-and-how-do-i-use-it/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 21:29:28 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/?p=39</guid>
		<description><![CDATA[RSS What? RSS &#8211; We&#8217;ve all heard about it (or at least should have by now), but may not really understand what it is, what it does, and how it can add value to what we do every day. RSS, originally an acronym for &#8220;Rich Site Summary&#8221; today is known as &#8220;Really Simple Syndication&#8221; and [...]]]></description>
			<content:encoded><![CDATA[<h2>RSS What?</h2>
<p style="text-align: left;">RSS &#8211; We&#8217;ve all heard about it (or at least should have by now), but may not really understand what it is, what it does, and how it can add value to what we do every day.</p>
<p style="text-align: left;">RSS, originally an acronym for &#8220;<strong>Rich Site Summary</strong>&#8221; today is known as &#8220;<strong>Really Simple Syndication</strong>&#8221; and is a technology that allow us to aggregate news and information with very little effort and time. In the &#8220;Old Days&#8221; of the internet, in order to keep track of sites or news we found online, we had to rely on the option of Bookmarking or creating &#8220;favorites&#8221; in our browser, and then manually visiting these sites to see if there were any new updates or additions. If your in a position where you need to keep up on lots of topics, news, and changes that happen daily, then you will likely build a collection of bookmarks that could grow well into the hundreds. Let&#8217;s face it, at that point there is no efficient way you can manually organize and check each of these sites individually and still keep up with all your daily responsibilities at the same time.</p>
<h2>RSS To The Rescue!</h2>
<p style="text-align: left;">Why is RSS a better option than Bookmarking? Simple! Time, Effort, Near Real-time news access. Think of it like this: Instead of making the time and effort it takes to run out to your local news stand for the various daily news papers, the news is now delivered right to your doorstep. Now consider the morning news edition, the evening edition, the late edition, etc. That adds up to a lot of news papers and a lot of trips to the news stand. And what about breaking news? There&#8217;s a good chance you&#8217;d miss out on something timely if you had to go get it yourself. RSS takes all the time and effort away from getting your news and information and delivers it ALL to you, keeping you informed and up-to-date!</p>
<h2>Wow, That&#8217;s Great, But How Do I Use it?</h2>
<p>To get started with RSS, you first need a RSS or &#8220;feed&#8221; reader. There are many available, but my favorites are Netvibes (<a title="Netvibes Web Service - RSS" href="http://netvibes.com" target="_blank">netvibes.com</a>) and Google Reader. For the record, I use netvibes for all my RSS needs. Because readers have different methods for adding and managing feeds, I will not cover that portion here and save it for another post.</p>
<p>Once you have decided on a reader, the next thing you need to do is find the RSS Feeds you want delivered. How do you do that? RSS feeds have adopted an icon that makes identifying them easy.</p>
<div class="wp-caption aligncenter" style="width: 110px"><a href="http://www.edwardstafford.com/wp-content/uploads/100px-feed-iconsvg.png" target="_blank"><img class="title=" src="http://www.edwardstafford.com/wp-content/uploads/100px-feed-iconsvg.png" alt="Standard RSS Icon" width="100" height="100" /></a><p class="wp-caption-text">Standard RSS Icon</p></div>
<p style="text-align: center;"><strong></strong></p>
<p style="text-align: center;">
<div id="attachment_41" class="wp-caption aligncenter" style="width: 537px"><img class="size-full wp-image-41" title="Rss Icon shown in Firefox Browser Address Bar" src="http://www.edwardstafford.com/wp-content/uploads/croppercapture-15.png" alt="RSS Address Bar Icon" width="527" height="34" /><p class="wp-caption-text">RSS Icon in Firefox Address Bar</p></div>
<p style="text-align: center;"><strong></strong></p>
<p style="text-align: left;">If you see this icon on a web page or in your FireFox Browser Address Bar, then the site or page you are on has a live RSS feed that you can &#8220;<strong>subscribe</strong>&#8221; to or add to your RSS Reader. Some sites may also simply provide a &#8220;subscribe&#8221; link but be careful to be sure it is an RSS feed link and NOT an email newsletter subscription link.</p>
<div id="attachment_43" class="wp-caption alignleft" style="width: 199px"><a href="http://www.edwardstafford.com/blog/wp-content/uploads/copylink.png"><img class="size-medium wp-image-43" title="Copy Link Location" src="http://www.edwardstafford.com/wp-content/uploads/copylink.png" alt="Copy Link Location" width="189" height="183" /></a><p class="wp-caption-text">Getting the RSS Address: Firefox</p></div>
<p style="text-align: left;">Once you have located the RSS Feed link you can right-click the link and select &#8220;<strong>Copy Link Location</strong>&#8220;. This will copy the URL of the RSS feed to the clipboard of your computer. Once you&#8217;ve copied the URL, you will need to paste it into your preferred RSS feed reader where it will display headlines, links and descriptions of the host web page or site.</p>
<p style="text-align: left;"><em>Again, depending on your preferred reader, adding feeds may differ and I will not describe the different methods for each reader here. Consult the FAQ or instructions available from your Feed Reader for information on that.</em></p>
<div style="clear:both">In some limited cases, the &#8220;copy link location&#8221; option does not always produce a usable RSS feed link. If this happens, you are still able to click through on the link which will open a new page listing the RSS feed either in a readable web page format, or in the native RSS XML syntax. From this page, now you can simply copy the URL directly from the Browser&#8217;s Address Bar and paste it into your Reader.</div>
<div style="clear:both">
<div id="attachment_45" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.edwardstafford.com/wp-content/uploads/screencap_rssurl.png"><img class="size-medium wp-image-45" title="RSS Feed URL" src="http://www.edwardstafford.com/wp-content/uploads/screencap_rssurl-300x216.png" alt="RSS Feed Url Seen in Firefox" width="300" height="216" /></a><p class="wp-caption-text">Copying the RSS Address from the browser</p></div>
</div>
<div style="clear:both">
<p style="text-align: center;">
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/10/20/rss-what-is-it-and-how-do-i-use-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>5 Tips for better Wiki pages.</title>
		<link>http://www.edwardstafford.com/2008/10/12/5-tips-to-consider-when-contributing-to-a-wiki/</link>
		<comments>http://www.edwardstafford.com/2008/10/12/5-tips-to-consider-when-contributing-to-a-wiki/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 00:12:36 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/?p=38</guid>
		<description><![CDATA[Wikis are great for sharing, documenting and archiving information. We Recently launched one for our company&#8217;s intranet to improve communication and allow better collaboration. Because wikis are intended to be an open platform to promote communication and collaboration equally across the organization, we try to encourage everyone to contribute. Unfortunately, I quickly learned that people [...]]]></description>
			<content:encoded><![CDATA[<p>Wikis are great for sharing, documenting and archiving information. We Recently launched one for our company&#8217;s intranet to improve communication and allow better collaboration. Because wikis are intended to be an open platform to promote communication and collaboration equally across the organization, we try to encourage everyone to contribute. Unfortunately, I quickly learned that people can have different ideas regarding good page format, or may not know how to properly format a page at all. This can quidkly lead to mess of unruly pages that are difficult to read and navigate. So, I put together a list of five tips that I thought would help make formating wiki page content a little easier and make the pages less challanging to read and navigate.</p>
<p>When creating a new page, or editing an existing one, keep these tips in mind.</p>
<ol>
<li> <strong>Say No To Word:</strong> Unless the wiki has a built-in feature to deal gracefully with Microsoft Word syntax, Please Please Please&#8230;avoid copy-and-paste from word documents. Word documents create ugly HTML syntax that is difficult to edit and manage within the wiki (or any wysiwyg or web editor for that matter). It also creates pages that are structurally difficult to read and navigate without additional formatting and editing. As an alternative, save word documents as Rich Text Files, or plain text files then copy-and-paste into the wiki from there, then edit and format the content in the wiki using the wiki editing tools.</li>
<li><strong>Use Headers and sub-headers</strong>: Add headers and sub-headers when appropriate to organize your content on the wiki page. Using headers will not only help to visually separate each important section of your page, but they will also auto-create a page index or TOC (Table of contents) making it easy for users to find and navigate page content.</li>
<li><strong>Making The list:</strong> Use Ordered (numbered) lists and Unordered (bulleted) lists when creating lists of items. This makes each item in a list easy to identify and improves readability.</li>
<li><strong>Use An Opening Introduction:</strong><strong> </strong>If your creating a new wiki page, always try include some information in a small paragraph at the top of each page describing what the content is about, and how it can be used. It is also helpful to include a small description below each heading and sub-heading as well. This helps readers to quickly identify the content and how it can be used.</li>
<li><strong>Can I Quote You On That? :</strong> Provide citations and supporting links to references when possible. Besides giving credit where credit is due, citations allows readers to confirm the validity of your input and lead them to additional sources of reference.</li>
</ol>
<p>Do you have any other tips? Please leave a comment and share them here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/10/12/5-tips-to-consider-when-contributing-to-a-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How-to: Active Directory Authentication with WordPress</title>
		<link>http://www.edwardstafford.com/2008/07/15/36/</link>
		<comments>http://www.edwardstafford.com/2008/07/15/36/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 22:25:45 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[IT Administration]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Social Media and Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/2008/07/15/36/</guid>
		<description><![CDATA[Why Use Active Directory with WordPress? I recently set up a WordPress Blog internally for our company to use over our intranet to help improve communication, collaborate, share and develop ideas, and stay informed about company announcements or current events.. etc. One of the requirements I had was to allow authentication against our Active Directory. [...]]]></description>
			<content:encoded><![CDATA[<h2>Why Use Active Directory with WordPress?</h2>
<p>I recently set up a WordPress Blog internally for our company to use over our intranet to help improve communication, collaborate, share and develop ideas, and stay informed about company announcements or current events.. etc.</p>
<p>One of the requirements I had was to allow authentication against our Active Directory. Yes, we operate a Windows network primarily, but you can also authenticate against other LDAP directories as well. This was important from an IT position as well as the participants of the blog. I felt people would be more likely to participate if they didn&#8217;t have to manage separate user accounts for each service on the intranet. I also set up a Wiki that is Active Directory enabled. I&#8217;ll post about that at a later time. The point is, it makes little sense to create different credentials for each user with each new service. It not only becomes a hassle for IT to track and manage the accounts, it&#8217;s also a drag for participants to keep track of and manage their username and password pairs for each service. The result would most likely lead to lack of use and that is not what we want.</p>
<p>Integrating the existing Active Directory accounts means that each participant can access these services using the same credentials they use to access or log into their network accounts and desktops. When time comes to change passwords, you need only to update the Active Directory account and your done. Simple! What could be better?</p>
<h2><strong>Starting Point</strong></h2>
<p>The first thing we needed to do was find out how to include AD Authentication with WordPress 2.5. There are a small number of plugins that claim to allow AD Authentication, but from what I came across, most of them were older and no longer actively maintained. But&#8230;there were two in particular that still showed signs of being actively maintained and had promise.</p>
<p>The first was was aptly called &#8220;<a href="http://wordpress.org/extend/plugins/active-directory-authentication/" target="_blank">Active Directory Authentication</a>&#8221;</p>
<p>The other plugin and the ultimately the one I managed to successfully include is <a href="http://wordpress.org/extend/plugins/wpdirauth/" target="_blank">wpDirAuth</a>.</p>
<h2>The Trials</h2>
<p>Although I was able to get wpDirAuth to work with WordPress 2.5, there was a catch. The current &#8220;Official&#8221; release of wpDirAuth as of this writing is version 1.2 which is not compatible with WordPress 2.5 so there was some work involved to make this happen. I visited the wpDirAuth plugin page to look at the install directions. They seemed easy enough. It wasn&#8217;t until I actually installed and activated the plugin that I realized it wouldn&#8217;t work. My next stop was the support channel that the author set up to help troubleshoot install and authentication issues. It was here that I learned there was a patch already available and provided by a generous wpDirAuth user &#8211; <strong>Adam Yearout.</strong> I applied the patch and then tried to login with my network credentials again, and &#8230; No luck! By now I was scratching my head. Searching and reading all the information I could find, I finally found myself on the wpDirAuth Developer Support Channel. This was another channel set up specifically for developers. It was here that I uncovered some clues as to what was happening and a small code tweak that was necessary to overcome the problem. Apparently, the author of the plugin assumed that the login name was also the name associated with the Active Directory Account Email, which in most cases is true, but not always. For example username: johndoe would by default have an email johndoe@domain.com. In my case, my email and name and login name were not the same, so the logic that the plugin author used would not work. The good news is that the fix is a fairly simple one if you know where to look and the dev channel contained all the clues needed to find the info.</p>
<h2>Setting up wpDirAuth with WordPress 2.5</h2>
<p>For this how-to, I am using wordpress 2.5 installed on an Ubuntu 8.04 LTS server With Apache2 and PHP5. There is no GUI and I am not running an ftp server on this server so all settings and changes are completed using putty over SSL.<span id="more-36"></span></p>
<p>So lets get to it. Setting up AD Authentication was not as straight forward as I had hoped and required a few extra steps along the way.</p>
<p>The first step is to <a title="download the wpDirAuth plugin" href="http://downloads.wordpress.org/plugin/wpdirauth.1.2.zip">download the wpDirAuth plugin</a> from the WordPress plugins section.</p>
<p>From a terminal or if logged into the server via Putty, change to your home directory and get the latest version of the wpDirAuth plugin.</p>
<div class="myCode"><strong>cd /home/your_account_name<br />
wget http://downloads.wordpress.org/plugin/wpdirauth.1.2.zip</strong></div>
<div class="myNotes"><strong>Note</strong>: the file is compressed as a .zip so you may need to run:</p>
<p><strong>sudo apt-get install unzip</strong></p>
<p>before you can extract the files.</p></div>
<p>Next extract the files by executing:</p>
<div class="myCode"><strong>unzip wpdirauth.1.2.zip</strong></div>
<p>Now you have a new directory called wpdirauth.1.2 in your home directory.<br />
Move into the new directory and list the contents using</p>
<div class="myCode"><strong>cd wpdirauth.1.2<br />
ls</strong></div>
<p>Now you will see the wpdirauth directory. You need to move this entire directory to your WordPress plugins directory.</p>
<div class="myNotes"><strong>Note</strong>:The following instructions and paths are specific to my server. You may need alter these instructions to meet your needs.</div>
<p>To move the extracted wpdirauth directory, make sure you are in the wpdirauth.1.2 directory and execute the command:</p>
<div class="myCode"><strong>cp -r wpdirauth /var/www/wpblog/wp-content/plugins</strong></div>
<p>Now we need to move into the actual WordPress Blog directory where our files are hosted by executing the command:</p>
<div class="myCode"><strong>cd /var/www/wpblog/wp-content/plugins</strong></div>
<p>Now if you execute</p>
<div class="myCode"><strong>ls</strong></div>
<p>you should see the wpdirauth plugin folder. Once again, we will change directories and move into the hosted wpdirauth directory using:</p>
<div class="myCode"><strong>cd wpdirauth</strong></div>
<p>This is where the editing (and the fun) begins.<br />
Remember, we need to make some changes before we activate this plugin in WordPress 2.5 or it will not work.</p>
<h2>Patching the wpdirauth plugin</h2>
<p>Before making any changes to our files, it&#8217;s alway a good idea to make some backups.</p>
<p>From the wpdirauth execute the command:</p>
<div class="myCode"><strong>cp wpdirauth.php wpdirauth.php.orig</strong></div>
<p>Next apply the patch that was just downloaded. This patch will make changes to the wpdirauth.php file, and update the Plug-in version for 1.2 to 1.3</p>
<p>Apply the patch by executing the command:</p>
<div class="myCode"><strong>patch -p1 &lt; ../wpDirAuth-1.2-to-1.3.patch</strong></div>
<div class="myNotes">Note: You need patch installed to execute the following command. If Patch is not installed, you can install it by executing:</p>
<p><strong>sudo apt-get install patch</strong></div>
<h2>Editing the plugin</h2>
<p>Once the patch is installed, your Active Directory authentication should for most people. But we are not done yet.</p>
<p>There is an issue related to Active Directory users names and their email addresses. Active Directory user accounts that are also created with an email address, are by default given an address equal to the login name.<br />
For example an Active Directory user created with a login name of johndoe would have an email address of johndoe@domain.com. The problem arises in the way that wpDirAuth authenticates against Active Directory using the email address. If at some point, the users default email address is changed, the login name does not match the email address and authentication fails. The fix is a simple one if you know where to look.</p>
<p>To prevent authentication failure due to the login name and email mismatch, you need to make a small edit to the wpdirauth.php file. Start by executing the following command:</p>
<div class="myCode"><strong>sudo nano wpdirauth.php</strong></div>
<div class="myNotes"><strong>Note</strong>: I am using nano to edit files on the system. You can use any text editor you have available on your system.</div>
<p>Next, scroll through the file till you find the  wpDirAuth_auth() function at line 246. It should be about 1/4 of the way down the page. Edit this function as follows:</p>
<p>At about line 273 find the line</p>
<div class="myCode">if ($accountSuffix) $username .= $accountSuffix;</div>
<p>and delete or comment it out.</p>
<p>Next move down to about line 284 and look for the line that reads:</p>
<div class="myCode">$filterQuery = &#8220;($filter=$username)&#8221;;</div>
<p>Add a new line after this and enter the following:</p>
<div class="myCode">if ($accountSuffix) $username .= $accountSuffix;</div>
<p>Basicly, we are just moving the line &#8220;if ($accountSuffix) $username .= $accountSuffix;&#8221; down a few lines and adding it after the line &#8221; $filterQuery = &#8220;($filter=$username)&#8221;; &#8221;</p>
<p>This is the snippet of the the  wpDirAuth_auth() function after I made the changes look like this.</p>
<div class="myCode">function wpDirAuth_auth($username, $password)<br />
{<br />
&#8230;.&lt;PHP Code Lines removed for sample&gt;&#8230;.</p>
<p><strong>/**<br />
* This section commented out to enable AD email/username mismatch.<br />
* if ($accountSuffix) $username .= $accountSuffix;<br />
*/</strong></p>
<p><strong></strong>/**<br />
* Only setup protocol value if ldaps is required to help with older AD<br />
* @see http://groups.google.com/group/wpdirauth-support/&#8230;<br />
*/</p>
<p>$protocol = ($enableSsl) ? &#8216;ldaps://&#8217; : &#8221;;</p>
<p>if (!$filter) $filter = WPDIRAUTH_DEFAULT_FILTER;</p>
<p>$filterQuery = &#8220;($filter=$username)&#8221;;</p>
<p><strong> /**<br />
* Next Line added to enable AD email/username mismatch<br />
*/</strong></p>
<p>if ($accountSuffix) $username .= $accountSuffix;</p>
<p>// Connection pool loop &#8211; Haha, PooL LooP<br />
foreach ($controllers as $dc) {</p>
<p>&#8230;.&lt;PHP Code Lines removed for sample&gt;&#8230;.</p></div>
<h2>Activating the Plugin</h2>
<p>One requirement that may still be missing is php&#8217;s LDAP support. If you do not already have support for LDAP enabled in php, you will need to enable it before you can authenticate against the Active Directory.<br />
To enable LDAP in PHP, execute the following command</p>
<div class="myCode"><strong>sudo apt-get install php5-ldap</strong></div>
<p>At this point, and assuming everything went well, it&#8217;s time to log into your WordPress Blog as the WordPress Admin and navigate to the &#8220;settings&#8221; page. From here, you will see a &#8220;Directory Auth&#8221; link at the top of your settings page. click this link to access the Directory Auth setup page and fill in the required fields as they apply to your Active Directory set up.</p>
<p><strong>Enable Directory Authentication</strong> = yes<br />
<strong> Require SSL Login</strong> = Yes if you use SSL Auth, No if you do not.<br />
<strong> Enable SSL Connectivity</strong> = yes if you are using SSL or LDAPS connections, No if you are not.<br />
<strong> Directory Servers (Domain Controllers) </strong>= DNS Name or IP Address of your Active Directory Domain Controller<br />
<strong> Account  Filter</strong> = samAccountName or field to search the username to locate the directory profile. For AD, samAccountName should work.<br />
<strong> Account Suffix</strong> = @yourdomain.com &#8211; This is the suffix for you local domain usen in email addressing in the AD for you local network.<br />
<strong> Base DN</strong> = DC=domainname,DC=com &#8211; Note this will vary depending on you local network and complexity of your AD<br id="dp9s" /><strong>Bind DN</strong> = Blank if you allow Anonymous Binding to your Directory or a username use to pre-bind if you do not.<br />
<strong>Bind Password </strong>= Blank if you allow Anonymous Binding to your Directory or the password of the user used to pre-bind if you do not.</p>
<p>The remainder of the fields are self explanatory and are not critical to successful authentication.</p>
<div class="myNotes"><strong>Note</strong>: One of the easiest ways to get the correct Base DN for Active Directory is to use the ADSI Edit utility</div>
<p>Now save the changes and log out of the WordPress Admin account.<br />
Next attempt to login to WordPress using an Active Directory User Account.</p>
<p>You should now have Active Directory Authentication enabled and working with WordPress.</p>
<p>Remember, your mileage may vary depending on your specific needs and existing network and Active Directory structure.</p>
<p>Have any other tips, or want to share your experience with AD authentication in WordPress? Leave a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/07/15/36/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zone Alarm Plus Microsoft Update Prevents Internet Access</title>
		<link>http://www.edwardstafford.com/2008/07/10/zone-alarm-plus-microsoft-update-prevents-internet-access/</link>
		<comments>http://www.edwardstafford.com/2008/07/10/zone-alarm-plus-microsoft-update-prevents-internet-access/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 02:24:08 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/?p=34</guid>
		<description><![CDATA[I received a number of call from friends, family, and clients complaining that they were unable to access the internet on Wednesday July 9th. The first one had me puzzled. Running through the typical troubleshooting process. and finally disabeling the Zone Alarm Firewall which resolved the access issues. Then the next call came in with [...]]]></description>
			<content:encoded><![CDATA[<p>I received a number of call from friends, family, and clients complaining that they were unable to access the internet on Wednesday July 9th. The first one had me puzzled. Running through the typical troubleshooting process. and finally disabeling the Zone Alarm Firewall which resolved the access issues. Then the next call came in with the same issue, Then another..etc. The common factor for all these systems were that each system was was running windows XP SP2 and Zone Alarm. So What was it about Zone Alarm that all of a sudden prevented access to the internet?</p>
<p><strong>The Problem</strong></p>
<p>After a bit of poking, proding and searching, I came across the cause to this problem. Microsoft released a few security patches on Tuesday. One of these patches  (<a href="http://support.microsoft.com/kb/951748" target="_blank">KB951748</a>) was released to address a DNS flaw that could lead to <a href="http://en.wikipedia.org/wiki/DNS_cache_poisoning" target="_blank">DNS cache poisoning</a><span id="intellitxt">. </span>Unfortunately, the hotfix conflicts with Zone Alarm and prevents internet access. Systems that were setup to automatically download and install Windows Updates received this patch.</p>
<p>What I can&#8217;t believe is that I&#8217;ve seen and heard &#8220;Professional&#8221; support people actually suggest the fix is to uninstall the firewall. Seriously? Are you Kidding? That is not a solution!</p>
<p>Other suggestions were touninstall the hotfix. Although this would work, you might still be open to the DNS flaw and at risk. Another was to turn the firewall settings to Medium protection. Not as bad as removing the firewall, but still not really an option.</p>
<p><strong>So how does one overcome this annoying issue?</strong></p>
<p>Zone Labs recommended solution is to download and install a new version of Zone Alarm released to resolve this little issue.</p>
<div style="padding-left: 10px;">
<li><a href="http://download.zonealarm.com/bin/free/1043_zl/zaSuiteSetup_70_483_000_en.exe">ZoneAlarm Internet Security Suite</a></li>
<li><a href="http://download.zonealarm.com/bin/free/1043_zl/zapSetup_70_483_000_en.exe">ZoneAlarm Pro</a></li>
<li><a href="http://download.zonealarm.com/bin/free/1043_zl/zaAvSetup_70_483_000_en.exe">ZoneAlarm Antivirus</a></li>
<li><a href="http://download.zonealarm.com/bin/free/1043_zl/zaasSetup_70_483_000_en.exe">ZoneAlarm Anti-Spyware</a></li>
<li><a href="http://download.zonealarm.com/bin/free/1025_zl/zlsSetup_70_483_000_en.exe">ZoneAlarm Basic Firewall</a></li>
</div>
<p>Other less desirable and <strong>temporary </strong>options are:</p>
<p>Uninstall The offending Microsoft HotFix</p>
<ol type="1">
<li>Click the &#8220;Start Menu&#8221;</li>
<li>Click &#8220;Control Panel&#8221;, or click &#8220;Settings&#8221; then &#8220;Control Panel&#8221;</li>
<li>Click on &#8220;Add or Remove Programs&#8221;</li>
<li>On the top of the add/remove programs dialog box, you should see a checkbox that says &#8220;show updates&#8221;. Select this checkbox</li>
<li>Scroll down until you see &#8220;Security update for Windows (KB951748)&#8221;</li>
<li>Click &#8220;Remove&#8221; to uninstall the hotfix</li>
</ol>
<p>Set Zone Alarms protection to Medium</p>
<ol type="1">
<li>Navigate to the &#8220;ZoneAlarm Firewall&#8221; panel</li>
<li>Click on the &#8220;Firewall&#8221; tab</li>
<li>Move the &#8220;Internet Zone&#8221; slider to medium</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/07/10/zone-alarm-plus-microsoft-update-prevents-internet-access/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Good People Rock!</title>
		<link>http://www.edwardstafford.com/2008/04/02/good-people-day-08/</link>
		<comments>http://www.edwardstafford.com/2008/04/02/good-people-day-08/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 01:55:34 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Social Media and Networking]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/2008/04/02/good-people-day-08/</guid>
		<description><![CDATA[On April 2nd, Gary Vaynerchuk (blog-twitter) was hit with a double dose of motivation, posting not one, but 2 videos. His first was a Big Giant Internet Wide Global THANK YOU!! which got him thinking about doing the right thing and helping others and just being a good person. In his own words, &#8220;We need [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm1.static.flickr.com/70/176034043_d0fed3e6a3_m.jpg" title="Life is good" style="padding: 0px 10px 10px 0px; float: left" alt="Life is good" height="140" width="240" />On April 2nd, Gary Vaynerchuk (<a href="http://garyvaynerchuk.com/" target="_blank">blog</a>-<a href="http://twitter.com/garyvee" target="_blank">twitter</a>) was hit with a double dose of motivation, posting not <a href="http://garyvaynerchuk.com/2008/04/02/a-simple-message-to-you/" target="_blank">one</a>, but <a href="http://garyvaynerchuk.com/2008/04/02/april-3rd-2008-is-good-people-day-pass-it-on/" target="_blank">2 videos</a>. His first was a Big Giant Internet Wide Global THANK YOU!! which got him thinking about doing the right thing and helping others and just being a good person. In his own words, &#8220;We need this message of doing good and helping others&#8221;. A lot of the conversations surrounding Social Media,  the internet and life in general are about how to exploit it and turn a profit, Gossip, and conroversy. Does any of that really matter? Well, enough already! Gary has made an official call to action to spend the day on <strong>4-3-2008</strong> spreading the love and talking about Good People!!</p>
<p><strong>A Few Good Men (and Women)</strong></p>
<p><strong>Do know any good people? </strong>Spread the word, talk about them, blog about them, twitter about them, tag them. Do whatever it takes to let world know that <strong>Good People DO exist</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/04/02/good-people-day-08/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML Email vs Plain Text Email.</title>
		<link>http://www.edwardstafford.com/2008/03/14/html-email-vs-plain-text-email/</link>
		<comments>http://www.edwardstafford.com/2008/03/14/html-email-vs-plain-text-email/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 20:44:06 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/2008/03/14/html-email-vs-plain-text-email/</guid>
		<description><![CDATA[I was recently asked &#8220;why only allow plain text email formats for not only reading messages received, but also for our bulk outbound messages&#8221;. Apparently, some of the natives have grown restless and want to include large bold colorful type and pictures and bells and whistles with their messages. Whats the problem with that? Well, [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently asked &#8220;why only allow plain text email formats for not only reading messages received, but also for our bulk outbound messages&#8221;. Apparently, some of the natives have grown restless and want to include large bold colorful type and pictures and bells and whistles with their messages. Whats the problem with that? Well, there are several.</p>
<p>I&#8217;m pretty sure that most people (I&#8217;m talking average people here) don&#8217;t know what HTML even means, never mind how to properly write and test it. HTML is the mark up language used for writing web pages, not email messages. It has a specific form, syntax, structure, and should conform to current standards. If not written correctly, you will experience problems of one sort or another. Then there is the problem of writing for different displays, engines, platforms etc. Each of these also introduces their own set of quirks, hacks and workarounds.</p>
<p>HTML email also has a history of security related vulnerabilities and issues, for example:</p>
<ul>
<li>embeded content</li>
<li>scripts</li>
<li>the ability to include links whose text is different from it&#8217;s target</li>
<li>tracking and beacons</li>
</ul>
<p>It&#8217;s no secret that Microsoft has released warnings on a number of seperate occasions stating that opening a specially crafted HTML email messages in their popular email software would lead to your system being compromised &#8220;just by opening the message&#8221;. That&#8217;s it, end of story. (this is not an invitation to bash microsoft)</p>
<p>HTML is also popular with SPAM and PHISING and because of that, spam filters are likely to give HTML messages a much higher SPAM score, increasing the chances of that message getting buried by a filter.</p>
<p>These are very generic samples and I could write pages on the subject but they also give an example of how inbound HTML can represent a security risk and how outbound messages are put at an increased risk of not reaching the target, or being unreadable.</p>
<p>According to RFC 2822, plain text is the default format for email and therefore is supported in all compliant readers. HTML formats however are not required to be supported. There is also an issue of non-standard support and proprietary rules  among HTML rendering engines and software, which introduces compatibility issues and broken pages or layouts or even in some cases, completely blank pages.</p>
<p><strong>Here&#8217;s my perspective. If the intention, and ultimately your business, is to get your message to your target or audience, don&#8217;t you want to know that they will be able to read it. Plain text gives you that guarantee. HTML is not as reliable.</strong></p>
<p><u><strong>So what do you think?</strong></u></p>
<ul>
<li> Do you prefer HTML email over Plain Text?</li>
<li>Does your company disable or limit inbound HTML email?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/03/14/html-email-vs-plain-text-email/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How Twitter has changed my life</title>
		<link>http://www.edwardstafford.com/2008/02/14/26/</link>
		<comments>http://www.edwardstafford.com/2008/02/14/26/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 19:11:43 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Social Media and Networking]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/2008/02/14/26/</guid>
		<description><![CDATA[Yesterday morning (Feb 13/08), I attended the Social Media Breakfast 5 (SMB5) where the focus of the event was set by a single statement: “How Twitter has changed my life — and can change yours”. The event was hosted by Bryan Person and featured presentations by: Scott Monty @scottmonty Laura Fitton @pistachio Doug Haslam @dough [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday morning (Feb 13/08), I attended the <a href="http://www.socialmediabreakfast.com/" title="Social Media Breakfast" target="_blank" id="lp0u">Social Media Breakfast</a> 5 (SMB5) where the focus of the event was set by a single statement: <strong>“How Twitter has changed my life — and can change yours”.</strong></p>
<p>The event was hosted by <a href="http://www.bryper.com/">Bryan Person</a> and featured presentations by:</p>
<p style="margin-left: 40px"><strong>Scott Monty <a href="http://twitter.com/scottmonty" title="@scottmonty" target="_blank" id="s99:">@scottmonty</a> </strong><br />
<strong>Laura Fitton <a href="http://twitter.com/pistachio" title="@pistachio" target="_blank" id="pjnb">@pistachio</a> </strong><br />
<strong>Doug Haslam <a href="http://twitter.com/dough" title="@dough" target="_blank" id="yl0r">@dough</a> </strong><br />
<strong>Jim Storer <a href="http://twitter.com/jstorer" title="@jstorer" target="_blank" id="i.yg">@jstorer</a> </strong></p>
<p><strong>You can view their presentations at: </strong><br />
<font size="1"><a href="http://topazpartners.blogspot.com/2008/02/social-media-breakfast-presentaions-how.html" title="http://topazpartners.blogspot.com/2008/02/social-media-breakfast-presentaions-how.html" id="lsto">http://topazpartners.blogspot.com/2008/02/social-media-breakfast-presentaions-how.html</a> </font><br />
<strong><br />
</strong>Each speaker was allowed 5 minutes to present his/her story and experience, describing how twitter has changed their life and each presented some really great thoughts. It was very interesting to see how they each made twitter work for them.</p>
<p>In keeping with that theme, I figured I could write a quick post to share my experience with twitter, and how it has changed my life with more of a personal twist. <span id="more-26"></span>Let me begin by sharing a little something about myself that you are probably not aware of. Simply put, <u>I struggle with social anxiety</u>. I do not do well in crowds or groups where I am unfamiliar with others or in a setting/environment that I am not familiar with.</p>
<p><strong>Now back to the point:<br />
</strong></p>
<p>Since I&#8217;ve started <a href="http://twitter.com/pixel8r" title="using twitter regularly" target="_blank" id="xjyb">using twitter regularly</a>, it was pretty obvious how useful and valuable it was. Twitter has provided a way to make connections with other people who shared similar interests and ideas. I also found twitter users that, even though I have not made a two-way connection, I choose to &#8220;follow&#8221; for the ideas and bits of info and knowledge they share &#8211; the ability to virtually &#8220;pick their brains&#8221;. For me, this is significant because in the &#8220;real&#8221; world, it is difficult for me to engage others whom I am not already familiar with. Unfortunately, this has given people the impression that I am anti-social, snobbish, and even intimidating (huh?) which couldn&#8217;t be further from the truth.</p>
<p><a href="http://www.mzinga.com/default.asp?"></a><strong><br />
</strong> <strong>So, how has twitter changed my life?<br />
</strong>Twitter has allowed me to make connections, have conversations and get to know people in a way that removes the anxiety. When an opportunity comes about to meet these people in a real world setting, I am more at ease and feel as if I already know them to some degree which helps to reduce the anxiety significantly. I still have a lot of work to do to manage anxiety, but twitter has given me a tool to ease the process and helps to break down the wall that my anxiety creates.</p>
<p>So there you have it.<br />
Has twitter changed your life? Want to leave a comment?<br />
I&#8217;d love to hear from you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2008/02/14/26/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Preparing For a Mobile PowerPlay</title>
		<link>http://www.edwardstafford.com/2007/12/05/google-preparing-for-a-mobile-powerplay/</link>
		<comments>http://www.edwardstafford.com/2007/12/05/google-preparing-for-a-mobile-powerplay/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 00:00:21 +0000</pubDate>
		<dc:creator>Ed Stafford</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.edwardstafford.com/blog/2007/12/05/google-preparing-for-a-mobile-powerplay/</guid>
		<description><![CDATA[Today I learned that Google is testing a new Free Mapping Service that will enable mobile phone users to determine their approximate location and retrieve mapping information without the use of GPS. Google continues to amaze me with their new products, ideas and innovation. The details of how this all works are still unknown to [...]]]></description>
			<content:encoded><![CDATA[<p>Today I learned that Google is testing a new Free Mapping Service that will enable mobile phone users to determine their approximate location and retrieve mapping information without the use of GPS. Google continues to amaze me with their new products, ideas and innovation.</p>
<p>The details of how this all works are still unknown to me,  but it has been speculated that that &#8220;general&#8221; location or area will be determined based on the closest receiving cell tower. Google has referred to this &#8220;general&#8221; location as &#8220;neighborhood-level information&#8221;. Sure, you won&#8217;t be able to get specific long/lat location, but (and this is my own speculation) you can get close enough to determine what shops, restaurants, events, etc (read consumables) are in the &#8220;general&#8221; area, and maybe develop an ad service suggesting locations of interest based on the users profile, habits, etc.. You know the typical song and dance.</p>
<p>Heres another hook. For all this to work, the mobile user will be required to download and install Google&#8217;s Free software on their mobile phones to use the service. Now I don&#8217;t know about you, but this is screaming &#8220;ANDROID!!!&#8221; Android is Google&#8217;s ambitious open source call to a mobile phone operating system. If your not familiar with Android, <a href="http://www.edwardstafford.com/blog/2007/11/10/does-google-have-their-eye-on-the-apple/" title="Google Android." target="_blank">see my earlier post</a>.</p>
<p>Finally, take into account Google&#8217;s <a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/11/30/AR2007113000678.html?nav=rss_technology" title="Google Wireless bid" target="_blank">announcement</a> to bid on on wireless spectrum in the 700MHz band in late January when the U.S. Federal Communications Commission begins auctioning that resource, and things start to add up.  This isin&#8217;t much of a surprise because Google had dropped some nuggets of information in the recent past showing some interest in this, but it was always unclear as to why.</p>
<p>Heres my take. Google has the collective resources to feel the winds of change surrounding their core internet based services. Users are not tied to their computers anymore. We are sharing information and data, collaborating across devices and platforms, making phone calls from our computers and browsing the web on our phones. Google sees the opportunity here and wants a piece &#8211; The First Piece. Traditional service providers are scrambling to change their business models to adapt to the open exchange and this is where Google has the advantage and always has. Google has developed some strong strategic alliances on the internet and mobile playing fields, and now they (Google) are putting all the pieces together. Don&#8217;t get me wrong. It won&#8217;t be easy, and there is a long road ahead for them, and many who would love to see them stumble. Either way, Google is about to shake things up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.edwardstafford.com/2007/12/05/google-preparing-for-a-mobile-powerplay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
