<?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>Patrick Tulskie &#187; javascript</title>
	<atom:link href="http://www.patricktulskie.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.patricktulskie.com</link>
	<description>Building a Better Internet</description>
	<lastBuildDate>Wed, 16 Jun 2010 19:12:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Lessons from Twitter: Displaying Content from other Sites on your Own</title>
		<link>http://www.patricktulskie.com/2008/07/lessons-from-twitter-displaying-content-from-other-sites-on-your-own/</link>
		<comments>http://www.patricktulskie.com/2008/07/lessons-from-twitter-displaying-content-from-other-sites-on-your-own/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 15:10:49 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[status]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=11</guid>
		<description><![CDATA[I decided to start writing a little series of articles based on the lessons I&#8217;ve learned in writing code the uses twitter, using twitter itself, and just generally getting the most out of it.  This is the first one, and maybe there will be more depending on how I like it.
The Problem &#8211; Why You [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to start writing a little series of articles based on the lessons I&#8217;ve learned in writing code the uses twitter, using twitter itself, and just generally getting the most out of it.  This is the first one, and maybe there will be more depending on how I like it.</p>
<p><strong>The Problem &#8211; Why You Should Care</strong></p>
<p>Other sites that you pull content from are not always going to be reliable.  They could be down, running slow, or some other possible problem.  If you are using something like twitter to display your status on your site but you have a lot of other content you want people to see then it would be wise to use client-side scripting to get the content.  You might be saying in your head &#8220;Oh but I have this sweet PHP script that does that for me.&#8221; but you should tell that voice in your head to shut up and just listen.</p>
<p><span id="more-11"></span></p>
<p><strong>The Solution&#8230;</strong></p>
<p>When you use server-side scripting then the server that is dishing out your website needs to go to the other (possibly) slow website.  If it&#8217;s waiting for this content then your user is waiting for your site to finish being generated server side and then sent to their browser.  This was a problem when twitter was doing its thing with the &#8220;fail whale&#8221; on a regular basis and was generally taking forever to display tweets.  This in turn was making my site very slow.  Realizing the problem, I took out the PHP widget that I had and replaced it with my own little creation that utilizes javascript and a tiny bit of PHP.</p>
<p><strong>Let&#8217;s take a look at how to do that&#8230;</strong></p>
<p>First thing you&#8217;re going to want to do is make a little div with some static text in it that gets killed when your stuff finishes loading.  You can make it kinda like this:</p>
<blockquote><p>&lt;div id=&#8221;twit_text&#8221;&gt;<br />
&lt;ul id=&#8221;twitter_update_list&#8221;&gt;&lt;li&gt;Waiting for Twitter.com to reply.  Please hold.&lt;/li&gt;&lt;/ul&gt;<br />
&lt;/div&gt;</p></blockquote>
<p>The ul in there will be replaced by the script which actually sits right on twitter&#8217;s servers.  This is pretty simple and basic stuff.  It is advisable to put some static content in there so that users know that something else is going to happen and you don&#8217;t have a blank spot on the page.  There is one other piece of magic that actually uses a little bit of PHP but not for the same purpose the other scripts use it for&#8230;</p>
<blockquote><p>&lt;?<br />
$currURL = currPageURL();</p>
<p>if (($currURL == &#8220;http://www.patricktulskie.com/&#8221;) || ($currURL == &#8220;http://patricktulskie.com/&#8221;))<br />
{<br />
echo &#8220;&lt;script type=\&#8221;text/javascript\&#8221; src=\&#8221;http://twitter.com/javascripts/blogger.js\&#8221;&gt;&lt;/script&gt;&#8221;;<br />
echo &#8220;&lt;script type=\&#8221;text/javascript\&#8221; src=\&#8221;http://twitter.com/statuses/user_timeline/PatrickTulskie.json?callback=twitterCallback2&amp;count=1\&#8221;&gt;&lt;/script&gt;&#8221;;<br />
}<br />
?&gt;</p></blockquote>
<p>This goes in the footer of the page to only load the javascript if the page you&#8217;re looking at is the index page.  You can modify the PHP to load on different pages but for my purposes I only want you to see the status on the index.  You can&#8217;t easily do this with a plugin because plugins are loaded entirely as the page loads.  The PHP above is in the very footer of the page and it only kicks off the javascript IF we&#8217;re on the index of the site AND after everything else on the page has already loaded.</p>
<p><strong>One Other Thing&#8230;</strong></p>
<p>I use this function to get the URL of the page.  You can put it in your wordpress theme&#8217;s functions or you can put it wherever you need it on your site.  It&#8217;s fairly reusable too.</p>
<blockquote><p>function currPageURL()<br />
{<br />
$pageURL = &#8216;http&#8217;;<br />
if ($_SERVER["HTTPS"] == &#8220;on&#8221;) {$pageURL .= &#8220;s&#8221;;}<br />
$pageURL .= &#8220;://&#8221;;<br />
if ($_SERVER["SERVER_PORT"] != &#8220;80&#8243;)<br />
{<br />
$pageURL .= $_SERVER["SERVER_NAME"].&#8221;:&#8221;.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];<br />
}<br />
else<br />
{<br />
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];<br />
}<br />
return $pageURL;<br />
}</p></blockquote>
<p><strong>I Hate Twitter</strong></p>
<p>Well thats fine.  I&#8217;m sure it doesn&#8217;t like you much either.  Regardless, this is a really basic usability concept that many people don&#8217;t seem to grasp or even think about when creating a website.  Say you want to pull news feeds from a Digg category using an RSS parser on your page.  You have other stuff on the page but this Digg box is in your sidebar.  If you don&#8217;t think about where the script is going to execute in relation to your page loading, then you&#8217;re going to have problems when Digg is running slow or is down.  For those of you who don&#8217;t want to get into a full blown ajax setup, or simply don&#8217;t know how to then this is a great work around that uses really minimal coding.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/07/lessons-from-twitter-displaying-content-from-other-sites-on-your-own/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GreaseMonkey for Newbs</title>
		<link>http://www.patricktulskie.com/2008/06/greasemonkey-for-newbs/</link>
		<comments>http://www.patricktulskie.com/2008/06/greasemonkey-for-newbs/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 05:22:52 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=8</guid>
		<description><![CDATA[I won&#8217;t sit here and proclaim myself to be some god of Grease Monkey but I do know a thing or two about Java Script.  Basically, for those of you who are clueless as to what Grease Monkey is, it&#8217;s a plugin for Firefox that allows you to manipulate certain pages you visit using Java [...]]]></description>
			<content:encoded><![CDATA[<p>I won&#8217;t sit here and proclaim myself to be some god of Grease Monkey but I do know a thing or two about Java Script.  Basically, for those of you who are clueless as to what Grease Monkey is, it&#8217;s a plugin for Firefox that allows you to manipulate certain pages you visit using Java Script.  Now that we know what it is and have tons of ideas flowing through our heads, let&#8217;s just do something kinda cool.</p>
<p>Today we&#8217;re going to beat up on certain gallery pages that use images of the format &#8220;imageName.sized.jpg&#8221;.  What I mean by this is &#8211; we&#8217;re going to take the page (which is usually filled with junk) and replace everything with just the full size image and the caption.</p>
<p>Let&#8217;s get some assumptions out of the way:<br />
You know SOME Java Script, the site you&#8217;re visiting also has the non-sized images in the same directory as the sized images, and you don&#8217;t care what else is on the web page.  We&#8217;re also assuming there is only one caption with no &#8220;id&#8221; and we only have a style class to work with.</p>
<p>Ok?  Ok.  Let&#8217;s go.</p>
<p><span id="more-8"></span></p>
<p>Once you&#8217;ve installed GreaseMonkey, set it up, and got it going then you&#8217;ll want to make a new user script.  The namespace isn&#8217;t terribly important right now so just make it the URL for your website or something like that and continue on.  Once you&#8217;ve specified your edittor of choice, it will open up and you&#8217;ll basically have a blank canvas to work with.  The code you enter here will be run when the page is completed.  First thing we&#8217;re going to do is get the caption with this code:</p>
<blockquote><p>function getCaption()<br />
{<br />
var all = document.all ? document.all :<br />
document.getElementsByTagName(&#8217;p');<br />
var theCaption;<br />
for (var e = 0; e &lt; all.length; e++)<br />
{<br />
if (all[e].className == &#8220;pcaption&#8221;)<br />
{<br />
theCaption = all[e];<br />
}<br />
}<br />
return theCaption;<br />
}</p></blockquote>
<p>What we&#8217;re doing there is grabbing all of the elements of the document that are paragraphs (p tags) and then looping through until we find that &#8220;pcaption&#8221; class.  You might need to look at the gallery you&#8217;re visiting to get the exact names but that&#8217;s the basic gist of it.  Now let&#8217;s grab the image and replace the page with it and our caption:</p>
<blockquote><p>var theImage, unSizedImage, unSizedPath;<br />
theImage = document.getElementById(&#8217;galleryImage&#8217;);<br />
theCaption = getCaption();</p>
<p>if (theImage)<br />
{<br />
unSizedPath = theImage.src.replace(/.sized/,&#8221;");<br />
unSizedImage = document.createElement(&#8217;img&#8217;);<br />
unSizedImage.src = unSizedPath;<br />
document.body.innerHTML = &#8220;&lt;center&gt;&#8221; + theCaption.innerHTML + &#8220;&lt;br /&gt;&lt;img src=\&#8221;" + unSizedImage.src + &#8220;\&#8221; /&gt;&lt;/center&gt;&#8221;;<br />
}</p></blockquote>
<p>First we just create some variables and get our caption from before.  Once we have that all setup we say if you find an image with the id of &#8220;galleryImage&#8221; then we&#8217;re gonna do some work.   We grab the src for the image, strip out the .sized portion, and then assign that source to a new blank set of image tags.  Lastly we take the body&#8217;s innerHTML and assign it our caption&#8217;s innerHTML and our newly grabbed image.</p>
<p>In this little exercise we learned how to totally modify the contents of a page with a new image from &#8220;somewhere else.&#8221;  We also learned how to get a set of tags using the class for instances where we don&#8217;t have an id.  We also did some very basic string replacing and innerHTML utilization and manipulation.  Pretty cool huh?</p>
<p>Now you can toy with it anyway you want.  There&#8217;s a lot of fun stuff in there.  For more Grease Monkey tutorials and guides you can visit http://diveintogreasemonkey.org/  Have something you&#8217;re looking to accomplish?  Well, just comment to this post with a suggestion.</p>
<p>Note: Wordpress is really awesome at stripping out whitespace from stuff.  Sorry about the poor code formatting as a result.  I will be looking into a better way to display this stuff so it doesn&#8217;t happen in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/06/greasemonkey-for-newbs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Readability of the Blog</title>
		<link>http://www.patricktulskie.com/2008/06/readability-of-the-blog/</link>
		<comments>http://www.patricktulskie.com/2008/06/readability-of-the-blog/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 14:55:27 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Blog News]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[readability]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=7</guid>
		<description><![CDATA[Dawned on me the other day that this blog was kind of a pain in the eyes to read.  That&#8217;s what I get for not taking the time to make my own theme for Wordpress.
What I did was I made most of the fonts on the page black, but this had some negative affects in [...]]]></description>
			<content:encoded><![CDATA[<p>Dawned on me the other day that this blog was kind of a pain in the eyes to read.  That&#8217;s what I get for not taking the time to make my own theme for Wordpress.</p>
<p>What I did was I made most of the fonts on the page black, but this had some negative affects in terms of not being able to read the text on some of the black spots on the page.  I&#8217;m working on it, I know.  Just want to let everyone know I&#8217;m aware.</p>
<p>One of the other things that was pretty annoying was the slow page load time when my twitter status is loading.  I handled that with some PHP to verify the URL of the page you&#8217;re looking at and I also moved the javascript to the very bottom of the site before the end of the body tag.  This makes sure that only pages where the twitter status is shown will actually load the javascript AND it also makes sure that the rest of the page loads in a timely manner so you don&#8217;t need to wait around for my status if you want to read something else.</p>
<p>Just some usability metrics that I had to handle and I thought I&#8217;d mention them.  I&#8217;ll be doing another article on the PHP used to handle the twitter status probably later on this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/06/readability-of-the-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
